前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >acme.sh-实现自动化部署SSL证书

acme.sh-实现自动化部署SSL证书

原创
作者头像
樱次元
修改2022-07-23 18:30:46
5.5K0
修改2022-07-23 18:30:46
举报
文章被收录于专栏:二次元博主二次元博主

前言

acme
acme

我一直使用的都是Let's Encrypt免费的证书,昨天看到群里的大佬发出了一个测试的证书申请的脚本命令,我才接触到acme.sh,于是我查阅了很多大佬的博文了解这个脚本的使用方法。acme.sh功能非常强大,自动安装证书,支持广泛的环境和场景的部署。

acme.sh 是一款方便,强大的 Let’s Encrypt 域名证书申请续签程序.支持一键脚本和 docker 部署.支持 http 和 DNS 两种域名验证方式,其中包括手动,自动 DNS 及 DNS alias 模式方便各种环境和需求.可同时申请合并多张单域名,泛域名证书,并自动续签证书和部署到项目.

acme部署

通过使用域名服务商提供的 API 密钥,让acme.sh自动创建域名验证记录以申请域名证书. acme.sh 支持全球各种域名服务商的 API ,本文将以阿里云,腾讯云,Cloudflare为例.更多 DNS API 支持,请查看:官方dnsapi

获取dnsapi

我这边以dnspod为例。其他dnspod获取密钥相差无几。在后台找到即可。 登录dnspod控制台访问api密钥https://console.dnspod.cn/account/token/apikey。获取dnspod密钥,看清楚是dnspod的密钥哦。

dnspod控制台
dnspod控制台

dnspod api

代码语言:javascript
复制
export DP_Id="123xxx"
export DP_Key="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

阿里云api

代码语言:javascript
复制
export Ali_Key="xxxxxxxxxxxxxx"
export Ali_Secret="xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

Cloudflare api

代码语言:javascript
复制
export CF_Token="xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
export CF_Account_ID="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

安装脚本

登陆 VPS 服务器使用官方一键安装脚本安装acme.sh

代码语言:javascript
复制
wget -O -  https://get.acme.sh | sh
安装acme
安装acme

配置 DNS API

acme.sh 程序目录为隐藏目录.acme.sh存放在root下.执行以下命令进入目录,并编辑account.conf,根据上文获取的 API 格式,复制粘贴到文件中保存.

代码语言:javascript
复制
cd ~/.acme.sh
vi account.conf

ins键即可编辑。

编辑conf
编辑conf

按esc输入:wq结束文本编辑。

完成文本编辑
完成文本编辑

注意目前 account.conf 仅支持一个 DNS API ,多个域名服务商的域名需单独加 –accountconf 参数: 相关 issues 链接

申请证书

自动 DNS 模式标准命令:

其中dns_dp为 腾讯云DNSPod.cn 服务商,自行根据官方dnsapi修改.例如:dns_ali为阿里云,dns_cf为CLoudflare.

代码语言:javascript
复制
acme.sh --issue --server letsencrypt --dns dns_dp -d example.com -d www.example.com

本博客的域名为例:

代码语言:javascript
复制
acme.sh --issue --server letsencrypt --dns dns_dp -d www.solaacg.com

acme.sh 可以同时申请多个域名.例如拥有域名abc.com,123.com,qqq.com,只需要在命令后加上-d 空格 域名即可.

多域名申请证书会将多个证书合并为一个证书,并存放到以第一个域名命名的文件夹内,证书信息仅显示第一个域名的信息.

代码语言:javascript
复制
acme.sh --issue --server letsencrypt --dns dns_dp -d abc.com -d *.abc.com -d 123.com -d *.123.com -d qqq.com -d *.qqq.com

安装证书到指定文件夹

acme.sh 还支持自动部署证书到指定目录并重启nginxapache服务,以确保新证书生效.参考如下:

代码语言:javascript
复制
acme.sh --installcert -d mydomain.com --key-file /root/private.key --fullchain-file /root/cert.crt --reloadcmd "service nginx force-reload"

这里的mydomain.com为你要申请证书的域名,key-filefullchain-file后面的路径分别是密钥文件和证书文件的路径。使用该命令仅更改域名则将在root目录下生成密钥文件private.key和证书文件cert.crt,密钥和证书路径则分别为/root/private.key/root/cert.crt--reloadcmd "service nginx force-reload"则是重载nginx。

示例

代码语言:javascript
复制
acme.sh --installcert -d www.solaacg.com --key-file /www/server/panel/vhost/cert/sola/private.key --fullchain-file /www/server/panel/vhost/cert/sola/cert.crt --reloadcmd "service nginx force-reload"

>

自动续签证书

由于 Let’s Encrypt 的证书有效期为三个月.为避免证书失效 acme.sh 会每60天根据你的历史申请记录和部署记录重新续签证书并部署.

声明感谢

昨天向大佬讨教acme的时候,谈到了waf防火墙。他向帮我接入waf,我觉得这个防火墙特别贵,我站点使用简直小题大做,但是大佬坚持给我接入。今天大佬帮我接入了waf防火墙。特别感动。感谢大佬为我的小博客提供了waf防火墙。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • acme部署
    • 获取dnsapi
      • 安装脚本
        • 配置 DNS API
          • 申请证书
            • 安装证书到指定文件夹
              • 自动续签证书
            • 声明感谢
            相关产品与服务
            SSL 证书
            腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档