小米路由器mini做网站,wordpress 最强大主题,模型网站,建设部注册人员查询前言
Certbot是一款免费且开源的自动化安全证书管理工具#xff0c;由电子前沿基金会#xff08;EFF#xff09;开发和维护#xff0c;是在Linux、Apache和Nginx服务器上配置和管理SSL/TLS证书的一种机制。Certbot可以自动完成域名的认证并安装证书。
一、 安装软件
1.1…前言
Certbot是一款免费且开源的自动化安全证书管理工具由电子前沿基金会EFF开发和维护是在Linux、Apache和Nginx服务器上配置和管理SSL/TLS证书的一种机制。Certbot可以自动完成域名的认证并安装证书。
一、 安装软件
1.1安装 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反向代理的所以这里就使用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 协议。
4.1 手动续期
你需要自己记录证书到期的时间在证书到期之前从新生成一个新的证书
certbot certonly -d *.替换自己的域名.com --manual --preferred-challenges dns然后根据步骤三中的 DNS TXT 解析 步骤再配置一次即可证书保存位置没有变化的话NGNIX 不需要更新配置。
4.2 自动续期待验证
每次都手动配置 DNS 解析挺麻烦的而且还容易遗忘更新不及时容易造成服务崩坏。
certbot 提供了一个 hook可以编写一个 Shell 脚本在需要续期的时候让脚本调用 DNS 服务商的 API 接口动态添加 TXT 记录验证完成后再删除此记录达到自动续期的效果。
我使用的是阿里云服务找到 justjavac 大神写好的脚本 GitHub 项目 certbot-dns-aliyun 项目地址 https://github.com/justjavac/certbot-dns-aliyun 安装和使用指南大神在README 中有详细说明一下部分内容也是从 README 中复制过来的
4.2.1 使用 上诉脚本需要配置阿里云凭证信息
点击阿里云头像 ——》 控制访问 ——》创建一个拥有DNS权限的用户 这个用户不用太多权限所以有 OpenAPI 的调用访问即可 创建完成后在用户界面能看到 用户对应的AccessKey ID和AccessKey Secret了注意记得保存这两个值界面更新AccessKey Secret会消失如果没有保存导致这两个值消失点击新创建的用户名称进入详情页创建新的来替代 刷新界面后可为用户添加权限 权限只需要有 阿里云的DNS 操作权限即可 进入阿里云主机控制台 1 安装 aliyun cli 工具
wget https://aliyuncli.alicdn.com/aliyun-cli-linux-latest-amd64.tgz
tar xzvf aliyun-cli-linux-latest-amd64.tgz
sudo cp aliyun /usr/local/bin
rm aliyun2 将拥有 DNS 权限的角色配置到云服务器中
cd aliyun /usr/local/bin
aliyun configure --profile akProfile配置会进入交互式内容如下输入完成配置
Configuring profile akProfile in authenticate mode...
Access Key Id []: 在这里输入刚新建角色的 Access Key 然后回车进入下一项
Access Key Secret []: 在这里输入刚新建角色的 Access Key Secret 然后回车进入下一项
Default Region Id []: cn-hangzhou
Default Output Format [json]: json (Only support json))
Default Language [zh|en] en:
Saving profile[akProfile] ...Done.出现如下界面配置完成 4.2.2 安装 certbot-dns-aliyun 插件
wget http://cdn.jsdelivr.net/gh/justjavac/certbot-dns-aliyunmain/alidns.sh
sudo cp alidns.sh /usr/local/bin
sudo chmod x /usr/local/bin/alidns.sh
sudo ln -s /usr/local/bin/alidns.sh /usr/local/bin/alidns
rm alidns.sh4.2.3 测试是否能正确申请
certbot certonly -d *.替换自己的域名.com --manual --preferred-challenges dns --manual-auth-hook alidns --manual-cleanup-hook alidns clean --dry-run正式申请时去掉 --dry-run 参数
certbot certonly -d *.example.com --manual --preferred-challenges dns --manual-auth-hook alidns --manual-cleanup-hook alidns clean证书续期
certbot renew --manual --preferred-challenges dns --manual-auth-hook alidns --manual-cleanup-hook alidns clean --dry-run自动续期添加定时任务 crontab。
crontab -e输入
1 1 */1 * * root certbot renew --manual --preferred-challenges dns --manual-auth-hook alidns --manual-cleanup-hook alidns clean --deploy-hook nginx -s reload