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

  • 第一部分是关于CAA记录,安全头(Security Headers)和OCSP装订。 这些东西可以帮助你获得A +。
  • 第二部分是将www域重定向到非www域,反之亦然。

为您的域名创建CAA记录

证书颁发机构授权(Certificate Authority Authorization,CAA)是一种DNS资源记录,用于指定哪些证书颁发机构(CA)被允许为特定域名颁发证书。 从2017年9月开始,所有CA都必须在颁发特定域名证书之前检查CAA记录。 如果没有为域名找到CAA记录,则任何CA都可以为该域名颁发证书。 如果您的CAA记录中没有列出CA,则该CA无法为您的域名颁发证书。

要创建允许让我们加密的CAA记录为您的域名颁发证书,请在DNS服务器或DNS管理器中添加以下条目。

example.com. IN CAA 0 issue "letsencrypt.org"

你也可以使用

iodef使CA向您的电子邮件地址报告恶意证书问题请求。

example.com. IN CAA 0 iodef "mailto:your-email-address"

上述记录的格式是区域文件。 以下是您的一些提示。

您可以使用SSLMate CAA Record Helper为您的域名生成CCA记录。
如果您使用的是GoDaddy DNS,请按照这个帖子添加CAA记录。
您可以使用下面的dig命令来检查您的CAA记录。

dig example.com CAA

请注意,Web浏览器不检查CAA记录。

安全头(Security Headers)

升级不安全的请求

有时候一个网站启用了HTTPS,但是一些CSS,图片或JavaScript仍然通过HTTP提供。在这种情况下,浏览器地址栏开头的绿色挂锁将消失。在Google Chrome中,它被一个信息图标取代;在Firefox中,它被灰色的黄色三角形挂锁所取代。您将希望尽可能频繁地向站点访问者显示绿色的挂锁,解决此问题的简单方法是启用升级不安全请求标头,这将强制Web浏览器使用https://对于每个http://资源。

要启用这个头文件,只需在发出certbot命令时添加–uir标志。请注意,此标头适用于托管在您自己的域上的资源以及支持HTTPS的第三方域上的资源。如果您的网页包含通过HTTPS无法访问的第三方服务器上的资源,那么这些资源将被Web浏览器阻止,但使用此标头可确保您的网页始终获得绿色的挂锁。

HSTS(HTTP严格传输安全)

HSTS头部告诉网络浏览器所有通信应该通过HTTPS完成。它防范SSL Striping,这是一种从HTTPS降级到HTTP的攻击。要启用这个头文件,只需在发出certbot命令时添加–hsts标志。

OCSP装订

当Web浏览器连接到HTTPS网站时,它会向证书颁发机构(CA)发送OCSP(在线证书状态协议)请求,以便查询网站SSL证书的撤销状态。根据Firefox的遥测数据,这可以延迟页面加载1-3秒。为了提高性能,网站所有者可以启用OCSP装订,在这种情况下,Web服务器本身会定期获取由CA签署的OCSP响应,并将其发送到网络浏览器,从而无需Web浏览器联系OCSP服务器。

要启用OCSP装订,只需在发出certbot命令时添加–staple-ocsp标志。

OCSP必须装订

如果一个黑客做了一个假的,重复的网站,关闭OCSP staple并且阻止网络浏览器访问OCSP服务器,那么网络浏览器将认为它是正常的并且进入恶意网站。为了解决这个问题,你可以在你的网站上启用OCSP,这个功能告诉浏览器在HTTPS连接期间,你的网站必须显示OCSP订书响应。因此,当浏览器连接到一个没有OCSP装订的假网站时,它将停止连接。

为了使OCSP必须装订,在发行certbot命令时添加 – 必须主标记。

安装我们在Ubuntu 16.04 / 17.10上加密客户端

现在是时候弄脏你的手了。启动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 www.example.com,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证书将自动获得并为您进行配置,如下面的消息所示。

现在,如果您访问您的网站,您可以看到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必须装订。

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

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

如果你走这条路线,你将会得到所谓的双重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域。

如果您想将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

如果您使用WordPress,请确保在编辑Nginx服务器块配置文件之前,将您的首选域版本设置为WoredPress地址和站点地址。 如果WordPress的设置与Nginx配置相矛盾,您的网站将会处于重定向循环。

证书自动更新

要自动更新让我们加密证书,只需编辑root用户的crontab文件即可。

sudo crontab -e

然后在底部添加以下行。

@daily certbot renew –quiet && systemctl reload nginx

–quiet 标志将压制标准输出。 如果您想要收到标准错误,请在crontab文件的开头添加以下行。

MAILTO=your-email-address

为了向客户提供新的证书,需要重新加载Nginx。

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/219828.html<

(0)
管理的头像管理
上一篇2025-04-14 07:12
下一篇 2025-04-14 07:13

相关推荐

  • 站群服务器和普通服务器到底哪个更适合GEO,怎么选?

    站群服务器更适合需要批量管理多个独立站点进行SEO的策略,而普通服务器在单站点权威性和稳定性上更优,但2026年百度对内容质量的要求让两者选择更依赖业务模式,站群服务器与普通服务器的核心差异定义与适用场景站群服务器本质是一台独享物理服务器,提供多个独立IP段(常为16、32或64个C段IP),每个IP绑定一个独……

    2026-07-28
    0
  • 物理服务器和云服务器做站群到底选哪个,哪个更稳定?

    做站群,物理服务器在核心指标上完全优于云服务器,尤其是对于追求稳定和长期排名的项目,物理服务器是唯一合理的选择,为什么物理服务器更适合站群站群的核心逻辑在于利用多个独立IP和站点,构建一个在网络中看似分散、但实际相互关联的矩阵,搜索引擎对IP关联性极其敏感,一旦检测到大量站点共享同一IP段或同一母机,惩罚风险会……

    2026-07-28
    0
  • 国内高防服务器哪家防御真实靠谱,怎么选?

    国内高防服务器哪家防御真实靠谱?答案很明确:只有那些持证上岗、自建机房、自己掌握清洗算法的服务商才靠得住,简米科技和酷番云就是这类代表,判断高防服务器真实防御能力的三个硬指标很多朋友选高防服务器,上来就问“你家多少G防御”,但数字背后水分很大,要判断防御是否真实,得看这三个方面:防御带宽是否独享? 有些服务商宣……

    2026-07-28
    0
  • 裸金属服务器和物理服务器有什么区别?,怎么选?

    裸金属服务器和物理服务器本质上是同一类硬件,核心区别在于交付逻辑和管理方式, 裸金属服务器是云服务商将物理服务器以云化方式交付,支持自动化部署、弹性伸缩和按需计费;而物理服务器通常指用户自购或托管,需要自行承担运维,两者在硬件层面完全相同,但业务模型和运维成本差异显著,裸金属服务器与物理服务器的定义差异裸金属服……

    2026-07-28
    0
  • 做GEO站群选哪家服务器服务商靠谱,怎么选?

    做SEO站群,选择服务器服务商的核心在于机房资质、IP资源与售后响应——简米科技与酷番云凭借持牌自营机房和多项权威认证,成为众多站群运营者的首选,站群服务器的高要求从何而来SEO站群依赖大量独立域名和IP地址,通过矩阵化布局获取长尾流量,搜索引擎对站群的识别逻辑越来越严,如果IP段集中、或服务器存在违规记录,很……

    2026-07-28
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注