為您解碼網(wǎng)站建設(shè)的點(diǎn)點(diǎn)滴滴
發(fā)表日期:2018-11 文章編輯:小燈 瀏覽次數(shù):2037
一直想擼一下https,最近剛好有點(diǎn)空,就實(shí)現(xiàn)了一下。之前看過一篇教你快速擼一個(gè)免費(fèi)HTTPS證書的文章,通過Certbot
來管理Let's Encrypt
的證書,使用前需要安裝一堆庫(kù),覺得不太友好。所謂條條大路通羅馬,肯定還有其他方法可以做這個(gè)事情。
經(jīng)過一番研究,發(fā)現(xiàn)了 acme.sh 這個(gè)庫(kù),這個(gè)是用Shell腳本編寫的,不需要安裝其他東西,比較純凈,覺得比較適合自己,記錄一下過程。
curl https://get.acme.sh | sh
這個(gè)命令后會(huì)將acme.sh安裝到~/.acme.sh/
目錄下
重新載入~/.bashrc
source ~/.bashrc
acme.sh--issue -d www.your-domin.com--webroot/srv/your-domin.com/
這個(gè)命令的意思是用http方式將www.your-domin.com生成一個(gè)證書,/srv/your-domin.com/
是你的網(wǎng)站根目錄。(這個(gè)過程中acme.sh
會(huì)全自動(dòng)的生成驗(yàn)證文件, 并放到網(wǎng)站的根目錄, 然后自動(dòng)完成驗(yàn)證. 最后又自動(dòng)刪除驗(yàn)證文件.)
默認(rèn)生成的證書都放在安裝目錄下: ~/.acme.sh/,這個(gè)目錄一般來說不能讓nginx或Apache直接使用。所以我們需要將證書放到一個(gè)指定的目錄,習(xí)慣是放在/etc/nginx/ssl/
目錄下。acme提供了--installcert來安裝證書,只需指定目標(biāo)位置, 然后證書文件會(huì)被copy到相應(yīng)的位置。
先確保存在/etc/nginx/ssl/
目錄
mkdir /etc/nginx/ssl
copy證書并指定nginx reload命令
acme.sh--installcert-dwww.your-domin.com \ --key-file /etc/nginx/ssl/www.your-domin.com.key \ --fullchain-file /etc/nginx/ssl/fullchain.cer \ --reloadcmd"service nginx force-reload"
service nginx force-reload是為了在讓acme自動(dòng)更新時(shí)候能夠重啟nginx使得證書生效。執(zhí)行完命令可以在/etc/nginx/ssl/
看到多了www.your-domin.com.key
和www.your-domin.com.cer
的文件。
openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048
這一步不是必須,但最好加上,后面配置好后會(huì)通過ssllabs.com 來驗(yàn)證一下,如果這一步ssl_dhparam 未配置,將導(dǎo)致 ssllabs.com 的評(píng)分降到 B。A+是最好。
證書已安裝完畢,接下來就是讓nginx來使用這個(gè)證書了。由于我這個(gè)服務(wù)器有幾個(gè)站點(diǎn),而目前只是一個(gè)站點(diǎn)配置了證書,因此只修改當(dāng)前站點(diǎn)的conf即可
server { listen 80; server_name www.your-domin.com; listen 443 ssl http2 default_server; listen [::]:443 ssl http2 default_server; ssl_certificate /etc/nginx/ssl/www.your-domin.com.cer; ssl_certificate_key /etc/nginx/ssl/www.your-domin.com.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_dhparam /etc/nginx/ssl/dhparam.pem; ... }
ssl_prefer_server_ciphers on;
這個(gè)配置能提高證書的評(píng)分。
ssl_dhparam /etc/nginx/ssl/dhparam.pem;
能提高證書評(píng)分,這個(gè)文件是在第四步時(shí)生成的,若沒有做則不需要寫這句。
nginx -t
驗(yàn)證一下nginx配置是否正確,然后systemctl restart nginx
重啟一下nginx,就可以用https://www.your-domin.com測(cè)試一下你的站點(diǎn)啦。
Let's Encrypt 的證書有效期是 90 天的,需要定期重新申請(qǐng),不過acme在安裝的時(shí)候就已經(jīng)設(shè)置了自動(dòng)更新,所以這一步不用關(guān)心,很省心。
這里了解一下acme.sh的自動(dòng)更新:安裝acme時(shí)會(huì)自動(dòng)為你創(chuàng)建 cronjob, 每天 0:00 點(diǎn)自動(dòng)檢測(cè)所有的證書, 如果快過期了, 需要更新, 則會(huì)自動(dòng)更新證書.
查看任務(wù)
# crontab -l 47 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null
手動(dòng)renew一下證書可以通過這個(gè)命令
acme.sh --cron -f
目前由于 acme 協(xié)議和 letsencrypt CA 都在頻繁的更新, 因此 acme.sh 也經(jīng)常更新以保持同步.所以為了省心省力,最好還是設(shè)置一下軟件的自動(dòng)更新,執(zhí)行下面的命令就可以了。
acme.sh--upgrade--auto-upgrade
在這個(gè)網(wǎng)站可以驗(yàn)證一下你的證書級(jí)別,根據(jù)我上面的配置可以評(píng)級(jí)為A。
https://www.ssllabs.com/ssltest/analyze.html?d=www.fengxianqi.com
日期:2018-04 瀏覽次數(shù):6763
日期:2017-02 瀏覽次數(shù):3438
日期:2017-09 瀏覽次數(shù):3659
日期:2017-12 瀏覽次數(shù):3529
日期:2018-12 瀏覽次數(shù):4819
日期:2016-12 瀏覽次數(shù):4584
日期:2017-07 瀏覽次數(shù):13647
日期:2017-12 瀏覽次數(shù):3508
日期:2018-06 瀏覽次數(shù):4267
日期:2018-05 瀏覽次數(shù):4446
日期:2017-12 瀏覽次數(shù):3558
日期:2017-06 瀏覽次數(shù):3984
日期:2018-01 瀏覽次數(shù):3945
日期:2016-12 瀏覽次數(shù):3915
日期:2018-08 瀏覽次數(shù):4428
日期:2017-12 瀏覽次數(shù):3708
日期:2016-09 瀏覽次數(shù):6406
日期:2018-07 瀏覽次數(shù):3208
日期:2016-12 瀏覽次數(shù):3232
日期:2018-10 瀏覽次數(shù):3386
日期:2018-10 瀏覽次數(shù):3482
日期:2018-09 瀏覽次數(shù):3580
日期:2018-02 瀏覽次數(shù):3600
日期:2015-05 瀏覽次數(shù):3521
日期:2018-09 瀏覽次數(shù):3308
日期:2018-06 瀏覽次數(shù):3435
日期:2017-02 瀏覽次數(shù):3874
日期:2018-02 瀏覽次數(shù):4337
日期:2018-02 瀏覽次數(shù):4176
日期:2016-12 瀏覽次數(shù):3573
Copyright ? 2013-2018 Tadeng NetWork Technology Co., LTD. All Rights Reserved.