如何使用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.crt
和ca_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并在发现时进行修复。