讓網(wǎng)站永久擁有HTTPS-申請(qǐng)免費(fèi)SSL證書(shū)并自動(dòng)續(xù)期

原文地址:來(lái)自lucien.ink, https://blog.csdn.net/xs18952904/article/details/79262646

為什么要用HTTPS?

網(wǎng)站沒(méi)有使用HTTPS的時(shí)候,瀏覽器一般會(huì)報(bào)不安全,而且在別人訪問(wèn)這個(gè)網(wǎng)站的時(shí)候,很有可能會(huì)被運(yùn)營(yíng)商劫持,然后在網(wǎng)站里顯示一些莫名其妙的廣告。?


有HTTPS的時(shí)候,通俗地講所有的數(shù)據(jù)傳輸都會(huì)被加密,你和網(wǎng)站之間的數(shù)據(jù)交流也就更加安全。



相關(guān)簡(jiǎn)介

Let's Encrypt

??如果要啟用HTTPS,我們就需要從證書(shū)授權(quán)機(jī)構(gòu)處獲取一個(gè)證書(shū),Let's Encrypt 就是一個(gè)證書(shū)授權(quán)機(jī)構(gòu)。我們可以從 Let's Encrypt 獲得網(wǎng)站域名的免費(fèi)的證書(shū)。

Certbot

Certbot是Let's Encrypt推出的獲取證書(shū)的客戶端,可以讓我們免費(fèi)快速地獲取Let's Encrypt證書(shū)。

便宜SSL

便宜SSL是一家國(guó)內(nèi)的SSL證書(shū)提供商,同樣也擁有免費(fèi)證書(shū)。而且提供豐富的工具:?https://www.pianyissl.com/

獲取HTTPS證書(shū)

??獲取SSL證書(shū)的過(guò)程大體上都一樣。既可以圖形化,也可以命令行,最后實(shí)現(xiàn)的效果都完全一樣,大家各取所需。

命令行

安裝Certbot

進(jìn)入Certbot的官網(wǎng),選擇你所使用的軟件和系統(tǒng)環(huán)境,然后就會(huì)跳轉(zhuǎn)到對(duì)應(yīng)版本的安裝方法,以Ubuntu + Nginx為例。


sudo apt-get update

sudo apt-get install software-properties-common

sudo add-apt-repository ppa:certbot/certbot

sudo apt-get update

sudo apt-get install certbot


申請(qǐng)證書(shū)

??安裝完成后執(zhí)行:

certbot certonly --webroot -w /var/www/example -d example.com -d www.example.com

這條命令的意思是為以/var/www/example為根目錄的兩個(gè)域名example.com和www.example.com申請(qǐng)證書(shū)。

??如果你的網(wǎng)站沒(méi)有根目錄或者是你不知道你的網(wǎng)站根目錄在哪里,可以通過(guò)下面的語(yǔ)句來(lái)實(shí)現(xiàn):

certbot certonly --standalone -d example.com -d www.example.com

圖形化

進(jìn)入便宜SSL的官網(wǎng) https://www.pianyissl.com/注冊(cè)了賬號(hào)之后,選擇那個(gè)體驗(yàn)版的免費(fèi)測(cè)試,然后點(diǎn)確認(rèn)購(gòu)買(mǎi)。

輸入域名并點(diǎn)擊生成CSR并提交申請(qǐng)按鈕。

點(diǎn)擊確定按鈕。

接下來(lái)會(huì)選擇驗(yàn)證方式。

這里我選擇郵箱驗(yàn)證方式,其它另外兩種依照你的個(gè)人情況而定,反正就是為了驗(yàn)證域名是不是你的而已。

?大約過(guò)幾分鐘,郵箱會(huì)收到一封驗(yàn)證郵件,如下圖,復(fù)制②指向的一串驗(yàn)證碼,點(diǎn)擊①處的Here鏈接。


大約等到10分鐘左右,再次登陸https://www.pianyissl.com/,進(jìn)入個(gè)人中心,可以看到已經(jīng)成功申請(qǐng)SSL證書(shū),點(diǎn)擊查看詳情。


