Let’s Encrypt 是由 Internet Security Research Group (ISRG) 开发的一个自由、自动化和开放的证书颁发机构。目前几乎所有的现代浏览器都信任由 Let’s Encrypt 颁发的证书。
这个教程,将会一步一步的教你如何在 CentOS 7 上通过 Certbot 来生成 SSL 安全证书,并配置到 Nginx 上。
开始前的准备
在继续此教程之前,请确保你已经满足了以下两个条件:
- 请确保你已经拥有了一个属于你的域名,并且已经解析到了你的服务器 IP 上,在接下来的教程中,我将会用 kaifazhinan.com 作为本教程的域名。
- 请确保你已经启用了 EPEL 仓库,并且已经安装了 Nginx,如果你还没有安装 Nginx,你可以先阅读 如何在 CentOS 7 上安装 Nginx 这篇文章来安装 Nginx。
安装 Certbot
Certbot 是一个非常简单方便的工具,它可以帮助我们生成 SSL 证书,自动更新 SSL 证书,并且将证书配置到 Web 服务上。
可以运行以下命令,从 EPEL 仓库中安装 Certbot:
sudo yum install certbot
生成 Dh (Diffie-Hellman) 组
Diffie–Hellman 密匙交换是一种可以在不安全的通信信道上安全交换密钥的方法。
现在运行以下命令,可以来生成一个新的 2048 位的 DH 参数:
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
2048 位,生成时间大概 3-5 分钟左右。当然,如果您愿意也可以将大小改为 4096 位,但是这样的话,可能生成的时间至少需要花费 30 分钟,此操作具体时长取决于系统熵。
生成 SSL 证书
要生成域名的 SSL 证书,我们将使用 Webroot 插件在 ${webroot-path}/.well-known/acme-challenge
目录中创建临时文件来验证请求的域名。Let’s Encrypt 服务器会向临时文件发出 HTTP 请求,以验证请求的域名是否被正确的解析到了正在运行 Certbot 的服务器。
为了简便,我们将把所有访问 .well-known/acme-challenge
的 HTTP 请求都映