CentOS7自动安装通配符域名SSH证书
概述
Let's Encrypt 是一个证书颁发机构(CA),要从 Let's Encrypt 获取证书,就必须证明对域名的实际控制权。
可通过遵守ACME协议的软件来从CA机构申请SSL证书,这类软件极大的简化了申请证书的过程。常见的ACME客户端有Certbot、Acme.sh等。
Cerbot:是Let's Encrypt官方推荐的客户端,Cerbot能够自动申请SSL证书,并配置Nginx、Apache等服务器,其自动化程度很高,但也非常复杂。
Acme.sh:是用户量非常大的ACME客户端,与Cerbot不相上下,但比Cerbot简单,操作更加方便。
笔者尝试Certbot后,已经放弃,推荐使用Acme.sh;
安装Acme.sh
详见官方文档:https://github.com/acmesh-official/acme.sh/wiki/%E8%AF%B4%E6%98%8E
## 安装acme
curl https://get.acme.sh | sh -s email=512113110@qq.com;
## 建立软链接
alias acme.sh=~/.acme.sh/acme.sh;
注:安全过程需要从Github下载安装包,由于网络和墙的原因,很可能会安装失败;请多次尝试,或换个时间段进行安装。
配置授权
申请通配符SSL证书时必须通过DNS进行域名所有属权验证;但每次申请SSL证书时的TXT域名解析记录值又都不一样,所以要给 Acme.sh 管理域名解析的权限,使其能够自动添加、删除域名的解析记录。以阿里云为例,要在阿里云控制台中添加子用户,并为此用户添加“AliyunDNSFullAccess”域名管理权限,然后将该用户的 AccessKey ID 和 AccessKey Secret 配置为系统变量,以供 Acme.sh 读取。(注:安全起见,可以进一步缩小子用户的权限,比如使其只能添加或删除TXT类型的域名解析记录)
a>. 设置为系统变量
export Ali_Key="***********";
export Ali_Secret="***********";
b>. 查看系统变量
echo $Ali_Key;
echo $Ali_Secret;
申请和安装证书
## 0.1> 申请证书
acme.sh --issue --dns dns_ali -d 'sidoc.cn' -d '*.sidoc.cn'
## 0.2> 安装证书
## 复制证书至指定目录,并重启Nginx
acme.sh --install-cert -d sidoc.cn \
--key-file /var/www/ssl/sidoc.cn.key \
--fullchain-file /var/www/ssl/sidoc.cn.crt \
--reloadcmd "service nginx force-reload"
注:若申请过程中提示“You don't specify aliyun api key and secret yet”,很可能是因为安装方式或执行方式有问题;解决方式有两种,如下 :
a>. 如果申请证书执行的命令是”/root/.acme.sh/acme.sh”,就请切换为“acme.sh”尝试;
b>. 如果上述方式无效,就请删除Acme.sh后,重新安装。