acme生成通配符ssl证书
1.安装acme
curl | sh
安装完成后的目录在/root/./下面.
直接使用 cd /root/. 命令 进入.目录.
2.生成SSL证书
这里我们是用 DNS 验证方式。DNS 方式,需要手动在域名上添加一条 txt 解析记录,验证域名所有权。为了避免每次都需要手动解析验证域名所有权,我们使用域名解析商提供的 api 自动添加 txt 记录完成验证, 目前支持数十种解析商的自动集成,其中包含阿里云。以阿里云为例,你需要先登录到阿里云账号,生成你自己的 api id 和 api key,它是免费的 (建议开启阿里云【RAM 访问控制】,只给 AliyunDNSFullAccess 权限策略,这样做更安全)
可参考:/acmesh-official//wiki/dnsapi
然后执行下面的命令:
export Ali_Key="xxx" && export Ali_Secret="xxx"
# 因为生成的通配符域名证书中并不包含根域名证书,所以我们要指定根域名。
--issue --dns dns_ali -d -d *.
注意:请将 改为你自己的域名。
如果生成泛域名证书,需要先-d 主域名 再接泛域名 -d *.主域名
另外注意某一域名有频次限制,每小时5次,具体看官方文档
3.安装到nginx
./ --installcert -d \
--keypath /etc/nginx/ssl/ \
--fullchainpath /etc/nginx/ssl/
--reloadcmd "nginx -s reload"
配置
server {
listen 443 ssl;
server_name ;
ssl on;
ssl_certificate ssl/;
ssl_certificate_key ssl/;
location / {
proxy_pass http://127.0.0.1:8001;
}
}
# 80端口直接转到443
server {
listen 80;
server_name ;
return 301 https://$server_name$request_uri;
}
5.更新证书
生成的证书只有30天有效期,所以需要自行更新
5.1手动更新
--renew -d --force
5.2自动更新
安装 时会自动创建一个 cronjob,每天定期检查所有证书,如果证书需要更新会自动更新证书。
通过 crontab -l
查看 crontab 任务:25 0 * * * "/root/."/ --cron --home "/root/." > /dev/null
如果有该定时任务,则不需要额外配置。
6.移除证书
查看所有证书
--list
移除某个证书
--remove -d