背景

在使用腾讯云或阿里云申请免费证书时,你可能已经注意到,有效期从原来的1年缩短到了3个月。这意味着你需要频繁更换证书,这无疑增加了维护工作量。幸运的是,我们可以使用acme.sh自动生成和更新证书,从此告别手动搬运证书的烦恼。

安装acme.sh

首先,在你的主机系统上安装acme.sh。执行以下命令进行安装:

curl https://get.acme.sh | sh -s email=你的邮箱

并创建 一个 shell 的 alias, 例如 .bashrc,方便你的使用: alias acme.sh=~/.acme.sh/acme.sh

获取腾讯云 SecretId 和 SecretKey

新建权限策略

1.进入到访问管理,点击策略

2024-05-22T06:31:17.png

2.点击新建自定义策略,选择按策略语法创建

2024-05-22T06:31:54.png

3.创建空模板,点击下一步

2024-05-22T06:33:31.png

4.将策略语法修改为以下内筒

{
    "statement": [
        {
            "action": [
                "dnspod:DescribeRecordFilterList",
                "dnspod:DescribeRecordList",
                "dnspod:CreateRecord",
                "dnspod:DeleteRecord"
            ],
            "effect": "allow",
            "resource": [
                "*"
            ]
        }
    ],
    "version": "2.0"
}

新建子账号并关联权限策略

1.进入访问管理,进入用户列表页面,点击新建用户,选择快速创建。

2024-05-22T06:33:59.png

2.修改访问方式为编程访问,选择用户权限,仅选择我们刚刚创建的权限,如下图展示。

2024-05-22T06:34:18.png

2024-05-22T06:34:37.png

3.保存SecretId和SecretKey

2024-05-22T06:34:58.png

申请证书

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

export Tencent_SecretId="<Your SecretId>"
export Tencent_SecretKey="<Your SecretKey>"

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

acme.sh --issue --dns dns_tencent -d 你的域名

运行后,acme.sh 将自动为您的域名申请证书,并将证书文件保存在 ~/.acme.sh/example.com/ 目录下。同时,acme.sh 会为您的域名配置证书的自动续期任务,无需您手动操作。这样一来,您可以省去频繁更新证书的烦恼,享受更加便捷的管理体验。

安装证书

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

server {
    listen 443 ssl http2;

    server_name example.com;

    # 请替换为证书实际路径
    ssl_certificate ~/.acme.sh/example.com//key.pem;
    ssl_certificate_key ~/.acme.sh/example.com//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;
}

问题

在生成证书中可能会遇到timeout情况,重新执行命令就行。

2024-05-22T06:35:32.png

Last modification:May 22, 2024
If you think my article is useful to you, please feel free to appreciate