电商网站首页开发,免费企业建站系统源码,海晏网站建设公司,免费网址域名注册acme.sh 是一个热度非常高的签发和自动续期 https 证书的工具#xff0c;虽然官网上提供了充分的操作说明#xff0c;但是不够简洁#xff0c;本文以在 nginx 中签发和配置http 为例#xff0c;列出必要的几个简单步骤。
安装
因为网络原因#xff0c;github 大部分人是…acme.sh 是一个热度非常高的签发和自动续期 https 证书的工具虽然官网上提供了充分的操作说明但是不够简洁本文以在 nginx 中签发和配置http 为例列出必要的几个简单步骤。
安装
因为网络原因github 大部分人是不能直接访问的所以官网的一键安装脚本可能并不好用。推荐自己手工将代码下载下来操作。
1、下载 git 代码
https://github.com/acmesh-official/acme.sh
下载代码》解压缩文件清单如下
[roottest acme.sh-master]# ll
total 308
-rwxrwxrwx 1 root root 226257 Dec 11 04:00 acme.sh
drwxrwxrwx 2 root root 4096 Dec 11 04:00 deploy
drwxrwxrwx 2 root root 8192 Dec 11 04:00 dnsapi
-rw-rw-rw- 1 root root 1528 Dec 11 04:00 Dockerfile
-rw-rw-rw- 1 root root 35149 Dec 11 04:00 LICENSE.md
drwxrwxrwx 2 root root 4096 Dec 11 04:00 notify
-rw-rw-rw- 1 root root 22455 Dec 11 04:00 README.md2、安装acme.sh
指定自己的 Email安装命令如下
chmod x acme.sh
./acme.sh --install -m 365384722qq.com按官方说明安装命令实际上执行了如下3步操作
创建 acme.sh 并将其复制到当前用户主目录$HOME~/.acme.sh/ 中以后签发的所有证书和配置也将放置在此文件夹中。创建命令别名acme.sh~/.acme.sh/acme.sh此后在任何位置都可以直接使用 acme.sh 命令。创建每日cron作业以便在需要时检查和续订证书可以使用 crontab -l 查看自动配置的作业内容你也可以使用 crontab -e 自定义时间。
cron 内容如下所示
24 5 * * * /root/.acme.sh/acme.sh --cron --home /root/.acme.sh /dev/null安装后如果想让 acme.sh 别名生效你可能需要关闭当前ssh会话并重新打开它。
3、启用acme的自动升级
acme.sh --upgrade --auto-upgrade配置自动升级后查看 ~/.acme.sh/account.conf 可以看到 AUTO_UPGRADE1 。
签发证书
官网签发证书的方式主要分为3种
基于 webroot 的方式手工 TXT 域名解析的方式自动 API 的方式
如果你希望以后都能自动续期而不需要人工介入那么你必须选择基于 API 的方式前两者本文不赘述详见官网说明。
acme 支持了很多域名服务商使用参数 --dns 指定如下基于阿里云自动的方式进行示例
1、登录阿里云控制台记录下 AKID 和 AKSCT。
2、执行两条 export 命令设置临时变量
export Ali_KeyAKID
export Ali_SecretAKSCT3、执行签发命令使用 --dns dns_ali 明确阿里云API通道
./acme.sh --issue --dns dns_ali -d *.demo.com -d demo.com签发成功后你可以查看配置文件 ~/.acme.sh/account.conf会发现该配置文件记录了我们 export 的两个值之所以记录下来是为了后续自动续签使用。
安装证书到Nginx
如下脚本以 nginx 为例脚本中设置证书的目标位置、证书更新后需要执行什么命令来刷新 nginx 服务使之生效。
acme.sh --install-cert -d goodcol.com \
--key-file /opt/soft/nginx/ssl/goodcol.com/key.pem \
--fullchain-file /opt/soft/nginx/ssl/goodcol.com/cert.pem \
--reloadcmd docker exec -it nginx-forward nginx -s reload因为我的 nginx 是基于docker 的所有我的 reloadCmd 是对docker 里面的 nginx 进行 reload其中证书文件是我 nginx 容器挂在宿主机文件的位置。
其他更多内容详见官方文档。 END