ACME(自动证书管理环境)是一个互联网工程任务组维护的协议,它允许自动化 Web 服务器证书的部署,acme.sh 是支持 ACME 协议流行的客户端之一,可以通过其实现 SSL 证书的自动申请、续期等。本文将为您介绍如何使用 acme.sh 自动申请证书。
安装 acme.sh
全新安装
适用于未安装 acme.sh 的用户,使用以下命令安装 acme.sh 客户端:
安装 acme.sh
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 客户端:
acme.sh --upgrade
获取腾讯云 SecretId 和 SecretKey
方式一:使用主账号 API 密钥
2. 单击新建密钥,创建 API 密钥,并记录保存 SecretId 和 SecretKey。
方式二:使用子账号 API 密钥
步骤一:新建权限策略
2. 选择按策略语法创建 > 空白模板,填写基本信息,并将策略语法修改为以下内容,并单击完成。
{"statement": [{"action": ["dnspod:DescribeRecordFilterList","dnspod:DescribeRecordList","dnspod:CreateRecord","dnspod:DeleteRecord"],"effect": "allow","resource": ["*"]}],"version": "2.0"}
说明:
步骤二:新建子账号并关联权限策略
2. 在新建用户页面,选择快速创建。填写用户信息,并选择编程访问。
3. 在快速新建用户页面,填写用户信息,并选择编程访问。
4. 配置用户权限,仅选择刚刚创建的权限策略,并单击确定。
5. 单击创建用户,完成子账号创建。
6. 记录保存 SecretId 和 SecretKey。
申请证书
1. 将获取到的 SecretId 和 SecretKey 导入环境变量中,以便 acme.sh 调用。
export Tencent_SecretId="<Your SecretId>"export Tencent_SecretKey="<Your SecretKey>"
例如:
export Tencent_SecretId="AKIDxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"export Tencent_SecretKey="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
2. 使用 acme.sh 申请证书,例如:
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 为例。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 为例,示例如下:
server {listen 443 ssl http2;server_name example.com;# 请替换为证书实际路径ssl_certificate /path/to/keyfile/in/nginx/cert.pem;ssl_certificate_key /path/to/fullchain/nginx/key.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;}}
注意:
完成后请重载服务。
联系我们