使用acme脚本获取tls证书

发布于 2021-03-16  55 次阅读


使用acme脚本获取tls证书

​ acme脚本为github开源项目,项目地址为https://github.com/acmesh-official/acme.sh

说明

​ 此脚本会每天 0:00 点自动检测所有的证书, 如果快过期了, 需要更新, 则会自动更新证书。

​ 安装过程不会污染已有的系统任何功能和文件, 所有的修改都限制在安装目录中: ~/.acme.sh/

注意:如果不使用root用户,需要提前调整权限

1.安装acme.sh

安装命令:

curl https://get.acme.sh | sh

脚本会自动创建 一个 bash 的 alias, 方便你的使用:

alias acme.sh=~/.acme.sh/acme.sh

安装后需要重启终端,以使命令生效.

2.通过http方式生成证书

http 方式需要在你的网站根目录下放置一个文件, 来验证你的域名所有权,完成验证. 然后就可以生成证书了.

需要指定域名与网站根目录

acme.sh  --issue  -d mydomain.com -d www.mydomain.com  --webroot  /home/wwwroot/mydomain.com/

3.copy/安装 证书

不要直接使用原证书

生成的证书在~/.acme.sh目录下,需要将证书copy到使用的地方

使用--install-cert命令来copy证书,例如:

Apach example:

acme.sh --install-cert -d example.com \
--cert-file      /path/to/certfile/in/apache/cert.pem  \
--key-file       /path/to/keyfile/in/apache/key.pem  \
--fullchain-file /path/to/fullchain/certfile/apache/fullchain.pem \
#重新加载配置
--reloadcmd     "service apache2 force-reload"

Nginx example:

acme.sh --install-cert -d example.com \
--key-file       /path/to/keyfile/in/nginx/key.pem  \
--fullchain-file /path/to/fullchain/nginx/cert.pem \
#重新加载配置
--reloadcmd     "service nginx force-reload"

注意:这里指定的所有参数都会被自动记录下来, 并在将来证书自动更新以后, 被再次自动调用

4. 更新 acme.sh

目前由于 acme 协议和 letsencrypt CA 都在频繁的更新, 因此 acme.sh 也经常更新以保持同步.

升级 acme.sh 到最新版 :

shellacme.sh --upgrade

如果你不想手动升级, 可以开启自动升级:

acme.sh  --upgrade  --auto-upgrade

之后, acme.sh 就会自动保持更新了.

你也可以随时关闭自动更新:

acme.sh --upgrade  --auto-upgrade  0