現(xiàn)在網(wǎng)絡(luò)對數(shù)據(jù)傳輸?shù)陌踩砸笤絹碓礁?,許多情況下都需要https協(xié)議才能訪問。但是https的證書價(jià)格又比較昂貴,這種時(shí)候如果又免費(fèi)的證書可以使用就好了。letsencrypt提供了這樣的免費(fèi)證書。
在github上有一個(gè)倉庫acme.sh,可以申請到免費(fèi)的ssl證書。下面我就帶領(lǐng)大家熟悉下此倉庫申請證書的使用流程
# 安裝腳本
curl https://get.acme.sh | sh # 安裝
sourcr ~/.bashrc # 重新加載環(huán)境變量
# 此處需要注意設(shè)置你的域名是能訪問到的
# 會(huì)在網(wǎng)站項(xiàng)目中創(chuàng)建文件夾.well-known
# http://www.your-app.com/.well-known/
acme.sh --issue -d www.your-app.com -w /home/web/www/pay-app-final/public
# 這部執(zhí)行完成之后會(huì)把申請成功的證書放在~/.acme.sh/目錄里s
# 將證書安裝到網(wǎng)站的路徑下
acme.sh --installcert -d www.your-app.com \
--keypath /home/web/www/ssl/app-pay.wechat.com.key \
--fullchainpath /home/web/www/ssl/app-pay.wechat.com.key.pem \
--reloadcmd "sudo service nginx force-reload"
# 生成 dhparam.pem 文件,如果沒有此文件,你的網(wǎng)站安全級別會(huì)被評為B
openssl dhparam -out /home/web/www/ssl/dhparam.pem 2048
# 修改nginx啟用SSL
http {
# 新增
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
# 兼容其他老瀏覽器的 ssl_ciphers 設(shè)置請?jiān)L問 https://wiki.mozilla.org/Security/Server_Side_TLS
server {
listen 80 default_server;
# 新增
listen 443 ssl;
ssl_certificate /home/web/www/ssl/app-pay.wechat.com.key.pem;
ssl_certificate_key /home/web/www/ssl/app-pay.wechat.com.key;
# ssl_dhparam
ssl_dhparam /home/web/www/ssl/dhparam.pem;
# 其他省略
}
}
# 檢查nginx的配置并重新啟動(dòng)
sudo service nginx configtest
sudo service nginx restart
Let's Encrypt 的證書有效期是 90 天的,你需要定期 renew 重新申請,這部分 acme.sh 以及幫你做了,在安裝的時(shí)候往 crontab 增加了一行每天執(zhí)行的命令
crontab -l # 查看定時(shí)任務(wù)