acme.sh签发泛域名证书【含签发失败处理方式】

acme.sh签发泛域名证书【含签发失败处理方式】

目录前言生成证书的方式部署过程获取dnspod域名解析id和Key注册账号+生成证书更新证书失败?不要慌,有方法!别走,还有其他内容你也需要了解

前言

使用acme.sh原由:因为项目使用到的子域名比较多,公司没有购买泛域名证书,证书到期后一个个替换太麻烦了,所以使用acme.sh来生成泛域名证书,虽然有效周期较短,但是可以自动续期,还是比较完美的。

环境:docker swarm集群,使用docker stack来部署应用

反向代理:traefik

生成证书的方式

方式一:通过http方式,该种方式是通过访问.well-known目录下的文件来实现,也就是说需要再单独搭建一个服务供acme访问

方式二:通过dns方式,需要自动添加dns txt记录来进行验证,该种方式需要提供操作dns的secret key 和secret id。比如使用的是阿里云,那么可以在控制台获取到id 和key

在本文中,采用第二种部署方式【dnspod解析】。

部署过程

docker network create --driver=overlay my_proxy

vim acme.yaml

version: '3'

services:

acme:

image: neilpang/acme.sh:3.0.0

volumes:

- ./nginx:/var/www

- ./acme.sh:/acme.sh # dns方式生辰的证书所在目录/acme.sh/域名/证书文件

command: daemon

environment:

HTTP_PROXY: "http://192.168.1.77:7890" # 因为需要访问墙外所以设置了代理

HTTPS_PROXY: "http://192.168.1.77:7890"

networks:

- my_proxy

networks:

my_proxy:

external: true

获取dnspod域名解析id和Key

注册账号+生成证书

进入acme.sh容器内部,执行以下命令

/ # acme.sh --register-account -m xxx@163.com

/ # export DP_Id="一串数字"

/ # export DP_Key="xxx"

acme.sh --issue --dns dns_dp -d xxx.com -d *.xxx.com

有如下输出,表示证书签发成功

更新证书失败?不要慌,有方法!

遇到的问题:证书到期了,重新签发的时候一直提示sleep 10 and retry

排查思路:

1.acme.sh服务器是否能正常使用魔法

2.acme.sh调用证书签发服务器接口是否正常

3.域名token和id是否正确

故障确认:由于【排查思路中的第二种情况】无法正常更新证书

解决思路:

1.还是用同一个服务商但需要更换签发服务器接口地址(如从https://a-01.abc.com/qi换到https://a-02.abc.com/qi)

2.直接更换成可用的签发服务商

方案选择:第二种【直接更换签发服务商】,从zerossl换成letsencrypt

acme.sh支持的所有服务商:Server · acmesh-official/acme.sh Wiki (github.com)

具体更换步骤:

1.acme.sh更新:acme.sh upgrade

2.切换默认签发服务商为letsencrypt:acme.sh --set-default-ca --server letsencrypt

或者在注册账号时指定签发服务:acme.sh --register-account -m 邮箱地址 --server letsencrypt

3.执行签发命令:acme.sh --issue --dns dns_dp -d xxx.com -d *.xxx.com ## 成功!

4.证书位置:/acme.sh/xxx.com_ecc

别走,还有其他内容你也需要了解

在acme.sh容器中,我们配置了dns解析的id和key,以及注册的账号,这些信息都在【account.conf】文件中

域名签发相关信息的配置文件:/acme.sh/域名/【域名.conf】,如:我的域名是aaa.com,那么该配置文件是:/acme.sh/aaa.com/aaa.com.conf

大致内容如下:

Le_Domain='xxx.com'

Le_Alt='*.xxx.com'

Le_Webroot='dns_dp'

Le_PreHook=''

Le_PostHook=''

Le_RenewHook=''

Le_API='https://acme-v02.api.letsencrypt.org/directory'

Le_Keylength='ec-256'

Le_OrderFinalize='https://acme-v02.api.letsencrypt.org/acme/finalize/15067723dd6/235ccd027676'

Le_LinkOrder='https://acme-v02.api.letsencrypt.org/acme/order/15067723dd6/2d30ff27676'

Le_LinkCert='https://acme-v02.api.letsencrypt.org/acme/cert/03f26088e2d4ae1eb08a89053e32ff731a'

Le_CertCreateTime='1704769093'

Le_CertCreateTimeStr='2024-01-09T02:58:13Z'

Le_NextRenewTimeStr='2024-03-08T02:58:13Z'

Le_NextRenewTime='1709866693'

从配置文件中我们可以确认该域名使用的具体签发接口以及使用的算法等

欢迎交流:waqingwa01

相关推荐

Delphi动态调用C++写的DLL
365淘房APP官网下载

Delphi动态调用C++写的DLL

📅 07-03 👁️ 2019
湖南各地车牌号查询:湖南各地车牌号字母代表什么意思?
中国嘻哈流行地 你必须重新认识的四座城市
365淘房APP官网下载

中国嘻哈流行地 你必须重新认识的四座城市

📅 07-05 👁️ 1643
和百度说再见——中文搜索引擎推荐
365淘房APP官网下载

和百度说再见——中文搜索引擎推荐

📅 06-29 👁️ 1679
选北京画室怕踩坑?这份排名给你指条明路!
365bet官网欧洲

选北京画室怕踩坑?这份排名给你指条明路!

📅 06-27 👁️ 5790
尼尔机械纪元怎么自爆
监控sh365下载

尼尔机械纪元怎么自爆

📅 07-04 👁️ 4254
手机照片处理软件排行榜TOP10推荐
监控sh365下载

手机照片处理软件排行榜TOP10推荐

📅 07-08 👁️ 5898
揭秘:开超市利润赚钱大概有多大?一文详解超市盈利真相!
年度盘点丨2017十大最佳科技创新产品!
监控sh365下载

年度盘点丨2017十大最佳科技创新产品!

📅 07-13 👁️ 8536