acme.sh生成通配符SSL证书
1、下载 acme.sh
curl https://get.acme.sh | sh
2、配置阿里云域名DNS密钥
以阿里云为例,你需要先登录到阿里云账号,生成你自己的 api id 和 api key,它是免费的 (建议开启阿里云【RAM 访问控制】,只给AliyunDNSFullAccess权限策略,这样做更安全)
export Ali_Key="<key>"
export Ali_Secret="<secret>"
3、创建证书存放目录
mkdir -p /etc/nginx/ssl
chown -R $USER /etc/nginx/ssl
你可以修改默认CA服务商为 letsencrypt,原默认为zerossl
./acme.sh --set-default-ca --server letsencrypt
参考 https://github.com/acmesh-official/acme.sh/wiki/Server
4、安装到nginx
./acme.sh --issue --dns dns_ali -d example.com -d *.example.com \
--keypath /etc/nginx/ssl/example.com.key \
--fullchainpath /etc/nginx/ssl/example.com.cer \
--reloadcmd "sudo nginx -s reload"
5、nginx使用ssl证书
listen 443 ssl;
ssl_certificate /etc/nginx/ssl/example.com.cer; # 替换证书文件
ssl_certificate_key /etc/nginx/ssl/example.com.key; # 替换证书密钥文件
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
重启nginx
sudo nginx -s reload
六、更新证书
# 升级 acme.sh 到最新版
./acme.sh --upgrade
# 查看所有证书
./acme.sh --list
# 移除某个证书
./acme.sh --remove -d example.com
# 手动更新
./acme.sh --renew -d example.com
# 自动更新(请确保 cronjob 正确安装, 看起来是类似这样的,路径可能不一样)
crontab -l
56 * * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null