简介
acme.sh 实现了 acme
协议, 可以从 letsencrypt 生成免费的证书.
主要步骤:
- 安装 acme.sh
- 生成证书
- 安装证书
- 配置nginx
- 更新
- 出错怎么办, 如何调试
- 吊销,移除证书
1. 安装
curl https://get.acme.sh | sh
2. 生成证书
acme.sh --issue -d blog.linjinbao66.tk --webroot /root/linjinbao666.github.io
只需要指定域名, 并指定域名所在的网站根目录. acme.sh 会全自动的生成验证文件, 并放到网站的根目录, 然后自动完成验证. 最后会聪明的删除验证文件. 整个过程没有任何副作用。此处的webroot需要在nginx配置文件中指定为root位置。示例:
server {
listen 80;
listen [::]:80;
server_name blog.linjinbao66.tk;
root /root/linjinbao666.github.io;
location /{
proxy_pass http://127.0.0.1:9010;
}
}
** 注意上述配置中的root**。
3. 安装证书
前面证书生成以后, 接下来需要把证书 copy 到真正需要用它的地方.
注意, 默认生成的证书都放在安装目录下: ~/.acme.sh/
, 请不要直接使用此目录下的文件, 例如: 不要直接让 nginx/apache 的配置文件使用这下面的文件. 这里面的文件都是内部使用, 而且目录结构可能会变化.
正确的使用方法是使用 --install-cert
命令,并指定目标位置, 然后证书文件会被copy到相应的位置, 例如:
acme.sh --install-cert -d blog.linjinbao66.tk \
--key-file /data/blog/key.pem \
--fullchain-file /data/blog/cert.pem \
--reloadcmd "service nginx force-reload"
- 注意此处的安装证书只是在目标地址生成了一个
key.pem
文件和一个cert.pem
文件,如果路径中的blog
没有创建,则会出错。
4. 配置nginx
以上步骤,只是生成了所需要的证书文件,key.pem
和cert.pem
,真正使用起来还必须使用配置到nginx配置里面。实例:
server {
listen 443;
server_name blog.linjinbao66.tk;
ssl on;
ssl_certificate /data/blog/cert.pem;
ssl_certificate_key /data/blog/key.pem;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://127.0.0.1:9010;
}
}
5. 更新
目前证书在 60 天以后会自动更新, 你无需任何操作. 今后有可能会缩短这个时间, 不过都是自动的, 你不用关心。
目前由于 acme 协议和 letsencrypt CA 都在频繁的更新, 因此 acme.sh 也经常更新以保持同步.
升级 acme.sh 到最新版 :
acme.sh --upgrade
如果你不想手动升级, 可以开启自动升级:
acme.sh --upgrade --auto-upgrade
之后, acme.sh 就会自动保持更新了.
你也可以随时关闭自动更新:
acme.sh --upgrade --auto-upgrade 0
出错处理
如果出错, 请添加 debug log:
acme.sh --issue ..... --debug
或者:
acme.sh --issue ..... --debug 2
7. 吊销,移除证书
命令acme.sh --list
列出所有证书:
root@instance-1:~# acme.sh --list
Main_Domain KeyLength SAN_Domains Created Renew
blog.linjinbao66.tk "" no Tue Oct 13 05:43:45 UTC 2020 Sat Dec 12 05:43:45 UTC 2020
linjinbao66.tk "ec-256" no Sat Oct 3 19:00:18 UTC 2020 Wed Dec 2 19:00:18 UTC 2020
命令acme.sh --revoke -d blog.linjinbao66.tk --ecc
吊销证书。
命令acme.sh --remove -d blog.linjinbao66.tk --ecc
移除证书
参考地址:acmesh-official/acme.sh
阅读次数: 本文累计被阅读 1000000 次