Nginx安裝SSL證書
原文:http://ichon.me/post/955.html
貌似提供免費SSL證書且比較靠譜的僅StartSSL一家( https://www.startssl.com/),于是別無選擇。
注冊
注冊過程很簡單,我前后只花了半個小時不到便注冊完成。只是要注意的是,由于是人工審核,注冊信息務必填寫完整,我注冊的時候信息沒填完整因此還被收到一封郵件要求重新提供注冊信息,好吧。
此外,StartSSL網站采用證書驗證,而不是傳統的用戶名/密碼驗證登錄,因此注冊成功后,驗證證書一定要妥善保管,不然要是丟失可就沒法登錄了。
驗證域名
登錄到Control Panel之后,若要給網站添加SSL證書,首先需要通過域名驗證。
點擊Validations Wizard打開驗證向導,選擇驗證類型為域名驗證Domain Name Validation,填入要驗證的域名,然后StartSSL會給該域名的管理員郵箱發一封驗證郵件,將驗證郵件中收到的驗證碼填入就完成了域名驗證的全部過程。
不過要注意的是,域名驗證的有效期是30天,如果過了有效期則需要重新驗證。
申請SSL證書
點擊Certificates Wizard打開證書向導,選擇證書用途為Web Server SSL/TLS Certificate。
生成私鑰Generate Private Key
如果之前已經在服務器上使用openssl生成了私鑰文件和證書申請文件的話,這一步就可以跳過。
但是我選擇了生成私鑰,因此需要填入私鑰的密碼,然后點擊Continue,將生成的私鑰保存為ssl.key。
生成證書
接下來按照提示,選擇剛剛認證的域名,并且還必須按要求綁定一個二級域名,沒搞明白是什么用意,就填了個ssl,這個貌似沒什么影響。
打開Tool Box,選擇Retrieve Certificate,不出意外的話,證書已經生成完畢了,只需要將其保存為ssl.crt就大功告成了!
證書的使用
現在SSL證書已經有了,接下來就是要使用它了~
若要使Nginx支持SSL,則至少需要server.key以及server.crt。
生成server.key
openssl rsa -in ssl.key -out server.key
生成server.crt
cp ssl.crt server.crt wget http://cert.startssl.com/certs/ca.pem wget http://cert.startssl.com/certs/sub.class1.server.ca.pem cat ca.pem sub.class1.server.ca.pem >> ca-certs.crt cat ca-certs.crt >> server.crt
然后將server.key以及server.crt上傳到服務器
修改Nginx配置文件,使其支持SSL
server { listen 80; server_name www.域名.com; rewrite ^(.*) https://$server_name$1 permanent; } server { listen 443; server_name www.域名.com; root /home/www; ssl on; ssl_certificate /etc/nginx/certs/server.crt; ssl_certificate_key /etc/nginx/certs/server.key; }
根據需要修改server.key以及server.crt的路徑,然后重啟Nginx即可。