SSL(Secure Sockets Layer 安全套接層),及其繼任者傳輸層安全(Transport Layer Security,TLS)是為網絡通信提供安全及數據完整性的一種安全協議。TLS與SSL在傳輸層對網絡連接進行加密。
HTTPS(Secure Hypertext Transfer Protocol)安全超文本傳輸協議,HTTPS應用了Netscape的完全套接字層(SSL)作為HTTP應用層的子層。(HTTPS使用端口443,而不是象HTTP那樣使用端口80來和TCP/IP進行通信。)
建個網站不容易,各種都要收費,那麼有免費的當然就更好了!免費的SSL證書:StartSSL來了!
1.進入StartSSL官網,點擊左上角Sign-up For Free(這個很容易找,就不截圖了^_^)。按要求填寫注冊信息,First, Last Name這一欄填寫自己的中文名字的拼音,地址精確到房間號或者街道號(要不然客服發來郵件會索要地址的)。
2.注冊成功後,StartSSL會發送一個鏈接給你,還有驗證碼。因為StartSSL使用證書驗證的,所以,要把驗證證書好好保管好,丟了就沒法登陸了。
3.進入Control Panel之後,點擊Validations Wizard,域名驗證Domain Name Validation,填入你需要添加SSL的域名,還有你的個人郵箱(會給你發封郵件,裡面有驗證碼,注意接收)。
4.驗證完域名後,點擊Certificates Wizard–Web Server SSL/TLS Certificate。
生成私鑰(Generate Private Key)
如果你已經在VPS上生成了私鑰,這一步可以跳過,沒有的話,可以在這裡生成,填入私鑰的密碼,將文本框中的內容復制,保存為ssl.key。
生成證書
選擇你需要綁定的二級域名,比如www.tinyxd.me,Tool Box–Retrieve Certificate,同樣將文本框中的內容復制另存為ssl.crt。
登錄VPS,生成服務器密鑰/證書
生成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
修改nginx配置文件
將server.key和server.crt放到/usr/local/nginx/certs/目錄下,修改/usr/local/nginx/conf/vhost/對應域名虛擬機的配置文件,添加如下內容:
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 /usr/local/nginx/certs/server.crt;
ssl_certificate_key /usr/local/nginx/certs/server.key;
}
上面腳本的rewrite ^(.*) https://$server_name$1 permanent;如果不填加的話,你的網站將可以進行http和https的兩種訪問。
最後重啟Nginx,/usr/local/nginx restart 。訪問你的網站,看是不是支持https訪問了!