先說下背景:certbot依賴太舊
2020年之后Python2 安全不支持 不能再用了,
網站用的是letsencrypt免費證書,letsencrypt官方推薦acme客戶端是Certbot ,
但是Certbot 在nginx on centos7上用的是 python2-certbot-nginx ,基於Python2的,(看了下centos8是使用的python3的,但是更新到8代價有點大)
所以cerbot也用不得了
解決方案:acme.sh
在官方客戶端列表里發現了一個用shell實現的:acme.sh 現在(2020年09月09日)有19K star
直接使用DNS方式生成泛域名證書,這里使用acme.sh配置let'sencrypt網址證書,過程如下(請以官網文檔為主)
1安裝 參照官網 安裝
2配置dns 找到自動的域名供應商添加dnsapi key secret
4配置nginx 只需要在原來的80 server的基礎上更改443端口並添加證書配置就可以了,見下方紅色代碼部分
server { listen 443; server_name localhost; ssl on; index index.html index.htm; ssl_certificate /上一步你安裝的位置/fullchain.cer; ssl_certificate_key /上一步你安裝的位置/clsn.key; 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; root html; location / { root html; index index.html index.htm; } }
5 重啟nginx : service nginx force-reload, 不是 service nginx reload, 據測試, reload 並不會重新加載證書, 所以用的 force-reload
done