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后,重新安装。


举报

© 著作权归作者所有


0