現(xiàn)在很多網(wǎng)站都會使用SSL證書對網(wǎng)站數(shù)據(jù)進(jìn)行傳輸加密,尤其是銀行、金融、電商類的網(wǎng)站。但很多人對于https的理解都存在不少誤區(qū),比如https會讓網(wǎng)站訪問速度變慢、消耗服務(wù)器資源、增加網(wǎng)站成本等等。之所以會實(shí)現(xiàn)https加密保護(hù),主要是因?yàn)樵摼W(wǎng)站使用了SSL證書。
配置ssl證書之前,先準(zhǔn)備SSL證書,獲取途徑有很多。有免費(fèi)的,也有付費(fèi)的。本人直接在阿里云申請的免費(fèi)證書,審核時間很快,1小時內(nèi)通過。
下面為詳細(xì)步驟:
登錄阿里云,找到SLL證書:
打開頁面后選擇購買證書
選擇免費(fèi)型
購買成功后? ? 進(jìn)入控制臺,可以看到剛才購買的證書列表,然后選擇申請
?免費(fèi)的證書只能綁定一個域名,所以在申請的時候填好自己的域名就行了。
等審核通過后,選擇下載,根據(jù)自己的實(shí)際情況選擇相應(yīng)的類型,本人的是nginx,所以就下載了nginx類型的證書
準(zhǔn)備好證書后,找到nginx的安裝目錄,我的安裝位置為:/usr/local/nginx?
進(jìn)入 config/nginx.conf?
命令:vim nginx.conf
開始配置文件的修改?
在修改配置文件之前,最好做一個備份,防止修改錯誤,也能及時回退錯誤
找到第一個監(jiān)聽80端口的server:以下是我修改好的server
? ? server {
? ? ? ? listen? ? ? ?80;
? ? ? ? server_name? 需要訪問的域名;
? ? ? ? rewrite ^(.*) https://$server_name$1 permanent; #這句是代表 把http的域名請求轉(zhuǎn)成https
? ? ? ? #charset koi8-r;
? ? ? ? #access_log? logs/host.access.log? main;
? ? ? ? location / {
? ? ? ? ? ? root? ?html;
? ? ? ? ? ? index? index.html index.htm;
? ? ? ? ? ? proxy_pass? ?http://需要訪問的域名; #因?yàn)檫@里還是80端口,所以保持http就可以了
? ? ? ? }
? ? }
在實(shí)際的配置文件中,最好把我上面的備注刪除
第一個server修改好了之后。那么就需要開始配置第二個server。拉到文件的底部。看到有一個https類型的server。而且已經(jīng)全部被注釋封上了,這是我們需要改的第二個server,如圖:?
這里除了HTTPS server這行之外,其他的 # 刪除,啟動https模塊
? ? # HTTPS server
? ? #
? ? server {
? ? ? ? listen? ? ? ?443 ssl;
? ? ? ? server_name? 需要訪問的域名,這里也不用加https;
? ? ? ? ssl on;
? ? ? ? ssl_certificate? ? ? /usr/local/ssl/app/app.pem;? #這里是ssl key文件存放的絕對路徑,根據(jù)自己的文件名稱和路徑來寫
? ? ? ? ssl_certificate_key? /usr/local/ssl/app/app.key;? #這里是ssl key文件存放的絕對路徑,根據(jù)自己的文件名稱和路徑來寫
? ? ? ? ssl_session_cache? ? shared:SSL:1m;
? ? ? ? ssl_session_timeout? 5m;
? ? ? ? ssl_ciphers? HIGH:!aNULL:!MD5;
? ? ? ? ssl_prefer_server_ciphers? on;
? ? ? ? location / {
? ? ? ? ? ? proxy_pass? ?http://需要訪問的域名;
? ? ? ? }
? ? }
配置好后,nginx的配置就算是完成了。不過這只是配置ssl證書的第一步!
接下來就是要讓配置文件生效:
進(jìn)去nginx的sbin文件夾,我的sbin文件夾在:/usr/local/nginx/sbin
執(zhí)行以下語句:檢驗(yàn)配置文件是否有錯誤
./nginx -t
如果nginx曾經(jīng)安裝過SSL模塊,那么應(yīng)該會顯示以下界面:(如果已經(jīng)顯示配置成功,那么可以跳過這一步,直接重啟nginx就可以了)?
可是大多數(shù)第一次安裝https證書,都會報錯,說缺少SSL模塊,如下:
這時候我們就可以先安裝SSL模塊:?
先確認(rèn)2個位置:?
1)我的nginx是安裝在了/usr/local/nginx/下?
2)我的nginx的源碼包放在了/usr/local/nginx/nginx/nginx-1.8.0下。如果沒有的話,重新下載你對應(yīng)的nginx版本的源碼包,找個目錄解壓
目錄切換到我們的源碼包安裝位置:
cd /usr/local/nginx/nginx/nginx-1.8.0
執(zhí)行語句,重新安裝ssl模塊:
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
了。配置成功后,那么就需要編譯我們的配置。(注意這里只能用make 而不要用make install,因?yàn)閳?zhí)行make install是覆蓋安裝的意思)?
運(yùn)行:
make
等待執(zhí)行完成后,我們需要把新編譯的nginx模塊替換原來的nginx。
還是老規(guī)矩,先備份舊的nginx,執(zhí)行語句(這里面復(fù)制的文件的路徑需要根據(jù)你們安裝的目錄自行修改,如果和我安裝的路徑是一樣的那么可以直接運(yùn)行該語句):
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
關(guān)閉nginx(因?yàn)橐研碌哪K覆蓋舊的nginx)
先找到nginx端口號,如圖,目前我nginx的進(jìn)程號為:13542
ps -ef|grep nginx
殺死該進(jìn)程就可以了,執(zhí)行語句:
kill -QUIT 13542
關(guān)閉nginx進(jìn)程后就可以開始替換了(注意:我當(dāng)前的位置是在我nginx的源碼包中,目錄不要搞錯了)?
執(zhí)行:(復(fù)制到我的nginx的目錄中)
cp ./objs/nginx /usr/local/nginx/sbin/
然后就是啟動nginx。在啟動之前,也可以在測試一次配置文件是否已經(jīng)生效:
#先切換到sbin目錄
cd /usr/local/nginx/sbin/
#檢測nginx的配置文件是否有錯誤
./niginx -t
看到這樣的,就是已經(jīng)成功了?
最后啟動nginx:
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
因?yàn)閯偛盘鎿Qnginx模塊的時候是把nginx進(jìn)程都?xì)⑺懒?,所以要用上面的命令進(jìn)行啟動,而不能使用reload重啟。
nginx正常啟動后,我們在訪問我們的網(wǎng)站,發(fā)現(xiàn)https就已經(jīng)配置好了
有什么不明白的可以留言,我看到后會一一回復(fù)。感謝大家支持!
我的公眾號,歡迎大家關(guān)注哦!
