Certbot是一款免费且开源的自动化安全证书管理工具,由电子前沿基金会(EFF)开发和维护,是在Linux、Apache和Nginx服务器上配置和管理SSL/TLS证书的一种机制。Certbot可以自动完成域名的认证并安装证书。
yum install epel-release -y
yum install certbot -y
如果提示
需要重新安装 python-urllib3
此时需要将原来的 Python 文件备份,或者删除,这里使用了备份
mv /usr/lib/python2.7/site-packages/urllib3/packages/ssl_match_hostname /usr/lib/python2.7/site-packages/urllib3/packages/ssl_match_hostname.bak
然后再执行安装 python-urllib3
yum install python-urllib3 -y
成功之后:
域名分为主域名和泛域名;例如百度主域名为: baidu.com ; 百度其他的二级域名的泛域名为: *.baidu.com
执行以下命令生成证书:
# 泛域名:
certbot certonly -d *.使用自己的域名替换.com --manual --preferred-challenges dns
# 主域名:
certbot certonly -d 使用自己的域名替换.com --manual --preferred-challenges dns
会提示你输入邮箱,用来做想过通知,尽量使用自己的邮箱就行,不建议乱输入
一直点 y 同意使用协议,同意邮箱接收信息,然后会提示需要 配置 DNS TXT 解析记录
我这儿是阿里云,阿里云配置 DNS TXT 解析记录如下:
进入阿里云控制中心 ——》 找到域名解析设置 ——》 添加新纪录 :
记录类型选择 TXT-文本
主机记录填入控制台提供的二级域名: _acme-challenge
解析请求来源选择默认
记录值填入上面控制台打印出来的记录值: v4fa*********************8AoIeM(使用自己控制台的值,不要复制文档,文档仅供参考)
然后 保存,等待生效即可
配置好之后,按回车继续
等待结果相应:
此时,证书就已经生成成功了,但是只有三个月有效期
我的域名都是使用ngnix反向代理的,所以这里就使用ngnix最配置
server {
listen 443 ssl;
server_name www.test.替换自己的域名.cn test.替换自己的域名.cn;
# ssl证书地址
ssl_certificate /etc/letsencrypt/live/yunyechuang.cn/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yunyechuang.cn/privkey.pem;
# ssl验证相关配置
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
# 反向代理的服务
location /secretWJJ {
proxy_pass http://127.0.0.1:7011;
}
}
在 ngnix 目录下执行
# 检查NGINX配置是否正确
./sbin/nginx -t
文件正确,重启 NGINX
./sbin/nginx -s reload
使用 https 协议 再次访问你的域名,发现链接已经是安全的了
Certbot 是使用的Let’s Encrypt申请的免费证书,只有 3 个月的有效期,到期之后我们需要再次续期才能继续使用 HTTPS 协议。
你需要自己记录证书到期的时间,在证书到期之前,从新生成一个新的证书
certbot certonly -d *.替换自己的域名.com --manual --preferred-challenges dns
然后根据步骤三中的 DNS TXT 解析 步骤再配置一次即可,证书保存位置没有变化的话,NGNIX 不需要更新配置。
每次都手动配置 DNS 解析挺麻烦的,而且还容易遗忘,更新不及时容易造成服务崩坏。
certbot 提供了一个 hook,可以编写一个 Shell 脚本,在需要续期的时候让脚本调用 DNS 服务商的 API 接口动态添加 TXT 记录,验证完成后再删除此记录,达到自动续期的效果。
我使用的是阿里云服务,找到 justjavac 大神写好的脚本:
GitHub 项目 certbot-dns-aliyun
项目地址: https://github.com/justjavac/certbot-dns-aliyun
安装和使用指南大神在README 中有详细说明,不做赘述