原文作者:Amir Rawdat of F5

原文链接:为 NGINX 配置免费的 Let’s Encrypt SSL/TLS 证书

转载来源:NGINX 官方网站


NGINX唯一中文官方社区 ,尽在 nginx.org.cn

[编者按 —— 为 NGINX 配置 Let’s Encrypt 证书的操作指南博文(发布于 2016 年 2 月)已重定向到此处。原博文中的操作说明已弃用。

本文进行了更新,消除了对 certbot‑auto 的依赖——电子前沿基金会 (EFF) 在面向 Debian 和 Ubuntu 的 Certbot 1.10.0 和面向其他所有操作系统的 Certbot 1.11.0中已弃用该工具。更多详细信息和替代安装方法,请参阅 EFF 的这篇博文.

另请参阅我们 nginx.conf 2015 发布的博文,其中电子前沿基金会的 Peter Eckersley 和 Yan Zhu 介绍了当时的新证书颁发机构 Let’s Encrypt。]

众所周知,网站的 SSL/TLS 加密会为您的用户带来更靠前的搜索排名和更出色的安全性。但目前有许多障碍阻碍了网站所有者采用 SSL。

其中两个最大障碍是证书获取成本高昂和所涉人工流程繁琐。而现在,有了 Let’s Encrypt,这些都不再是问题。Let’s Encrypt 支持所有人免费使用 SSL/TLS 加密。

Let’s Encrypt 是一家免费、开放、自动化的证书颁发机构 (CA)。是的,没错Let’s Encrypt颁发的 SSL/TLS 证书是免费的。现今的大多数浏览器都信任 Let’s Encrypt 颁发的证书,包括旧版浏览器,例如 Windows XP SP3 上的 Internet Explorer。此外,Let’s Encrypt 实现了证书颁发和更新的全自动化。

NGINX 对于成为 Let’s Encrypt 的赞助者之一感到非常骄傲,阅读 《支持开源,打造更安全的世界:F5 NGINX 宣布赞助 Let’s Encrypt 和 OpenSSL》一文了解更多。

本文介绍了如何使用 Let’s Encrypt 客户端生成证书,以及如何自动配置 NGINX 开源版和 NGINX Plus 以使用这些证书。

Let’s Encrypt 的工作原理

在颁发证书之前,Let’s Encrypt 会验证域名的所有权。在您的主机上运行的 Let’s Encrypt 客户端将创建一个临时文件(一个令牌),其中包含所需的信息。然后,Let’s Encrypt 验证服务器会发出 HTTP 请求以检索文件并验证令牌,从而验证您域名的 DNS 记录是否解析到运行 Let’s Encrypt 客户端的服务器。

准备工作

在开始使用 Let’s Encrypt 之前,您需要:

  • 安装 NGINX 开源版或 NGINX Plus
  • 拥有或管理需安装证书的注册域名。如果没有注册域名,您可以在域名注册商处申请。
  • 创建一条 DNS 记录,将您的域名和服务器的公共 IP 地址关联。

现在您可以用NGINX 开源版或 NGINX Plus轻松设置 Let’s Encrypt (为了便于阅读,下文将统称为 NGINX)。

注: 我们在 Ubuntu 16.04 (Xenial) 上测试了本文所述的程序。

1、下载 Let’s Encrypt 客户端

首先,下载 Let’s Encrypt 客户端 certbot

如上所述,我们在 Ubuntu 16.04 上测试了相关指令,以下是在该平台上运行的相应命令:

如想了解此处相关配置代码,请点击文章《为 NGINX 配置免费的 Let’s Encrypt SSL/TLS 证书》查看。

使用 Ubuntu 18.04 和更高版本,替代 Python 3 版本:

如想了解此处相关配置代码,请点击文章《为 NGINX 配置免费的 Let’s Encrypt SSL/TLS 证书》查看。

2、设置NGINX

certbot可以自动完成 NGINX 的 SSL/TLS 配置修改。它会在您的 N 配置中查找并包含server_name指令(包含您的委托请求的域名)server在我们的示例中,域名为www.example.com

  1. 您在全新的 NGINX 安装上进行设置,请使用文本编辑器在**/etc/nginx/conf.d目录中创建一个名为域名的.conf文件(在我们的示例中为www.example。 com.conf**)。
  2. 使用server_name指令指定您的域名(如果域名有变体的话请指定):
    如想了解此处相关配置代码,请点击文章《为 NGINX 配置免费的 Let’s Encrypt SSL/TLS 证书》查看。
  3. 保存文件,然后运行以下命令来验证配置的语法并重新启动 NGINX:
    如想了解此处相关配置代码,请点击文章《为 NGINX 配置免费的 Let’s Encrypt SSL/TLS 证书》查看。

3、获取 SSL/TLS 证书

certbot 的 NGINX 插件负责重新配置 NGINX,并在必要时重新加载其配置。

  1. 运行以下命令,使用 NGINX 插件生成证书:
    $ sudo certbot --nginx -d example.com -d www.example.com
  2. 根据 certbot 的提示配置 HTTPS 设置,包括输入您的电子邮件地址并同意 Let's Encrypt 服务条款。
    证书生成后,NGINX 重新加载新设置。certbot 生成一条消息,显示证书成功生成,并指示证书在服务器上的位置。
    如想了解此处相关配置代码,请点击文章《为 NGINX 配置免费的 Let’s Encrypt SSL/TLS 证书》查看。
    注: Encrypt 90 节后让在证书中(在本例中,自动时间为 2017 年 12 月 12 日)。让更新证书的信息,请参阅“更新加密证书”

如果查看**域名.conf**,您会发现certbot已经进行了修改:

如想了解此处相关配置代码,请点击文章《为 NGINX 配置免费的 Let’s Encrypt SSL/TLS 证书》查看。

4、自动更新 Let's Encrypt 证书

Let's Encrypt 证书 90 天后将执行更新操作文件。我们建议您自动在此处,我们将一个cron添加到现有的cron中,以这一点。

  1. 打开crontab文件。
    如想了解此处相关配置代码,请点击文章《为 NGINX 配置免费的 Let’s Encrypt SSL/TLS 证书》查看。
  2. 添加certbot示例,命令设置为每天运行中,我们每天运行该命令。该命令检查服务器上的证书未来 30 是否正常使用本协议,如果是,则不要更新--quiet指示建议certbot生成输出。
    如想了解此处相关配置代码,请点击文章《为 NGINX 配置免费的 Let’s Encrypt SSL/TLS 证书》查看。
  3. 保存并文件。所有已安装的证书将自动更新并重新加载。

总结

那么,我们用SSL/来加密SSL/来注册域名证书,然后配置加密证书,更新更新更新。借助 NGINX 和 NGINX Encrypt Encrypt's's,您可以在加密证书中轻松安装Nx一个安全的网站。


NGINX唯一中文官方社区 ,尽在 nginx.org.cn

更多 NGINX 相关的技术干货、互动问答、系列课程、活动资源: