如何使用Let’s Encrypt证书设置Nginx?

实现在Nginx中使用Let's Encrypt TLS证书的逐步指南。

使用TLS证书保护网站是必要的。有两个主要原因:

  • 用户设备到SSL/TLS卸载设备之间的安全数据传输
  • 提升谷歌搜索排名

最近,谷歌 announced在chrome浏览器中将没有https://的网站标记为“不安全”。

所以,是的,请说是HTTPS。

如果你经营的是一个博客、个人网站、非会员、非金融交易网站,那么你可以选择Let's Encrypt证书。

Let's Encrypt提供一个免费证书

然而,如果你接受金融交易,那么你可能想选择一个commercial certificate

让我们在Nginx中实现TLS……

我假设你已经安装并运行了Nginx,如果没有,请参考这个installation guide

有多种方法可以完成这个任务。

使用Certbot安装Let's Encrypt

这是最简单和推荐的安装方法之一。

Certbot提供了一个下拉菜单,您可以在其中选择web服务器和操作系统以获取说明。

我选择了Nginx和Ubuntu,如下所示。

然后,在Nginx服务器上执行以下命令来安装certbot插件。

# apt-get install software-properties-common
# add-apt-repository ppa:certbot/certbot
# apt-get update
# apt-get install python-certbot-nginx

一切正常后,就可以使用certbot插件在Nginx中安装证书。

您可以使用下面的命令,它将负责修改必要的文件来配置证书。

# certbot --nginx

它会检查现有的Nginx配置文件中的CN(通用名称),如果找不到,则会提示您输入。

例如:

root@instance-1:/etc/nginx/sites-available# certbot --nginx
正在将调试日志保存到 /var/log/letsencrypt/letsencrypt.log
已选择的插件:nginx的认证器,nginx的安装器
建立新的HTTPS连接(1):acme-v01.api.letsencrypt.org
您的配置文件中没有找到名称。请输入您的域名(用逗号和/或空格分隔)(输入'c'取消):bloggerflare.com
正在获取新的证书
执行以下挑战:
为bloggerflare.com进行http-01挑战
等待验证...
清理挑战
已部署证书到虚拟主机/etc/nginx/sites-enabled/default,用于bloggerflare.com
请选择是否重定向HTTP流量到HTTPS,删除HTTP访问。
-------------------------------------------------------------------------------
1:不重定向-不对web服务器配置进行进一步更改。
2:重定向-使所有请求重定向到安全的HTTPS访问。对于新站点或在您确信站点在HTTPS上工作的情况下,请选择此选项。您可以通过编辑您的web服务器配置来撤消此更改。
-------------------------------------------------------------------------------
选择适当的数字[1-2]然后[Enter](按'c'取消):2
正在将端口80上的所有流量重定向到/etc/nginx/sites-enabled/default中的ssl
-------------------------------------------------------------------------------
恭喜!您已成功启用https://bloggerflare.com
您应该在以下位置测试您的配置:
https://www.ssllabs.com/ssltest/analyze.html?d=bloggerflare.com
-------------------------------------------------------------------------------
重要提示:
-恭喜!您的证书和链已保存在:
   /etc/letsencrypt/live/bloggerflare.com/fullchain.pem
   已保存密钥文件:
   /etc/letsencrypt/live/bloggerflare.com/privkey.pem
   您的证书将于2018-05-27到期。要获取新的或修改过的
   以后的证书版本,只需再次运行certbot
   使用"certonly"选项。要非交互式地更新所有
   你的证书,运行"certbot renew"
-如果您喜欢Certbot,请考虑通过以下方式支持我们的工作:
   捐赠给ISRG / Let's Encrypt:https://letsencrypt.org/donate
   捐赠给EFF:https://eff.org/donate-le
root@instance-1:/etc/nginx/sites-available#

Certbot自动化是智能的!

正如您所看到的,它已经处理了所有必要的配置,使我的Nginx准备好提供https服务。

然而,如果您不希望Certbot为您修改配置,则只需请求以下命令。

# certbot --nginx certonly

上述命令不会进行任何修改,而只会向您提供证书,以便您可以按照您想要的方式进行配置。

但是如果您不能或不想使用Certbot怎么办呢?

手动过程

有很多方法可以获得由Let's Encrypt签发的证书,但其中一种推荐的方法是使用在线工具。

提供您的URL并根据验证方法进行操作。验证通过后,您将获得证书,私钥和CA。

下载它们,并将其传输到Nginx服务器。将它们保存在Nginx安装路径的ssl文件夹下(如果不存在,则创建)

root@instance-2:/etc/nginx/ssl# ls -ltr
-rw-r--r-- 1 root root 1704 Feb 26 10:04 private.key
-rw-r--r-- 1 root root 1647 Feb 26 10:04 ca_bundle.crt
-rw-r--r-- 1 root root 3478 Feb 26 10:57 certificate.crt
root@instance-2:/etc/nginx/ssl#

在进行配置修改之前,您需要将certificate.crtca_bundle.crt连接到一个文件中。我们将其命名为tlscert.crt

cat certificate.crt ca_bundle.crt >> tlscert.crt
  • 转到sites-available文件夹,并在各自的站点配置文件中添加以下内容
服务器 {
监听 443;
启用SSL;
ssl_certificate /etc/nginx/ssl/tlscert.crt;
ssl_certificate_key /etc/nginx/ssl/private.key;
}
  • 重新启动 Nginx
service nginx restart

尝试通过HTTPS访问相应的域名

所以,现在成功了!

作为Let's Encrypt的替代方案,您也可以使用ZeroSSL,其在here中有关实施的说明。

接下来,您可能希望测试您的网站以查找SSL/TLS vulnerability并在发现时进行修复。

类似文章