# 用acme.sh申请证书(含泛域名)

用acme.sh申请证书(含泛域名)


以下主要以阿里云dns api方式申请泛域名证书为例,其他请自己实践

安装方法:
https://github.com/acmesh-official/acme.sh

支持的dns解析提供商:
https://github.com/acmesh-official/acme.sh/wiki/dnsapi

用法详解:
https://github.com/acmesh-official/acme.sh/wiki/%E8%AF%B4%E6%98%8E

1 申请证书:

1.1 使用dns api方式申请证书(以阿里云dns为例)

[root@t-deploy-10-1-203-177:~]# export Ali_Key="LTA232343243Id4X"
[root@t-deploy-10-1-203-177:~]# export Ali_Secret="lvpS238u948539u053034050JJ4pn" 
[root@t-deploy-10-1-203-177:~]# 
[root@t-deploy-10-1-203-177:~]# 
[root@t-deploy-10-1-203-177:~]# acme.sh --issue --dns dns_ali  -d gccc.cn -d *.gccc.cn
[20231017日 星期二 14:04:36 +07] Using CA: https://acme.zerossl.com/v2/DV90
[20231017日 星期二 14:04:36 +07] Create account key ok.
[20231017日 星期二 14:04:36 +07] No EAB credentials found for ZeroSSL, let's get one
[2023年 10月 17日 星期二 14:04:38 +07] Registering account: https://acme.zerossl.com/v2/DV90
[2023年 10月 17日 星期二 14:04:42 +07] Registered
[2023年 10月 17日 星期二 14:04:42 +07] ACCOUNT_THUMBPRINT='CaqZfrDFbArDY7XxcyjgKtFSG3EvdOdK72E_Gke'
[2023年 10月 17日 星期二 14:04:42 +07] Creating domain key
[2023年 10月 17日 星期二 14:04:42 +07] The domain key is here: /root/.acme.sh/gccc.cn_ecc/gccc.cn.key
[2023年 10月 17日 星期二 14:04:42 +07] Multi domain='DNS:gccc.cn,DNS:*.gccc.cn'
[2023年 10月 17日 星期二 14:04:42 +07] Getting domain auth token for each domain
[2023年 10月 17日 星期二 14:04:49 +07] Getting webroot for domain='gccc.cn'
[2023年 10月 17日 星期二 14:04:49 +07] Getting webroot for domain='*.gccc.cn'
[2023年 10月 17日 星期二 14:04:49 +07] Adding txt value: C9s1s10cxiYtjs9c9sTgGcihbyawv0OW5AvFcZiLs5g for domain:  _acme-challenge.gccc.cn
[2023年 10月 17日 星期二 14:04:54 +07] The txt record is added: Success.
[2023年 10月 17日 星期二 14:04:54 +07] Adding txt value: Yuysn3yMTFdeAmUZZW0Rf1eiFXCCjjXfYJINwX45L60 for domain:  _acme-challenge.gccc.cn
[2023年 10月 17日 星期二 14:05:00 +07] The txt record is added: Success.
[2023年 10月 17日 星期二 14:05:00 +07] Let's check each DNS record now. Sleep 20 seconds first.
[20231017日 星期二 14:05:21 +07] You can use '--dnssleep' to disable public dns checks.
[20231017日 星期二 14:05:21 +07] See: https://github.com/acmesh-official/acme.sh/wiki/dnscheck
[20231017日 星期二 14:05:21 +07] Checking gccc.cn for _acme-challenge.gccc.cn
[20231017日 星期二 14:05:23 +07] Domain gccc.cn '_acme-challenge.gccc.cn' success.
[20231017日 星期二 14:05:23 +07] Checking gccc.cn for _acme-challenge.gccc.cn
[20231017日 星期二 14:05:24 +07] Domain gccc.cn '_acme-challenge.gccc.cn' success.
[20231017日 星期二 14:05:24 +07] All success, let's return
[2023年 10月 17日 星期二 14:05:24 +07] Verifying: gccc.cn
[2023年 10月 17日 星期二 14:05:25 +07] Processing, The CA is processing your order, please just wait. (1/30)
[2023年 10月 17日 星期二 14:05:31 +07] Success
[2023年 10月 17日 星期二 14:05:31 +07] Verifying: *.gccc.cn
[2023年 10月 17日 星期二 14:05:32 +07] Processing, The CA is processing your order, please just wait. (1/30)
[2023年 10月 17日 星期二 14:05:37 +07] Success
[2023年 10月 17日 星期二 14:05:37 +07] Removing DNS records.
[2023年 10月 17日 星期二 14:05:37 +07] Removing txt: C9s1s10cxiYtjs9c9sTgGcihbyawv0OW5AvFcZiLs5g for domain: _acme-challenge.gccc.cn
[2023年 10月 17日 星期二 14:05:44 +07] Removed: Success
[2023年 10月 17日 星期二 14:05:44 +07] Removing txt: Yuysn3yMTFdeAmUZZW0Rf1eiFXCCjjXfYJINwX45L60 for domain: _acme-challenge.gccc.cn
[2023年 10月 17日 星期二 14:05:51 +07] Removed: Success
[2023年 10月 17日 星期二 14:05:51 +07] Verify finished, start to sign.
[2023年 10月 17日 星期二 14:05:51 +07] Lets finalize the order.
[2023年 10月 17日 星期二 14:05:51 +07] Le_OrderFinalize='https://acme.zerossl.com/v2/DV90/order/1ync1anZoV2eaUxXFKJ3Iw/finalize'
[2023年 10月 17日 星期二 14:05:54 +07] Order status is processing, lets sleep and retry.
[2023年 10月 17日 星期二 14:05:54 +07] Retry after: 15
[2023年 10月 17日 星期二 14:06:10 +07] Polling order status: https://acme.zerossl.com/v2/DV90/order/1ync1anZoV2eaUxXFKJ3Iw
[2023年 10月 17日 星期二 14:06:11 +07] Downloading cert.
[2023年 10月 17日 星期二 14:06:11 +07] Le_LinkCert='https://acme.zerossl.com/v2/DV90/cert/0nvnf-_7DEQA2qEN2oA8rw'
[20231017日 星期二 14:06:13 +07] Cert success.
-----BEGIN CERTIFICATE-----
MIIEAzCCA4mgAwIBAgIRAMmWuGOlbvX1iuU5pu7OZs0wCgYIKoZIzj0EAwMwSzEL
MAkGA1UEBhMCQVQxEDAOBgNVBAoTB1plcm9TU0wxKjAoBgNVBAMTIVplcm9TU0wg
RUNDIERvbWFpbiBTZWN1cmUgU2l0ZSBDQTAeFw0yMzEwMTcwMDAwMDBaFw0yNDAx
MTUyMzU5NTlaMBUxEzARBgNVBAMTCmdjLWxpZmUuY24wWTATBgcqhkjOPQIBBggq
hkjOPQMBBwNCAAQ93/BwV3RV+pFKQM9kDIPI4YeAQ6h7zLYSK4cLVwPzh1RB8lht
zkToUH7MAOE04MsL19ZzJOiEx0DN6ZbZkXaNo4ICgjCCAn4wHwYDVR0jBBgwFoAU
D2vmS845R672fpAeefAwkZLIX6MwHQYDVR0OBBYEFHWYDlRNjglfOgD2PCNa8yoL
Z6O4MA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMB0GA1UdJQQWMBQGCCsG
AQUFBwMBBggrBgEFBQcDAjBJBgNVHSAEQjBAMDQGCysGAQQBsjEBAgJOMCUwIwYI
KwYBBQUHAgEWF2h0dHBzOi8vc2VjdGlnby5jb20vQ1BTMAgGBmeBDAECATCBiAYI
KwYBBQUHAQEEfDB6MEsGCCsGAQUFBzAChj9odHRwOi8vemVyb3NzbC5jcnQuc2Vj
dGlnby5jb20vWmVyb1NTTEV220RvbWFpblNlY3VyZVNpdGVDQS5jcnQwKwYIKwYB
BQUHMAGGH2h0dHA6Ly96ZXJvc3NsLm9jc3Auc2VjdGlnby5jb20wggECBgorBgEE
AdZ5AgQCBIHzBIHwAO4AdQBss4g/Crb7lVHCYcz1h7o0tKTNuyncaEIKn+ZnTFo6
dAAAAYs8dJBdAAAEAwBGMEQCIFKtFwFRLSSagF0crT4kHDGO/a/B9+dSP2mG30pc
48GnAiBEVad89HKonMBYhIYKxmC8KTcO80GeOJsBE9Y/DR2OIAB1ANq2v2s/tbYi
n5vCu1xr6HCRcWy7UYSFNL2kPTBI1/urAAABizx0kMkAAAQDAEYwRAIgBZnx+yKN
Ulu5RIWHAsdAxiNomn2IzlxX2ioFSWRxrEQCIAfC/EZwCipTtR84H3XHD4wCbgSu
mrtkTck6q/+upjnDMCMGA1UdEQQcMBqCCmdjLWxpZmUuY26CDCouZ2MtbGlmZS5j
bjAKBggqhkjOPQQDAwNoADBlAjBu4CII1xsZCYaT7LhS7eorKbaTqWcy3XGTaiac
t49cGPe5tJquJGOvyZuh9EOn8ysCMQCwb6SzCH1jyR51F22G9Sn5QARzfP5mYrdx
0UqKYgayJnzrUoknCDES9YWxx8IsTgQ=
-----END CERTIFICATE-----
[20231017日 星期二 14:06:13 +07] Your cert is in: /root/.acme.sh/gccc.cn_ecc/gccc.cn.cer
[20231017日 星期二 14:06:13 +07] Your cert key is in: /root/.acme.sh/gccc.cn_ecc/gccc.cn.key
[20231017日 星期二 14:06:13 +07] The intermediate CA cert is in: /root/.acme.sh/gccc.cn_ecc/ca.cer
[20231017日 星期二 14:06:13 +07] And the full chain certs is there: /root/.acme.sh/gccc.cn_ecc/fullchain.cer

