Ubuntu 16.04/17.10下Nginx使用Let’s Encrypt正确启用加密(2)

现在是时候弄脏你的手了。启动Ubuntu 16.04,让我们加密客户端包含在Ubuntu存储库。我的建议是,你从官方的Certbot PPA安装它,以获得最新版本。运行以下命令。如果要从PPA安装软件包,则需要使用software-properties-common。在默认的Ubuntu服务器Install上经常会丢失。 Python-certbot-nginx是Certbot的Nginx插件。

sudo apt install software-properties-common

sudo add-apt-repository ppa:certbot/certbot

sudo apt update

sudo apt install certbot python-certbot-nginx

要检查版本号,请运行:

certbot --version

示例输出:

certbot 0.19.0

使用Certbot Nginx插件启用HTTPS

如果您的网站没有使用CDN服务,那么建议使用Nginx插件在Nginx Web服务器上启用HTTPS,因为它可以自动获取SSL / TLS证书并为您进行配置。 在你的Ubuntu服务器上运行以下命令。

sudo certbot --nginx --agree-tos --redirect --uir --hsts --staple-ocsp --must-staple -d ,example.com --email your-email-address

说明:

-nginx:使用Nginx验证器和安装程序
-agree-tos:同意让我们加密服务条款
重定向:添加301重定向。
-uir:将“Content-Security-Policy:upgrade-insecure-requests”标题添加到每个HTTP响应。
-hsts:将Strict-Transport-Security头添加到每个HTTP响应。
-staple-ocsp:启用OCSP装订。
-must-staple:将OCSP必备装订扩展添加到证书。
-d标志后面跟着一个由逗号分隔的域名列表。 您最多可以添加100个域名。
– 电子邮件:用于注册和恢复联系人的电子邮件。
您将被问到是否要收到EFF(电子前沿基金会)的电子邮件。 选择Y或N后,您的SSL证书将自动获得并为您进行配置,如下面的消息所示。

Ubuntu 16.04/17.10下Nginx使用Let’s Encrypt正确启用加密

现在,如果您访问您的网站,您可以看到HTTP被自动重定向到HTTPS连接。 事实证明,Nginx插件目前不支持-hsts和–uir标志。 要手动添加HSTS和升级不安全请求标头,请编辑您的Nginx服务器块。

sudo nano /etc/nginx/conf.d/example.com.conf

在服务器块中添加以下两行。

add_header Strict-Transport-Security “max-age=15768000; preload” always;

add_header Content-Security-Policy upgrade-insecure-requests;

保存并关闭文件。 然后重新加载Nginx以使更改生效。

sudo systemctl reload nginx

测试您的SSL证书

转到ssllabs.com来测试您的SSL证书和配置。 正如我所承诺的那样,你得到了A +。 您还可以检查您的域名是否启用了CAA记录,您的服务器是否启用了HSTS,OCSP装订和OCSP必须装订。

Ubuntu 16.04/17.10下Nginx使用Let’s Encrypt正确启用加密

将WWW重定向到非WWW(或副本)

我们已经启用了将HTTP重定向到HTTPS,剩下的事情就是将www重定向到非www,反之亦然。 如果你使用WordPress,那么这很容易。 只需进入WordPress仪表板>设置>常规,并在WordPress地址和站点地址中设置您的首选版本(www或非www)。

Ubuntu 16.04/17.10下Nginx使用Let’s Encrypt正确启用加密

如果你走这条路线,你将会得到所谓的双重301重定向。 首先,Nginx服务器将HTTP重定向到HTTPS,然后WordPress重定向到www或非www域。 有些人可能会认为,双301重定向可以伤害您的网站的搜索引擎优化。 如果你担心这一点,那么你可以使用下面的方法,使所有域版本直接到最终目的地。

编辑你的Nginx服务器块。

sudo nano /etc/nginx/conf.d/example.com.conf

CertBot客户端将以下行添加到文件以将HTTP重定向到HTTPS。

if ($scheme != “https”) {
return 301 https://$host$request_uri;
} # managed by Certbot

您可以删除这3行并编辑您的服务器块配置,如下面的屏幕截图,将非www重定向到www域。

第一个服务器块侦听端口80.它包含301重定向,将HTTP重定向到HTTPS。
第二个服务器块侦听端口443.它包含301重定向,将非www重定向到www域。

Ubuntu 16.04/17.10下Nginx使用Let’s Encrypt正确启用加密

如果您想将www重定向到非www域,请更改

return 301 https://www.example.com$request_uri;

为:

return 301 https://example.com$request_uri;

并更改SSL服务器块中的server_name指令。

保存并关闭文件。 测试Nginx配置。

sudo nginx -t

如果测试成功,请重新加载Nginx以使更改生效。

sudo systemctl reload nginx

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/c9a838ff889d3640120941b32fdc39b0.html