Let’s Encrypt也是一個 CA 機構,但這個 CA 機構是免費的,官方推薦的是使用Certbot,但是個人感覺那個工具配置有點兒繁瑣,對于阿里云DNS支持不好(也可能是自己不會用),這次介紹一下另外一個工具,github:https://github.com/Neilpang/acme.sh
1:安裝
curl https://get.acme.sh | sh
2:生成證書
認證方式分為http和DNS兩種
http驗證
http驗證需要在服務器上進行,因為nginx、apache、80端口驗證這些有自動化操作在本地執行,待申請到證書后,nginx、apache需要手動配置一下。
//apache or nginx:使用這兩種服務器,acme.sh可以自動修改配置完成驗證,最后再恢復配置,前提是申請證書的這個域名需要在這兩種服務器中有配置
acme.sh --issue -d mydomain.com --apache
acme.sh --issue -d mydomain.com --nginx
//根目錄:acme.sh 會全自動的生成驗證文件, 并放到網站的根目錄, 然后自動完成驗證. 最后刪除驗證文件
acme.sh --issue -d mydomain.com -d www.mydomain.com --webroot /home/wwwroot/mydomain.com/
//80端口:如果服務器沒有網站,80端口是空閑的,acme.sh也可以自己臨時充當web服務器驗證
acme.sh --issue -d mydomain.com --standalone
DNS驗證
DNS的強大之處在于不需要任何服務器, 不需要任何公網ip,同時支持通配符,這里不介紹手動添加txt 記錄完成驗證的方式,那種方式比較麻煩,這里介紹阿里云自動驗證的方式。
首先要在阿里云配置accesskey,登陸阿里云,在點擊我的->accesskeys->創建AccessKeys->得到AccessKey ID和Access Key Secret
//1:配置阿里云賬號
vim .acme.sh/account.conf
//添加key和secret
#LOG_FILE="/home/xx/.acme.sh/acme.sh.log"
#LOG_LEVEL=1
#AUTO_UPGRADE="1"
#NO_TIMESTAMP=1
SAVED_Ali_Key='xxxxxx'
SAVED_Ali_Secret='xxxxxx'
USER_PATH='/sbin:/bin:/usr/sbin:/usr/bin'
//2:通過阿里云DNS自動獲取通配符證書
.acme.sh/acme.sh --issue --dns dns_ali -d '*.mydomain.cn'
3:七牛云的https配置
fullchain 是內容,domain.key 是私鑰
4:實例
acme更新https證書
// 一起搞兩個域名通配符
acme.sh --issue --dns dns_ali -d mydomain.com -d '*.mydomain.com' -d mydomain2.com -d '*.mydomain2.com'
sudo cp /home/xxx/.acme.sh/mydomain.com/mydomain.com.cer /srv/ssl/mydomain.com/
sudo cp /home/xxx/.acme.sh/mydomain.com/mydomain.com.key /srv/ssl/mydomain.com/
sudo cp /home/xxx/.acme.sh/mydomain.com/fullchain.cer /srv/ssl/mydomain.com/
測試是否更新成功
echo | openssl s_client -servername mydomain.com -connect mydomain.com:443 2>/dev/null | openssl x509 -noout -dates