引言
之前一直使用certbot 管理let’s encrypt证书,最近要做服务器迁移,借此尝试下acme.sh
开始使用
项目地址:github地址
1.安装
官方文档写的很明确了,输入命令:
1 | curl https://get.acme.sh | sh -s email=my@example.com |
安装完后记得退出重新登录下连接的客户端,否则执行会报错: acme.sh command not found
之后查看下版本 acme.sh -v
2.生成证书
生成证书有两种方式: http 和 dns 验证 我这用的dns方式,自动在域名上添加一条 txt 解析记录, 验证域名所有权.
先去dnspod申请apiToken
保存生成的Id和Key,阿里云是Key和Secret
1 | acme.sh --issue --dns dns_dp -d domain.com -d www.domain.com |
或者直接生成一个通配符域名证书
1 | acme.sh --issue --dns dns_dp -d domain.com -d *.domain.com |
可能会报错,我当时报的找不到txt记录,需要进入域名管理后台,手动添加txt记录
重新执行之前命令就可以了
3.安装证书
前面生成的证书默认都会生成到~/.acme.sh/
目录下面,官方不建议直接使用此目录证书 ,现在把证书copy到nginx目录下
1 | acme.sh --install-cert -d domain.com \ |
生成 dhparam.pem 文件,可以增加网站安全性
1 | openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048 |
4.nginx配置
1 | server { |
ssl_prefer_server_ciphers on;
这个配置能提高证书的评分。ssl_dhparam /etc/nginx/ssl/dhparam.pem;
能提高证书评分,这个文件是在第三步时生成的,若没有做则不需要写这句。nginx -t
验证一下nginx配置是否正确,然后systemctl restart nginx
重启一下nginx
5.更新证书
更新证书不需要做任何操作, acme.sh 会自动创建 cronjob,每天 0:00 点自动检测所有的证书,如果证书快过期了,则会自动更新证书。
6.软件自动更新
目前由于 acme 协议和 letsencrypt CA 都在频繁的更新, 因此 acme.sh 也经常更新以保持同步.所以为了省心省力,最好还是设置一下软件的自动更新,执行下面的命令就可以了。
1 | acme.sh --upgrade --auto-upgrade |