1.2 附加:也可以用其他方式申请证书

# A、使用指定webroot目录方式:
acme.sh --issue -d mydomain.com                     --webroot /wwwroot/mydomain.com/
acme.sh --issue -d mydomain.com -d www.mydomain.com --webroot /wwwroot/www.mydomain.com/    #-- 指定多个域名

# B、使用自动寻找webroot目录方式:
acme.sh --issue -d www.mydomain.com --nginx

# C、使用独立方式(一般用于还没有web服务的初始化阶段)
# 如果你还没有运行任何 web 服务, 80 端口是空闲的, 那么 acme.sh 还能假装自己是一个webserver, 临时听在80 端口, 完成验证:
acme.sh --issue -d mydomain.com --standalone

# D、使用手动dns方式
acme.sh --issue --dns -d mydomain.com \
 --yes-I-know-dns-manual-mode-enough-go-ahead-please
# 添加指定 txt 记录,等待解析完成之后, 重新生成证书:
acme.sh --renew -d mydomain.com \
  --yes-I-know-dns-manual-mode-enough-go-ahead-please
# 注:这种方式不能自动renew证书

2 续签证书:

acme.sh --renew --dns dns_ali  -d gccc.cn -d *.gccc.cn

自动创建的计划任务会自动续签吧,这个应该不需要

