使用https加密協(xié)議的同學(xué)最好先學(xué)習(xí)下有關(guān)SSL的知識(shí)。給個(gè)鏈接:SSL證書,。有基礎(chǔ)的同學(xué)繼續(xù)向下看,,現(xiàn)在的服務(wù)器絕大部分使用的是apache或者nginx做前臺(tái)響應(yīng),我使用的wdcp采用的是nginx,,所以這篇文章講的也就是nginx的https加密方法,。
一、注冊(cè)申請(qǐng)到免費(fèi)的SSL證書
這部分有現(xiàn)成的教程,,先在http://www.startssl.com官網(wǎng)上注冊(cè)并申請(qǐng)到免費(fèi)的SSL認(rèn)證,,甩個(gè)鏈接:StartSSL免費(fèi)SSL證書成功申請(qǐng)。
按照教程完成下來(lái)你會(huì)得到3個(gè)文件,,分別是mengdodo.key mengdodo.crt mengdodo.pfx (KEY為私鑰,,crt為公鑰,pfx為包含了公鑰和私鑰的二進(jìn)制格式的證書,,用于SSL證書發(fā)布網(wǎng)站的登錄允許,。)
二、在Nginx服務(wù)器配置證書
首先把公鑰和私鑰放置到服務(wù)器,,位置是自己定義的,,打個(gè)比方存放在根目錄的root文件夾下。進(jìn)入wdcp的nginx的配置文件/www/wdlinux/nginx/conf/vhost/mengdodo.conf(此處講解下,,nginx的配置文件應(yīng)該是在/nginx/conf/nginx.conf,,修改也是修改nginx.conf。但是wdcp是多域名的虛擬主機(jī)管理系統(tǒng),,在內(nèi)容分發(fā)上要管理多個(gè)站點(diǎn),,所以nginx.conf文件最下面引用了一句話,意思是不同的域名需要在vhost文件夾下使用單獨(dú)的配置文件,。)
參照下面的圖添加如下行:
listen 80; listen 443 ssl; ssl_certificate /root/mengdodo.crt; ssl_certificate_key /root/mengdodo.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #SSLv2不安全,TLS1.0在遭受到降級(jí)攻擊時(shí),,會(huì)允許攻擊者強(qiáng)制連接使用SSLv3,所以禁用SSLv3 ssl_ciphers AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL; #加密套件 ssl_prefer_server_ciphers on; #在一個(gè) SSLv3 或 TLSv1 握手過(guò)程中選擇一個(gè)加密算法時(shí),,一般使用客戶端的首選算法。如果設(shè)置了如下兩行配置,,則會(huì)替代地使用服務(wù)器端的首選算法,。 ssl_session_cache shared:SSL:10m; ssl_session_timeout 5m; #具體nginx的SSL安全性信息查看:http://www.tuicool.com/articles/IvAVnqA
注意,如果百度來(lái)的做法是下面這樣的為錯(cuò)誤的,,具體參考nginx官網(wǎng)關(guān)于80端口和443端口同時(shí)存在的說(shuō)明:nginx的80和443端口同時(shí)存在 ,。
listen 443;
ssl on;
ssl_certificate /root/freehao123.crt;
ssl_certificate_key /root/freehao123.key;
ssl_session_timeout 5m;
配置完全后重啟nginx,指令如下:
service nginxd reload
此處會(huì)提示要求輸入密鑰的密碼用以關(guān)閉和啟動(dòng),Enter PEM pass phrase:密碼
這種情況可能是在設(shè)置私鑰key時(shí)將密碼設(shè)置寫入了key文件,配置好的Nginx每次啟動(dòng)都要輸兩遍PEM pass phrase,,很是不爽,,尤其是在服務(wù)器重啟后,Nginx壓根就無(wú)法自動(dòng)啟動(dòng),,必須手動(dòng)啟動(dòng)并輸入那麻煩的PEM pass phrase,。如何避免Nginx啟動(dòng)出現(xiàn)Enter PEM pass phrase呢?
這種情況可能是在設(shè)置私鑰key時(shí)將密碼設(shè)置寫入了key文件,,導(dǎo)致Nginx/Apache等系列服務(wù)器在啟動(dòng)時(shí)要求Enter PEM pass phrase,。我們需要做的是剝離這個(gè)密碼,利用如下OpenSSL命令生成server.key.unsecure文件:
openssl rsa -in server.key -out server.key.unsecure
如果server.key.unsecure生成成功,,我們就修改Nginx配置,,比如像下面這樣:
# 這里是SSL的相關(guān)配置 server { listen 443; server_name www.example.com; # 你自己的域名 root /home/www; ssl on; ssl_certificate /etc/nginx/certs/server.crt; # 修改下面這一行指向我們生成的server.key.unsecure文件 ssl_certificate_key /etc/nginx/certs/server.key.unsecure; }
重啟完全nginx后直接訪問(wèn)https地址還是不行,哈哈,,記得進(jìn)iptables開啟443端口,,因?yàn)閔ttps默認(rèn)使用的就是443端口。
以上就是萌嘟嘟的wdcp使用https加密協(xié)議的方法,,那效果怎么樣呢,,萌嘟嘟感覺(jué)略微有些蛋疼。首先很多人提到的https會(huì)比普通http協(xié)議要更消耗系統(tǒng)資源,,反應(yīng)更慢,。萌嘟嘟在使用后并沒(méi)明顯的體驗(yàn)到,值得一提的是萌嘟嘟站點(diǎn)并不能完全的讓瀏覽器的那把鎖變成綠色,,反而是一把黃色的鎖,,主要原因還是我的站點(diǎn)有使用到百度聯(lián)盟的廣告JS,百度推廣官方并沒(méi)有適配到https協(xié)議的,,只有http形式的,,所以沒(méi)法做到完完全全的只加載本站的數(shù)據(jù)。