美文网首页
用acme的DNS方式配置泛域名

用acme的DNS方式配置泛域名

作者: 宇VS然 | 来源:发表于2023-01-11 15:10 被阅读0次

    使用acme生成免费证书,使用DNS的验证方式生成的证书,可以添加泛解析ssl证书。

    hithub地址:https://github.com/acmesh-official/acme.sh

    1, 安装acme.sh

    执行命令:

    curl https://get.acme.sh | sh
    

    由于是从github下载文件,所以第一次可能安装失败,可以多执行几次,或者从这里下载安装:https://gitee.com/neilpang/acme.sh

    安装成功后,会自动生成一条定时任务,可执行crontab -l 查看。

    33 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null
    

    2, DNS方式生成证书

    有多种方式生成证书,但是只有DNS方式是支持泛域名的,所以这里只对DNS方式做说明,其他方式参见官方文档

    a, 手动 dns 方式, 手动在域名上添加一条 txt 解析记录, 验证域名所有权

    使用这种方式 acme.sh 将无法自动更新证书,每次都需要手动再次重新解析验证域名所有权。

    执行命令,生成证书

    acme.sh --issue --dns -d your_domain.com \
     --yes-I-know-dns-manual-mode-enough-go-ahead-please
    

    acme.sh 会生成相应的解析记录显示出来, 只需要在你的域名管理面板中添加这条 txt 记录即可.

    等待解析完成之后,执行命令,重新生成证书:

    acme.sh --renew -d your_domain.com \
      --yes-I-know-dns-manual-mode-enough-go-ahead-please
    

    b, 自动添加txt记录 (推荐)

    dns 方式的真正强大之处在于可以使用域名解析商提供的 api 自动添加 txt 记录完成验证.

    acme.sh 目前支持 cloudflare, dnspod, cloudxns, godaddy 以及 ovh 等数十种解析商的自动集成.

    以阿里云为例,需要先登录到阿里云账号, 生成 key 和 secret(建议用子账号申请,开通子账户用户解析dns能力), 都是免费的. 然后执行命令完成配置:

    export Ali_Key="xxxxxx"
    
    export Ali_Secret="xxxxx"
    
    

    执行命令,生成泛域名证书:(会自动在域名所属服务器添加解析记录:_acme-challenge)

    acme.sh --issue --dns dns_ali  -d your_domain.com -d *.your_domain.com
    

    3,copy/安装 证书

    前面证书生成以后, 接下来需要把证书 copy 到真正需要用它的地方.

    注意, 默认生成的证书都放在安装目录下: ~/.acme.sh/, 请不要直接使用此目录下的文件, 例如: 不要直接让 nginx/apache 的配置文件使用这下面的文件. 这里面的文件都是内部使用, 而且目录结构可能会变化.

    正确的使用方法是使用 --install-cert 命令,并指定目标位置, 然后证书文件会被copy到相应的位置, 例如:

    Nginx example:

    acme.sh --install-cert -d your_domain.com \
    --key-file       /path/to/keyfile/in/nginx/key.pem  \
    --fullchain-file /path/to/fullchain/nginx/cert.pem \
    --reloadcmd     "service nginx force-reload"
    

    (一个小提醒, 这里用的是 service nginx force-reload, 不是 service nginx reload, 据测试, reload 并不会重新加载证书, 所以用的 force-reload)

    Nginx 的配置 ssl_certificate 使用 /etc/nginx/ssl/fullchain.cer ,而非 /etc/nginx/ssl/<your_domain>.cer ,否则 SSL Labs 的测试会报 Chain issues Incomplete 错误。

    4,修改对应nginx配置,开启ssl,并重启nginx(略)

    相关文章

      网友评论

          本文标题:用acme的DNS方式配置泛域名

          本文链接:https://www.haomeiwen.com/subject/ebgbcdtx.html