这是自动创建的计划任务:

36 20 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null

3 查看证书

[root@t-deploy-10-1-203-177:~]# acme.sh --list
Main_Domain  KeyLength  SAN_Domains   CA           Created               Renew
gccc.cn   "ec-256"   *.gccc.cn  ZeroSSL.com  2023-10-17T07:06:13Z  2023-12-15T07:06:13Z

4 安装证书:

[root@t-deploy-10-1-203-177:~]# mkdir /srv/certs/gccc.cn
[root@t-deploy-10-1-203-177:~]# 
[root@t-deploy-10-1-203-177:~]# acme.sh --install-cert  -d gccc.cn -d *.gccc.cn  --key-file /srv/certs/gccc.cn/gccc.cn.key  --cert-file /srv/certs/gccc.cn/gccc.cn.cer  --fullchain-file /srv/certs/gccc.cn/gccc.cn-fullchain.cer  --reloadcmd "scp -r /srv/certs/gccc.cn root@10.1.203.179:/srv/certs/" 
[20231017日 星期二 15:03:17 +07] The domain 'gccc.cn' seems to have a ECC cert already, lets use ecc cert.
[20231017日 星期二 15:03:17 +07] Installing cert to: /srv/certs/gccc.cn/gccc.cn.cer
[20231017日 星期二 15:03:17 +07] Installing key to: /srv/certs/gccc.cn/gccc.cn.key
[20231017日 星期二 15:03:17 +07] Installing full chain to: /srv/certs/gccc.cn/gccc.cn-fullchain.cer
[20231017日 星期二 15:03:17 +07] Run reload cmd: scp -r /srv/certs/gccc.cn root@10.1.203.179:/srv/certs/
gccc.cn.cer                                                                                                                                              100% 1452     1.2MB/s   00:00    
gccc.cn-fullchain.cer                                                                                                                                    100% 4120     4.7MB/s   00:00    
gccc.cn.key                                                                                                                                              100%  227   262.3KB/s   00:00    
[20231017日 星期二 15:03:17 +07] Reload success

