letsencrypt免费SSL证书安装时常用的验证方式是Web,但是Web有时经常会出现各种问题,比如80端口没有开,比如你启用了CDN后letsencrypt无法获取你的域名的真实IP地址,这些经常会导致letsencrypt免费SSL证书签发的失败。
利用acme.sh的DNS API验证域名的方式就可以很好避免这些问题,而且还支持泛域名letsencrypt证书的申请与签发。这里以DNSPOD为例:
curl https://get.acme.sh | sh -s email=freehao123@gmail.com #导入DNSPOD的API export DP_Id="qimm" export DP_Key="a7xxxxx" #多域名 acme.sh --issue --dns dns_dp -d pan.wzfou.com -d mi.wzfou.com #单域名 acme.sh --issue --dns dns_dp -d pan.wzfou.com #开始安装 acme.sh --install-cert -d pan.wzfou.com \ --key-file /usr/local/nginx/conf/ssl/pan.wzfou.com.key \ --fullchain-file /usr/local/nginx/conf/ssl/pan.wzfou.com.crt \ --reloadcmd "service nginx force-reload" acme.sh --install-cert -d mi.wzfou.com \ --key-file /usr/local/nginx/conf/ssl/mi.wzfou.com.key \ --fullchain-file /usr/local/nginx/conf/ssl/mi.wzfou.com.crt \ --reloadcmd "service nginx force-reload"
完成以上操作后,letsencrypt免费SSL证书以后每次续期时就会自动执行以上命令了,而且acme.sh安装时已经自动添加了定时任务,必要时你也可以手动添加定时任务或者手动续期:
31 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null
更多的方法请参考:https://wzfou.com/letsencrypt/
聂素馨 已回答的问题 2021年12月17日