此時(shí)你可以點(diǎn)擊箭頭所指的證書(shū)打包下載,然后免費(fèi)的SSL證書(shū)就可以下載到本地了,下載后可以看到SSL壓縮包內(nèi)的文件。


部署HTTPS證書(shū)

找到網(wǎng)站的Nginx配置文件,找到listen 80;,修改為listen 443;在這一行的下面添加以下內(nèi)容:

ssl on;

ssl_certificate XXX/fullchain.pem; 修改為fullchain.pem所在的路徑?

?ssl_certificate_key XXX/privkey.pem; 修改為privkey.pem所在的路徑?

ssl_session_timeout 5m;

ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

ssl_prefer_server_ciphers on;

保存退出后,通過(guò)nginx -t來(lái)檢查配置文件是否正確,有錯(cuò)誤的話改之即可。配置文件檢測(cè)正確之后,通過(guò)nginx -s reload來(lái)重載配置文件。

然后通過(guò)訪問(wèn)https://example.com來(lái)查看是否配置成功。

如果發(fā)現(xiàn)無(wú)法訪問(wèn)或者是加載不出來(lái)的話檢查一下443端口有沒(méi)有開(kāi)啟!

設(shè)置HTTP強(qiáng)制跳轉(zhuǎn)HTTPS

上一步成功之后大家可能會(huì)發(fā)現(xiàn)通過(guò)原來(lái)的http://example.com無(wú)法訪問(wèn)網(wǎng)頁(yè)了,因?yàn)镠TTP默認(rèn)走的是80端口,我們剛才將其修改為443端口了。在這里我們可以在配置文件的最后一行加入以下代碼:

server {

? ? ? ? ? ?listen 80;

? ? ? ? ? ?server_name example.com; 這里修改為網(wǎng)站域名

? ? ? ? ? ?rewrite ^(.*)$ https://$host$1 permanent;

}

意思是每一個(gè)通過(guò)80端口訪問(wèn)的請(qǐng)求都會(huì)強(qiáng)制跳轉(zhuǎn)到443端口,這樣一來(lái)訪問(wèn)http://example.com的時(shí)候就會(huì)自動(dòng)跳轉(zhuǎn)到https://example.com了。

命令行下設(shè)置證書(shū)自動(dòng)續(xù)期

有心的小伙伴可能會(huì)留意到我們剛才申請(qǐng)的整數(shù)的有效期只有90天,不是很長(zhǎng),可是我們可以通過(guò)Linux自帶的cron來(lái)實(shí)現(xiàn)自動(dòng)續(xù)期,這樣就相當(dāng)于永久了。

隨便找一個(gè)目錄,新建一個(gè)文件,名字隨便起,在這里以example為例,在里面寫(xiě)入0 */12 * * * certbot renew --quiet --renew-hook "/etc/init.d/nginx reload",保存。

然后在控制臺(tái)里執(zhí)行crontab example一切都OK了。原理是example里存入了一個(gè)每天檢查更新兩次的命令,這個(gè)命令會(huì)自動(dòng)續(xù)期服務(wù)器里存在的來(lái)自Certbot的SSL證書(shū)。然后把example里存在的命令導(dǎo)入進(jìn)Certbot的定時(shí)程序里。

附:

其它環(huán)境下的證書(shū)部署

https://www.pianyissl.com/support/

Nginx相關(guān)命令

nginx -t 驗(yàn)證配置是否正確

nginx -v? 查看Nginx的版本號(hào)

service nginx start? 啟動(dòng)Nginx

nginx -s stop? 快速停止或關(guān)閉Nginx

nginx -s quit? 正常停止或關(guān)閉Nginx

nginx -s reload? 重新載入配置文件


crontab相關(guān)命令

cat /var/log/cron 查看crontab日志

crontab -l? 查看crontab列表

crontab -e? 編輯crontab列表

systemctl status crond.service? 查看crontab服務(wù)狀態(tài)

systemctl restart crond.service? 重啟crontab


參考文檔

https://www.cnblogs.com/zoro-zero/p/6590503.html

http://blog.csdn.net/gsls200808/article/details/53486078

https://certbot.eff.org/#ubuntuxenial-other

http://nginx.org/en/docs/http/configuring_https_servers.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容