5 最后

img

爱你!

### 部署 acme.sh 实现 SSL 证书自动化管理 #### 准备工作 为了确保顺利安装和配置 `acme.sh`,需要先确认系统已更新至最新状态并安装必要的依赖工具。 ```bash sudo yum update -y sudo yum install git curl wget -y ``` #### 安装 acme.sh 通过 Git 下载最新的 `acme.sh` 脚本文件: ```bash curl https://get.acme.sh | sh ``` 这段命令会自动完成 `acme.sh` 的下载、编译以及安装过程。它还会创建一个定时任务来定期检查并续订即将过期的证书[^1]。 #### 设置 Web 服务器支持 对于 Apache 用户来说,重要的是要保证 `mod_ssl` 已经被正确加载。如果尚未安装此模块,则可以通过下面这条指令来进行安装: ```bash sudo yum -y install mod_ssl ``` 这一步骤确保了 HTTPS 请求能够得到妥善处理,并允许后续步骤中生成的 SSL/TLS 证书生效[^4]。 #### 自动化域名验证与证书签发流程 假设已经拥有一个正在运行中的网站服务,在 `/var/www/html/yourdomain/.well-known/acme-challenge/` 创建目录用于存放 Let's Encrypt 所需挑战响应文件。接着修改该路径下的权限以便于 web server 可读取这些临时文件。 ```bash mkdir -p /var/www/html/yourdomain/.well-known/acme-challenge/ chmod 755 /var/www/html/yourdomain/.well-known/acme-challenge/ ``` 现在可以执行如下命令让 `acme.sh` 自动生成所需的 SSL 证书: ```bash ~/.acme.sh/acme.sh --issue \ -d yourdomain.com \ -w /var/www/html/yourdomain ``` 上述操作完成后将会获得一对新的私钥及其对应的公钥证书存放在指定位置下,默认情况下位于用户的 home 文件夹内 `.acme.sh/yourdomain.com_ecc/`. #### 将新获取到的证书应用到实际环境中去 最后一步就是把刚产生的证书复制给 apache 使用, 并重启 httpd 使更改立即生效. ```bash ~/.acme.sh/acme.sh --install-cert -d yourdomain.com \ --cert-file /etc/pki/tls/certs/yourdomain.crt \ --key-file /etc/pki/tls/private/yourdomain.key \ --fullchain-file /etc/pki/tls/certs/fullchain.cer \ --reloadcmd "systemctl restart httpd" ``` 至此整个基于 CentOS 7 的 acme.sh 安装配置教程就全部结束了。未来每当接近有效期时,`acme.sh` 便会自动尝试重新申请更新版本的证书而无需人工干预。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值