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
网友评论