給站點加上https支持

本文引用自

http://blog.linjunhalida.com/blog/using-https-for-rails/

https是針對http的加密協議,它可以保證用戶訪問網站的過程中,通訊的數據是加密的,這樣可以防止第三方監聽,保護用戶隱私。這裏總結一下如何給Rails加上https的支持。

首先,假設你的rails已經跑起來了,在http://yourserver.com,服務器是ubuntu,本地的訪問方式是127.0.0.1:8787,那麼你需要利用nginx來提供https的服務。

首先安裝nginxopenssl

sudo apt-get install nginx openssl

生成服務器的祕鑰公鑰:

openssl req -new -nodes -keyout server.key -out server.csr
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

生成的幾個文件解釋:

  • server.key 服務器的私鑰。
  • server.csr (certificate signing request) https證書籤名請求。
  • server.crt 生成的服務器證書。

然後有這些文件,我們可以配置nginx服務了。

生成nginx的配置文件:

sudo touch /etc/nginx/sites-available/yourserver
sudo ln -s /etc/nginx/sites-available/yourserver /etc/nginx/sites-enabled
sudo vi /etc/nginx/sites-available/yourserver

裏面的內容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
upstream unicorn {
  server 127.0.0.1:8787 fail_timeout=0;
}
server {
  listen       443;
  server_name  yourserver.com;
    
  ssl                  on;
  ssl_certificate      yourpath/server.crt;
  ssl_certificate_key  yourpath/server.key;
    
  ssl_session_timeout  5m;
    
  ssl_protocols  SSLv2 SSLv3 TLSv1;
  ssl_ciphers  HIGH:!aNULL:!MD5;
  ssl_prefer_server_ciphers   on;
    
  location / {
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto https;
      proxy_redirect off;
      proxy_pass http://localserver;
  }
}

需要修改裏面的server_name,yourpath

然後重新啓動nginx:

sudo service nginx restart

如果沒有報錯,那麼你就可以通過https://yourserver.com來訪問你的網站了。

不過,瀏覽器會阻止你繼續訪問,或者需要你的確認。 瀏覽器會保存一份可信網站的列表,你的服務器加密是自己生成的,不在裏面。 如果你的網站是商用的,最好去註冊一下。這裏有一個指引。

引用資料:

 Mar 24th, 2013  rails



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章