给主域名及二级域名统一证书,使用acme.sh生成免费泛域名证书
如何使用 acme.sh 来生成泛域名证书,
即主域名和所有该主域名下的所有二级域名都使用一个证书,省去了为每个域名都生成证书的麻烦。
各大云平台都有免费的单域名证书,但是泛域名证书基本上都是收费的,
比如:
阿里云的 GeoTrust 普通版通配符 DV SSL 通配符证书一年也要一千五左右
使用收费通配符泛域名证书 (我这里以我的阿里云项目为例)
1.单独使用,直接把证书下载下来放到你服务器上用,
比如:nginx
2.配合云平台的服务用,
比如:
我的cdn服务 , CDN/域名管理 里面看看下面截图
我这以阿里云平台为例
进入生成免费泛域名证书步骤:
1.安装acme.sh (参考下面文章)
https://www.zongscan.com/demo333/89509.html
2.域名验证
为了验证域名所有权,Let's Encrypt 支持两种方式来验证:
域名的 DNS:配置一个随机的 TXT 记录来验证
域名的访问:配置一个随机的 URL 地址来验证
推荐第一种 DNS 验证方式。
acme.sh 支持多种域名验证方式,详细列表点这里。
https://github.com/Neilpang/acme.sh#7-automatic-dns-api-integration
3.配置阿里云key
acme.sh访问阿里云DNS是通过阿里云DNS公开API以及用户的AccessKey来进行交互的。
我简单说一下流程 (具体操作就写了,自行去搜索):
登录你的阿里云账号->点击右上角的头像
->点击AccessKey 管理->点击开始使用子账户 AccessKey->创建acme.sh专用账户
账号授权
创建好了之后就账户授权 -> 添加管理云解析(DNS)的权限就OK了
账户创建密钥
点击账户管理按钮->创建AccessKey
弹出创建成功对话框,对话框里显示了“AccessKeyId”和“AccessKeySecret”,保存下来。
4.添加配置
在.bashrc 里添加
export Ali_Key="AccessKeyId"
export Ali_Secret="AccessKeySecret"
然后
source ~/.bashrc
5.颁发证书
DNS 验证 / 进行泛域名进行颁发。
acme.sh --issue --dns dns_ali -d mydomain.com -d *.mydomain.com
这里会进行域名的 DNS 验证,中间会等待 120 秒来验证正确性,验证成功后会有成功标记
如下:
Sleep 120 seconds ...
...
Success
...
Cert success.
该命令执行后,会在计划表里添加计划。
使用 下面命令查看
crontab -l
生成证书 (我这以nginx为例)
颁发证书并且将证书安装到指定位置,并最后重启 nginx。
acme.sh --issue --dns dns_ali -d mydomain.com -d *.mydomain.com\
--installcert\
--key-file /etc/nginx/cert.d/mydomain.com.key\
--fullchain-file /etc/nginx/cert.d/mydomain.com.pem\
--reloadcmd "nginx -s reload"
看到以下字样表示成功了
Reload success
扩展知识
nginx配置文件
server
{
listen 443 ssl;
ssl_certificate /etc/nginx/cert.d/mydomain.com.pem;
ssl_certificate_key /etc/nginx/cert.d/mydomain.com.key;
}
acme.sh 管理
查看添加网站的列表
acme.sh --list
删除之前添加的域名
acme.sh --remove -d mydomain.com
查看更多
acme.sh --help
相关文章