给主域名及二级域名统一证书,使用acme.sh生成免费泛域名证书

2023-06-01 00:00:00 生成 证书 域名

如何使用 acme.sh 来生成泛域名证书,

即主域名和所有该主域名下的所有二级域名都使用一个证书,省去了为每个域名都生成证书的麻烦。

各大云平台都有免费的单域名证书,但是泛域名证书基本上都是收费的,

比如:

阿里云的 GeoTrust 普通版通配符 DV SSL 通配符证书一年也要一千五左右


使用收费通配符泛域名证书 (我这里以我的阿里云项目为例)


1.单独使用,直接把证书下载下来放到你服务器上用,

比如:nginx


2.配合云平台的服务用,

比如:

我的cdn服务 , CDN/域名管理 里面看看下面截图

1.png


我这以阿里云平台为例

进入生成免费泛域名证书步骤:


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

相关文章