前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【转】使用 acme.sh 为在腾讯云(DNSPod)解析的域名自动申请证书

【转】使用 acme.sh 为在腾讯云(DNSPod)解析的域名自动申请证书

作者头像
保持热爱奔赴山海
发布2024-05-19 09:01:22
1970
发布2024-05-19 09:01:22
举报
文章被收录于专栏:DevOps

参考这篇文章,成功将腾讯云ECS上相关子域名的域名证书都改为了自动续签。

有需要可以参考下面的内容。

原文地址: https://r2wind.cn/articles/20230914.html

ACME(自动证书管理环境)是一个互联网工程任务组维护的协议,它允许自动化 Web 服务器证书的部署,acme.sh 是支持 ACME 协议流行的客户端之一,可以通过其实现 SSL 证书的自动申请、续期等等。一直以来,使用 acme.sh 为域名申请证书都是通过 DNSPod API 来实现的,但由于 DNSPod API 后续将不再维护,同时旧版DNSPod API 将不再有服务承诺,以及旧版 API 存在着接口不稳定、权限无法细分控制、国内站和国际站接口不统一等问题,因此笔者基于 dns_dp 脚本,适配了腾讯云 API3.0 版本(dns_tencent)。升级后的脚本将同时支持 DNSPod 国内站和国际站(暂仅支持国内站,国际站部分接口官方团队正在排期适配,预计 2024Q2 完成),不再需要针对国内站和国际站单独适配,同时支持使用子账号 API 密钥申请证书,权限可细分控制,接口更加稳定,使用更加方便、安全。

2023-09-25 更新:腾讯云 API3.0 脚本已合并到 acme.sh master 分支,可直接升级 acme.sh 后使用或通过一键安装脚本,无需再手动下载dev分支脚本。

安装 acme.sh

全新安装

适用于未安装 acme.sh 的用户,使用以下命令安装 acme.sh 客户端:

安装 acme.sh
代码语言:txt
复制
curl https://get.acme.sh | sh -s email=my@example.com
或者 
wget -O -  https://get.acme.sh | sh -s email=my@example.com

请将 my@example.com 替换为您的邮箱地址

旧版升级

适用于已安装 acme.sh 的用户,请运行以下命令升级 acme.sh 客户端:

代码语言:txt
复制
acme.sh --upgrade

获取腾讯云 SecretId 和 SecretKey

方式一:使用主账号 API 密钥

  1. 登录 腾讯云控制台,进入 访问管理 页面,点击左侧菜单栏的访问密钥,进入 API 密钥管理页面。

2.点击新建密钥,创建 API 密钥,并记录保存 SecretId 和 SecretKey。

方式二:使用子账号 API 密钥

步骤一:新建权限策略
  1. 登录 腾讯云控制台,进入 访问管理 页面,点击左侧菜单栏的策略,进入策略管理页面,并点击新建自定义策略

2.选择按策略语法创建-空白模板,填写基本信息,并将策略语法修改为以下内容,并点击完成创建。

代码语言:txt
复制
{
    "statement": [
        {
            "action": [
                "dnspod:DescribeRecordFilterList",
                "dnspod:DescribeRecordList",
                "dnspod:CreateRecord",
                "dnspod:DeleteRecord"
            ],
            "effect": "allow",
            "resource": [
                "*"
            ]
        }
    ],
    "version": "2.0"
}

如您需要更精细的权限控制,可根据实际需求修改策略语法,如配置资源六段式等,详情请参考 CAM-DNS 解析 DNSPod

步骤二:新建子账号并关联权限策略
  1. 登录 腾讯云控制台,进入 访问管理 页面,点击左侧菜单栏的用户列表,进入用户列表页面,并点击新建用户

2.选择快速创建,填写用户信息,并选择编程访问

3.配置用户权限,仅选择刚刚创建的权限策略,并点击确定保存。

4.点击创建用户,完成子账号创建,并记录保存 SecretId 和 SecretKey。

申请证书

将获取到的 SecretId 和 SecretKey 导入环境变量中,以便 acme.sh 调用。

代码语言:txt
复制
export Tencent_SecretId="AKIDxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
export Tencent_SecretKey="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

使用 acme.sh 申请证书,例如

代码语言:txt
复制
acme.sh --issue --dns dns_tencent -d example.com -d *.example.com

运行后,acme.sh 将自动为您的域名申请证书,并将证书文件保存在~/.acme.sh/example.com/目录下,并且会自动为您的域名配置证书自动续期任务,无需手动续期。

运行结果如下:

后续操作

安装证书

acme.sh 不建议直接使用~/.acme.sh/目录下的证书文件,而是通过 acme.sh 提供的命令将证书安装到指定位置,以确保证书的正确使用和续期,详情请参考 Install the cert to Apache/Nginx etc,以下以Nginx为例。

代码语言:txt
复制
acme.sh --install-cert -d example.com \
--key-file /path/to/keyfile/in/nginx/key.pem  \
--fullchain-file /path/to/fullchain/nginx/cert.pem \
--reloadcmd "service nginx force-reload"

请将example.com替换为您的域名,/path/to/keyfile/in/nginx/key.pem和/path/to/fullchain/nginx/cert.pem替换为证书实际路径,service nginx force-reload替换为您使用的 web 服务重载命令

完成申请后请将证书配置到您的网站中,以 Nginx 为例,示例如下:

代码语言:txt
复制
server {
    listen 443 ssl http2;

    server_name example.com;

    # 请替换为证书实际路径
    ssl_certificate /path/to/keyfile/in/nginx/key.pem;
    ssl_certificate_key /path/to/fullchain/nginx/cert.pem;

    ssl_session_timeout 5m;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305;
    ssl_prefer_server_ciphers off;
    ssl_prefer_server_ciphers on;
    location / {
        root /nginx/www/html;
    }
}

完成后不要忘记重载服务哦~

现在,请尽情享受 HTTPS 带来的安全吧!

本文系转载,前往查看

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

本文系转载前往查看

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装 acme.sh
    • 全新安装
      • 旧版升级
      • 获取腾讯云 SecretId 和 SecretKey
        • 方式一:使用主账号 API 密钥
          • 方式二:使用子账号 API 密钥
          • 申请证书
          • 后续操作
            • 安装证书
            相关产品与服务
            SSL 证书
            腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档