Created: 2023-02-22 17:21 Modified: 2025-01-06 11:24
0x01 准备 ※
用法:
mkdir -pm 0700 "/{etc,var/log}/acme.sh"
add LOG_FILE='/var/log/acme.sh/acme.sh.log'
acme.sh --home /etc/acme.sh command ...[parameters]....
或者写个alias acme.sh="acme.sh --home /etc/acme.sh" # 需要root用户执行而不是sudo
第一次使用需要配置账号信息
acme.sh --register-account -m [email protected]
目前 acme.sh 支持 5 个正式环境 CA,分别是 Let's Encrypt、 Buypass、ZeroSSL、SSL.com 和 Google Public CA,默认使用 ZeroSSL,如果需要更换可以使用如下命令:
切换 Let's Encrypt
acme.sh --set-default-ca --server letsencrypt
切换 Buypass
acme.sh --set-default-ca --server buypass
切换 ZeroSSL
acme.sh --set-default-ca --server zerossl
切换 SSL.com
acme.sh --set-default-ca --server ssl.com
切换 Google Public CA
acme.sh --set-default-ca --server google
几个 CA 的简单对比
功能 | LE | Buypass | ZeroSSL | SSL.com | Google Public CA |
---|---|---|---|---|---|
有效期 | 90 天 | 180 天 | 90 天 | 90 天 | 90 天 |
多域名 | 支持 | 支持,最多 5 个 | 支持 | 收费支持 | 支持 |
泛域名 | 支持 | 不支持 | 支持 | 收费支持 | 支持 |
Rate Limit | 有 | 有 | 收费无 | 未知 | 有 |
GUI 管理 | 否 | 否 | 有 | 有 | 无 |
ECC 证书链 | 否 | 否 | 有 | 未知 | 无 |
客户支持 | 社区 | 收费 | 收费 | 收费 | 收费 |
简单来说,如果没有特殊需求,可以选择 Let's Encrypt,如果服务器在国内,可以选择 ZeroSSL 或 Buypass,如果愿意付费得到更好的服务和保障,可以选择 ZeroSSL 和 SSL.com,如果面向欧盟用户,可以选择 Buypass 和 ZeroSSL。
注意:经过测试 Google Public CA 的 ACME 验证域名在国内是无法访问的,只有国外服务器才可以申请,申请完成后的证书并无影响。
0x02 签发证书※
Webroot mode:
acme.sh --issue -d ‘example.com‘ -w /home/wwwroot/example.com
Apache / Nginx mode:
acme.sh --issue -d ‘example.com‘ --nginx # Nginx
acme.sh --issue -d ‘example.com‘ --nginx /etc/nginx/conf.d/example.com.conf # 或指定网站的conf
Standalone mode:
# http模式
acme.sh --issue -d ‘example.com‘ --standalone。
acme.sh --issue -d ‘example.com‘ --standalone --httpport 88 #也可以指定端口
# tls模式
acme.sh --issue -d ‘example.com‘ --alpn
acme.sh --issue -d ‘example.com‘ --alpn --tlsport 8443 # 也可以指定端口
DNS API mode:
# Cloudfare的Token在这里获得,Account_ID在管理页下方。
export CF_Token="xxxxxxxxxxxxxx"
export CF_Account_ID="xxxxxxxxxxxxx"
acme.sh --issue --dns dns_cf -d ‘example.com’
配置信息会保存在/etc/.acme.sh/account.conf
DNS manual mode:
# 如果域名服务商没有提供api,也可以通过添加TXT记录验证
acme.sh --issue -d ‘example.com‘ --dns -d ‘www.example.com‘
多域名签发:
acme.sh --issue -d ‘example.com‘ --standalone -d ‘www.example.com‘ # 只需要在验证方式之后添加多个 -d <YourDomainHere> 参数
泛域名配置:
acme.sh --issue -d ‘example.com‘ -d '*.example.com' --dns dns_cf
签发 ECC 证书:
acme.sh --issue -w /home/wwwroot/example.com -d ’example.com‘ -d ‘www.example.com‘ --keylength ec-256 # 多域名
0x03 安装配置:※
安装证书:
acme.sh --installcert -d example.com \
--key-file /path/to/keyfile/in/nginx/key.pem \
--fullchain-file /path/to/fullchain/nginx/cert.pem \
--reloadcmd "systemctl restart nginx"
配置nginx:
server {
server_name example.com;
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
# ...
# ssl 相关配置
ssl_certificate /etc/nginx/ssl/example.com.fullchain.cer;
ssl_certificate_key /etc/nginx/ssl/example.com.key;
ssl_dhparam /etc/nginx/ssl/dhparam.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers '[ECDHE-ECDSA-AES128-GCM-SHA256|ECDHE-ECDSA-CHACHA20-POLY1305|ECDHE-RSA-AES128-GCM-SHA256|ECDHE-RSA-CHACHA20-POLY1305]:ECDHE+AES128:RSA+AES128:ECDHE+AES256:RSA+AES256:ECDHE+3DES:RSA+3DES';
ssl_prefer_server_ciphers on;
# ...
}
0x04 后事※
更新证书:
acme.sh --renew -d example.com --force (--ecc)
查看证书列表
acme.sh --list
停止更新
acme.sh --remove -d example.com (--ecc)
0x05 跋※
如何查看证书有效期
openssl x509 -in signed.crt -noout -dates # -in 传入文件路径
证书格式转换
施工中. . .