参考文献

https://github.com/acmesh-official/acme.sh/wiki/Run-acme.sh-in-docker
https://letsencrypt.org/zh-cn/getting-started/

不会就去可视化申请,但是有限制https://letsencrypt.osfipin.com/

cat ssl.yaml

version: '3.8'  # 可以根据需要选择不同的版本

services:
  acme:
    image: neilpang/acme.sh
    container_name: acme.sh
    volumes:
      - ./out:/acme.sh  
     #network_mode: host  # 使用宿主机网络
    command: daemon

进入容器

docker exec -it acme.sh /bin/sh

设置 Let's Encrypt 为默认 CA

acme.sh --set-default-ca --server letsencrypt

申请证书: 接下来,再次尝试申请证书,使用 –webroot 参数

这个参数是指定申请下来的的文件夹

acme.sh --issue -d www.xiaoliu.xn--6qq986b3xl --webroot /acme.sh

手动阿里云生成一个dns,手动更新dns

acme.sh --issue --dns -d www.xiaoliu.xn--6qq986b3xl --yes-I-know-dns-manual-mode-enough-go-ahead-please 

20241129232054

把这个txt加入到你的阿里云的域名解析dns中

20241129232101

然后去阿里云检测是否生效

https://boce.aliyun.com/detect/dns?spm=a2c1d.8251892.domain-setting.ddetect.b4cc5b76tLeHI4&target=_acme-challenge.www.xiaoliu.%E6%88%91%E7%88%B1%E4%BD%A0&type=TXT

20241129232121
获取命令看记录是否存在

20241129232130

dns记录成功后再次执行

acme.sh --renew -d www.xiaoliu.xn--6qq986b3xl --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please

20241129232139

特定文件夹保存

acme.sh --renew -d www.xiaoliu.xn--6qq986b3xl --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please --cert-home /path/to/cert

阿里云api方式dns校验

https://usercenter.console.aliyun.com/#/manage/ak
步骤 1: 获取阿里云 API 凭证
登录到阿里云控制台。
导航到 AccessKey 管理 页面,创建一个新的 AccessKey(Access Key ID 和 Access Key Secret)。
记下这两个凭证。

20241129232152

首次申请

AliDNS_AccessKeyID="你的AccessKeyID" AliDNS_AccessKeySecret="你的AccessKeySecret"    acme.sh --issue -d qinglong.xiaoliu.xn--6qq986b3xl --dns dns_ali --yes-I-know-dns-manual-mode-enough-go-ahead-please

中文域名申请

先拿txt记录

acme.sh --issue --dns -d ssl.xiaoliu.xn--6qq986b3xl --yes-I-know-dns-manual-mode-enough-go-ahead-plea

安装模块

pip3 install aliyun-python-sdk-core aliyun-python-sdk-alidns

python3 中英转换域名申请.py

import aliyunsdkcore.client
from aliyunsdkalidns.request.v20150109.AddDomainRecordRequest import AddDomainRecordRequest

# 初始化阿里云 API 客户端
client = aliyunsdkcore.client.AcsClient('Your_AccessKey_ID', 'Your_AccessKey_Secret', 'cn-hangzhou')

# 创建添加域名记录的请求
request = AddDomainRecordRequest()
request.set_DomainName("xiaoliu.我爱你")
request.set_RR("_acme-challenge.ssl")
request.set_Type("TXT")
request.set_Value("你从 acme.sh 获取的 TXT 记录值")

# 执行 API 请求
response = client.do_action_with_exception(request)
print(response)
****

添加完之后执行

acme.sh --issue --dns dns_ali -d "ssl.xiaoliu.xn--6qq986b3xl"

续订

AliDNS_AccessKeyID="你的AccessKeyID" AliDNS_AccessKeySecret="你的AccessKeySecret" acme.sh --renew -d www.xiaoliu.xn--6qq986b3xl --dns dns_ali --yes-I-know-dns-manual-mode-enough-go-ahead-please

查看证书信息

openssl s_client -connect www.xiaoliu.xn--6qq986b3xl:443