CentOS下自动申请、部署Let's Encrypt免费SSL证书教程(Nginx亲测)

本文介绍如何在 CentOS7 + Nginx 环境下,安装使用 Let's Encrypt 免费 SSL 证书。

  • 1.防火墙和安全组放行 80 端口(后续配置 HTTPS 访问再自行放行 443 端口)

  • 2.确保域名已经解析到了你在申请证书的服务器 IP 上

  • 3.确保 Nginx 配置无误,指:http://example.com/.well-known/acme-challenge/ 下临时生成的认证文件可以被访问到。

1,准备工作

(1)首先安装 Nginx 服务器,并确保正常运行, 临时文件可以访问

server {
		...

        # Let's Encrypt 证书认证(优先级最高放在最前面)
        location ~ /.well-known {
            root /usr/share/nginx;
            allow all;
        }
}

(2)服务器要开放 80 口及 443 端口:

firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --reload

(3)在域名服务器创建一条 A 记录,指向服务器的公网 IP 地址。比如我这里使用 demo.niubi.com 这个域名。等域名解析生效后,访问 http://demo.niubi.com 可以看到如下页面则说明域名解析成功:

2,安装 certbot 工具

我们采用 certbot 脚本方式申请 let's encript 证书,依次执行如下命令安装该工具:

3,申请证书

(1)接下来我们要使用 certbot 命令初次申请证书,命令格式如下: 注意:联系人 email 地址最好填写真实有效的地址,Let's Encrypt 会在证书在过期以前发送通知提醒邮件。

(2)这里我执行如下命令申请,大家根据实际情况修改:

(3)申请成功后,证书会保存在 /etc/letsencrypt/live/demo.niubi.com/ 下面:

(5)使用如下命令可以查看证书的有效期:

4,更新证书

(1)Let's Encrypt 证书的有效期是 90 天,需要长期使用的话,需要在失效前进行延长申请。我们可以执行如下命令去更新:

2)我们也可以将更新证书的脚本写到定时任务来自动完成,免得我们手动操作。首先执行如下命令开始编辑定时任务:

(3)此时会进入 vi 的编辑界面让你编辑工作(每项工作都是一行)。我们在末尾添加如下一行内容,表示每月 1 号 5 时会执行执行一次更新,并重启 nginx 服务器:

(4)保存后退出,执行 crontab -l 命令可以查看 crontab 服务是否创建成功:

5,配置 Nginx

(1)首先执行如下命令生成 Perfect Forward Security(PFS)键值:

(2)接着编辑 nginx 配置文件:

(3)首先修改默认的 server 配置:

(4)接着将 HTTPS server 配置前面的注释(#)去掉,把内容改成如下:

(5)保存退出后,重启 nginx 服务:

(6)再次使用浏览器访问 http://demo.niubi.com,如果正常跳转到 https://demo.niubi.com,并且地址栏有个小锁图标则说明 https 配置成功了

Last updated