1、安裝acme.sh
curl https://get.acme.sh | sh
2、使用dns API得方式申請證書
dns 方式的真正強大之處在於可以使用域名解析商提供的 api 自動添加 txt 記錄完成驗證.
acme.sh 目前支持 cloudflare, dnspod, cloudxns, godaddy 以及 ovh 等數十種解析商的自動集成.
以 dnspod 爲例, 你需要先登錄到 dnspod 賬號, 生成你的 api id 和 api key, 都是免費的. 然後:
export GD_Key="e2ndjW9X6_415njLoZNx6f719WSQ"
export GD_Secret="41QxgoBeYECbPtcE"
/root/.acme.sh/acme.sh --issue --dns dns_gd -d 0xsyshell.com -d '*.0xsyshell.com'
證書就會自動生成了. 這裏給出的 api id 和 api key 會被自動記錄下來, 將來你在使用 dnspod api 的時候, 就不需要再次指定了. 直接生成就好了
3、安裝到我們指定的位置,並與nginx關聯,達到自動更新證書得目的
mkdir /data/ssl
/root/.acme.sh/acme.sh --installcert -d 0xsyshell.com --key-file /data/ssl/0xsyshell.com.key --fullchain-file /data/ssl/0xsyshell.cer --ca-file /data/ssl/0xsyshell.com.ca.cer --reloadcmd "/usr/local/openresty/nginx/sbin/nginx -s reload"
4、在nginx中server模塊內配置如下:
··· #省略部分配置
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_prefer_server_ciphers on;
ssl_certificate /data/ssl/0xsyshell.com.cer;
ssl_certificate_key /data/ssl/0xsyshell.com.key;
ssl_trusted_certificate /data/ssl/0xsyshell.com.ca.cer;
···