• 在Nginx上正确启用HTTPS,让我们在Ubuntu上加密

    本教程向您展示了如何在Nginx上使用Let's Encrypt on Ubuntu正确启用HTTPS。Google Chrome和Firefox已经开始将带有密码输入框的未加密网页标记为不安全。最终,所有HTTP网页都将被标记为不安全。HTTPS将成为任何网站的默认设置。如果你想利用HTTP/2协议来加速你的网站,这也是一个要求。 Let's Encrypt是一个免费、自动且开放的证书颁发机构。官方文档描述了使用Let’s Encrypt启用HTTPS时可以遵循的简单步骤,但还有更多。如果你遵循官方文件,你的SSL实验室测试得A分。如果你遵循我的步骤,你会得到+分。如果您之前已经部署了Let's Encrypt证书,您仍然可以按照本教程更新和替换现有证书。 本教程分为三个部分。 第一部分是关于CAA记录、安全头和OCSP装订。这些东西可以帮助你获得A+。 第二部分是将www域重定向到非www域,反之亦然。 在第三部分中,我将向您展示如何处理CloudFlare CDN服务。 注:本教程适用于所有当前版本的Nginx和Ubuntu(包括16.04、18.04和20.04)。 为你的域名创建CAA记录 证书颁发机构授权(CAA)是一种DNS资源记录,用于指定允许哪些证书颁发机构(CA)为特定域名颁发证书。从2017年9月开始,所有CA都必须在为特定域名颁发证书之前检查CAA记录。如果没有找到某个域名的CAA记录,那么任何CA都可以为该域名颁发证书。如果CA未列在您的CAA记录中,则该CA无法为您的域名颁发证书。 要创建允许我们加密为您的域名颁发证书的CAA记录,请在DNS服务器或DNS管理器中添加以下条目。 实例通用域名格式。在CAA第0期“letsencrypt.org”中 您还可以使用iodef让CA向您的电子邮件地址报告恶意证书颁发请求。 实例通用域名格式。在CAA 0 iodef“邮件收件人:您的电子邮件地址” 上述记录的格式适用于区域文件。下面是给你的一些建议。 您可以使用SSLMate CAA Record Helper为您的域名生成CCA记录。 如果你使用的是GoDaddy DNS,那么请按照本文添加CAA记录。 您可以使用以下dig命令检查CAA记录。 举个例子。com CAA 请注意,网络浏览器不会检查CAA记录。 安全标头 安全头和HTTPS协议一样重要,但只有一小部分启用HTTPS的站点关注安全头。虽然关于安全标头的完整讨论超出了本教程的范围,但我将讨论升级不安全请求和HSTS标头,因为您可以使用Let’s Encrypt轻松启用它们,以提高网站安全性。 升级不安全的请求 有时,一个站点启用了HTTPS,但一些CSS、图像或Java脚本仍然通过HTTP提供服务。在这种情况下,浏览器地址栏开头的绿色挂锁将消失。在谷歌浏览器中,它被一个信息图标取代;在Firefox中,它被一个带有黄色三角形的灰色挂锁所取代。您将希望尽可能多地向网站访问者显示一个绿色挂锁,解决此问题的简单方法是启用升级不安全请求头,这将迫使web浏览器对每个http://资源使用https://。 要启用此标头,只需在发出certbot命令时添加--uir标志。请注意,此标题适用于托管在您自己域上的资源和支持HTTPS的第三方域上的资源。如果您的网页包含第三方服务器上无法通过HTTPS访问的资源,则这些资源将被web浏览器阻止,但使用此标题可确保您的网页始终获得绿色挂锁。 HSTS(HTTP严格传输安全) HSTS标题告诉网络浏览器,与网站的所有通信都应该通过HTTPS完成。它可以防御SSL条带化,这是一种将HTTPS降级为HTTP的攻击。要启用此标头,只需在发出certbot命令时添加--hsts标志。 OCSP吻合器 当web浏览器连接到HTTPS网站时,它会向证书颁发机构(CA)发送OCSP(联机证书状态协议)请求,以查询网站SSL证书的吊销状态。Firefox遥测数据显示,这会将页面加载延迟1-3秒。 为了提高性能,网站所有者可以启用OCSP绑定,在这种情况下,web服务器本身会定期获取CA签署的OCSP响应。当web浏览器连接到站点时,Nginx可以将缓存的OCSP响应发送到web浏览器,从而消除web浏览器联系OCSP服务器的需要。 要启用OCSP绑定,只需在发出certbot命令时添加--stype OCSP标志。 OCSP必须装订 如果黑客制作了一个伪造的、重复的网站,关闭了OCSP订书机,还阻止了网络浏览器对OCSP服务器的访问,那么网络浏览器会认为这是正常的,并继续访问恶意网站。为了解决这个问题,您可以在您的网站上启用OCSP必须装订,这会告诉web浏览器,在HTTPS连接期间,您的网站必须提供OCSP装订响应。因此,当网络浏览器连接到没有OCSP订书钉的假网站时,它会停止连接。 要启用OCSP必须装订,请在发出certbot命令时添加--must-stalke标志。 在Ubuntu上安装Let's Encrypt Client(Certbot) 现在是时候把手弄脏了。从Ubuntu 16.04开始,让我们加密客户端(Certbot)包含在Ubuntu存储库中,因此您可以使用以下命令安装它。Python3 certbot nginx是certbot nginx插件。 sudo apt安装certbot python3 certbot nginx 要检查版本号,请运行 certbot——版本 样本输出: certbot 0.31.0 如果要使用最新版本,可以从Snap store安装Certbot。 sudo-apt-install snap-sudo-snap-install——经典certbot 注意:如果要使用Snap版本,需要使用完整的二进制路径:/Snap/bin/certbot。 使用Certbot Nginx插件启用HTTPS 如果您的网站不使用CDN服务,建议使用Nginx插件在Nginx web服务器上启用HTTPS,因为它可以自动获取SSL/TLS证书并为您配置。在Ubuntu服务器上运行以下命令。 sudo certbot--nginx--agree-tos--redirect--uir--hsts--staple-ocsp--must-d www.example。例如,com。com--电子邮件[电子邮件 受保护] 哪里: --nginx:使用nginx验证器和安装程序 --同意:同意让我们加密服务条款 --重定向:添加301重定向。 --uir:在每个HTTP响应中添加“内容安全策略:升级不安全请求”标题。 --hsts:为每个HTTP响应添加严格的传输安全头。 --装订ocsp:启用ocsp装订。 --必须装订:将OCSP必须装订扩展添加到证书。 -d标志后面是域名列表,以逗号分隔。你最多可以添加100个域名。 --电子邮件:用于注册和恢复联系人的电子邮件。 你会被问到是否想收到来自EFF(电子前沿基金会)的电子邮件。选择Y或N后,将自动获取并为您配置SSL证书,如下消息所示。 /etc/letsencrypt/live/example。com/fullchain。pem:根CA证书、中间CA证书和服务器证书的完整链。 /etc/letsencrypt/live/example。com/privkey。pem:服务器的私钥 现在,如果您访问您的网站,您可以看到HTTP自动重定向到HTTPS连接。事实证明,Nginx插件目前不支持--uir标志。要手动添加升级不安全请求标头,请编辑Nginx服务器块文件。 sudo nano/etc/nginx/conf.d/example。通用域名格式。形态 在SSL服务器块中添加以下行。 添加_头内容安全策略升级不安全请求; 另外,在SSL服务器块中添加DNS解析器也是一个好主意。 分解器8.8.8.8; 如果不添加解析器,可能会在Nginx错误日志中看到以下消息。 [警告]559#559:未定义解析程序来解析ocsp。int-x3。letsencrypt。org请求证书状态时,响应者:ocsp。int-x3。letsencrypt。组织 保存并关闭文件。然后重新加载Nginx以使更改生效。 sudo systemctl重新加载nginx 故障排除提示 如果在运行certbot命令时看到以下错误消息,只需再次运行certbot命令,因为这是DNS解析中的临时故障。 发生意外错误:回溯(最近一次调用last):文件“/usr/lib/python3/dist packages/urllib3/connection.py”,第159行,在_new_conn conn=connection中。创建连接(文件“/usr/lib/python3/dist packages/urllib3/util/connection.py”,第61行,在getaddrinfo(主机、端口、家族、套接字.SOCK_流)中创建res连接:文件“/usr/lib/python3.8/socket.py”,第918行,在getaddrinfo中创建res-in-socket。getaddrinfo(主机、端口、系列、类型、协议、标志):套接字。gaierror:[Errno-3]名称解析暂时失败 测试SSL证书 去斯莱布。com来测试您的SSL证书和配置。正如我承诺的,你会得到A+。您还可以检查您的域名是否启用了CAA记录,您的服务器是否启用了HSTS、OCSP装订和OCSP必须装订。 将WWW重定向到非WWW(或反之亦然) 我们已经启用了将HTTP重定向到HTTPS,剩下要做的就是将www重定向到非www,或者反之亦然。如果你用的是WordPress,那就很简单了。只需进入WordPress Dashboard>设置>在WordPress地址和网站地址中设置您的首选版本(www或非www)。 如果你走这条路,你最终会被称为双301重定向。首先,Nginx服务器将HTTP重定向到HTTPS,然后WordPress重定向到www或非www域。有些人可能会认为,双301重定向会损害你网站的搜索引擎优化。如果您对此感到担忧,那么您可以使用下面的方法使所有域版本直接转到最终目的地。 编辑Nginx服务器块。 sudo nano/etc/nginx/conf.d/example。通用域名格式。形态 CertBot客户端在文件中添加了以下行以将HTTP重定向到HTTPS。 如果($scheme!=“https”){return 301 https://$host$request_uri;}由Certbot管理 你可以删除这三行,编辑你的服务器块配置,如下面的截图,将非www重定向到www域。 第一个服务器块监听端口80。它包含一个301重定向,用于将HTTP重定向到HTTPS。 第二个服务器块监听端口443。它包含一个301重定向,用于将非www重定向到www域。 如果要将www重定向到非www域,请更改 返回301https://www.example.com$request_uri; 到 返回301https://example.com$request_uri; 并更改SSL服务器块中的server_name指令。 保存并关闭文件。测试Nginx配置。 sudo nginx-t 如果测试成功,请重新加载Nginx以使更改生效。 sudo systemctl重新加载nginx 如果您正在使用WordPress,请确保在编辑Nginx服务器块配置文件之前,在WoredPress地址和站点地址中设置了首选域版本。如果WordPress设置与Nginx配置冲突,您的站点将处于重定向循环中。 如何启用HTTP/2协议 要在Nginx中启用HTTP/2协议,只需打开Nginx虚拟主机文件并找到以下行。 听443; 在末尾添加http2。 听443sslhttp2; 保存并关闭文件。然后重新加载Nginx。 sudo systemctl重新加载nginx 如何禁用TLSv1和TLSv1。1. TLSv1和TLSv1。1不再被认为是安全的。截至2020年1月31日,SSL实验室正在对支持TLS 1.0或TLS 1.1至B级的服务器进行封顶。要禁用它们,请编辑Let's Encrypt SSL options配置文件。 sudo nano/etc/letsencrypt/options ssl nginx。形态 找到下面这行。 ssl_协议TLSv1 TLSv1。1 TLSv1。2. 移除逐步淘汰的TLS版本。 ssl_协议TLSv1。2. 保存并关闭文件。然后重启Nginx。 sudo systemctl重启nginx 如何启用TLS 1.3 请阅读以下文章: 如何在Ubuntu 20.04、18.04、16.04上轻松启用Nginx中的TLS 1.3 如何在Nginx中启用IPv6 如果您的服务器有IPv6地址,并且您的域名有AAAA记录,那么您应该在Nginx中启用IPv6。在HTTP服务器块中添加以下行。 听[:]:80; 并在HTTPS服务器块中添加以下行。 听[:]:443 ssl http2; 保存并关闭文件。重新加载Nginx,就完成了。 sudo systemctl重新加载nginx 证书自动更新 要自动续订Let's Encrypt certificate,只需编辑root用户的crontab文件。 sudo crontab-e 然后在底部添加以下行。 @每日certbot更新——安静与&systemctl重新加载nginx --安静标志将抑制标准输出。如果希望接收标准错误,请在crontab文件的开头添加以下行。 MAILTO=[email 受保护] 需要重新加载Nginx才能将新证书呈现给客户端。 在Crontab中设置路径 有时Cron会向我发送以下消息,也可以在/var/log/letsencrypt/letsencrypt中看到。日志文件。 无法为更新程序选择合适的插件:nginx插件不工作;现有配置可能存在问题。错误是:NoInstallationError() 此错误的原因是,默认情况下,Cron中的路径设置为 路径=/usr/bin:/bin 但是nginx二进制文件位于/usr/sbin/nginx,Cron无法使用默认路径找到它。要修复此错误,请在Crontab文件的开头添加以下行。 路径=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin CloudFlare CDN 如果您想在服务器上安装Let's Encrypt certificate,同时使用CloudFlare的CDN服务,那么您需要在站点上启用CloudFlare的通用SSL,这意味着 网站访问者和CloudFlare edge server之间的连接使用CloudFlare Universal SSL证书加密 原始服务器和CloudFlare edge服务器之间的连接使用Let's Encrypt Issuited certificate进行加密。 如果在源服务器上安装Let's Encrypt certificate并将HTTP重定向到HTTPS,但关闭CloudFlare Universal SSL,Web浏览器会抱怨您的网站处于无限重定向循环中,因为在未启用Universal SSL时CloudFlare会将HTTPS重定向到HTTP。 您需要知道的第二件事是,如果希望在使用CloudFlare Universal SSL时启用CAA记录,则还需要创建以下CAA记录。 实例通用域名格式。在CAA 0版的“comodoca.com”示例中。通用域名格式。在CAA 0版的“digicert.com”示例中。通用域名格式。在CAA第0期“globalsign.com”中 按照本文添加CloudFlare Universal SSL证书的CAA记录。 那么,如何使用CloudFlare安装Let's Encrypt certificate呢?有两种情况。 您已经使用上述步骤安装了Let's Encrypt certificate,现在您想启用CloudFlare CDN服务。 您的网站正在使用CloudFlare CDN服务,现在您想在源服务器上安装Let's Encrypt certificate。 第一种情况 如果您在第一个场景中,则可以继续启用CloudFlare CDN服务,还可以通过转到Crypto>在CloudFlare Dashboard中启用CloudFlare Universal SSL;SSL和选择完整(严格)。你的网站将运行良好,没有问题。 第二种情况 如果您使用CloudFlare CDN,并且现在希望在源服务器上安装Let's Encrypt,请运行以下命令以获取并安装Let's Encrypt TLS证书。 sudo certbot--nginx--agree-tos--redirect--uir--hsts--staple-ocsp--must-d www.example。例如,com。com--电子邮件[电子邮件 受保护] 获取证书并将其安装到服务器上后,转到Cloudflare dashboard并启用Cloudflare Universal SSL。 下一步 我希望本教程能帮助你在Nginx上启用HTTPS,让我们在Ubuntu上加密。你可能还想设置ModSecurity web应用防火墙来保护你的WordPress网站免受黑客攻击。 如何在Debian/Ubuntu上使用Nginx设置ModSecurity 和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?

    2022.03.23 浏览:67
  • 如何在Ubuntu上使用Apache Web服务器设置WordPress Multisite

    本教程将向您展示如何使用ApacheWeb服务器设置WordPress Multisite。假设您已经在Ubuntu服务器上安装了带有LAMP堆栈的WordPress。如果没有,请查看以下教程。 Ubuntu 16.04 在Ubuntu 16.04 LTS上安装Apache、MariaDB和PHP7(LAMP Stack) 如何使用Apache、MariaDB和PHP7在Ubuntu16.04上安装WordPress Ubuntu 17.10 如何在Ubuntu 17.10上安装LAMP Stack(Apache、MariaDB、PHP7.1) 如何使用Apache、MariaDB和PHP7在Ubuntu17.10上安装WordPress。1. 什么是WordPress Multisite 这是一个功能,可以让你在一个WordPress安装中托管多个网站。最好的例子就是WordPress。com,它在一次WordPress安装中托管了数千万个网站。 有两种类型的WordPress多站点 子域多站点,这是WordPress最常用的类型。com博客 子目录多站点 在本教程中,我将向您展示如何设置多站点的子域类型,以及如何设置域映射,以便您可以将新域名映射到子域。事实上,WordPress。com使用域映射,以便客户可以选择自己的域名(您的domain.com),而不是子域(您的blog.wordpress.com)。 设置WordPress Multisite的步骤 1.编辑wp配置。php文件 将Cd放入WordPress安装目录,如下所示: cd/var/www/example。com/ 编辑wp配置。php文件和您喜欢的文本编辑器。 sudo nano wp config。php 找到这行:/*仅此而已,停止编辑!快乐的博客。*/(通常在文件末尾)。然后添加以下行以启用网络功能。 定义('WP_ALLOW_MULTISITE',true); 保存并关闭文件。接下来,在网络浏览器中转到WordPress仪表板。现在,您可以在“工具”菜单下看到一个名为“网络设置”的新项目。单击“工具”菜单中的“网络设置”链接。如果你有激活的插件,请暂时停用它们。 2.启用Apache mod_重写模块 网络设置页面将告诉您启用Apache mod_重写模块。您可以通过运行下面的命令来检查它是否已启用。 sudo apache2ctl-M | grep重写 如果已经启用,您将看到以下行: 重写_模块(共享) 否则,请通过以下方式启用它: sudo a2enmod重写 3.启用。htaccess文件 我们还需要启用。htaccess文件,因为稍后我们需要在该文件中添加一些指令来启用WordPress multisite。使能。htaccess文件,编辑WordPress站点的Apache vhost配置文件,如下所示。 sudo nano/etc/apache2/可用站点/示例。通用域名格式。形态 在<VirtualHost>标签替换/var/www/example。com与您自己的文档根目录。 <目录“/var/www/example.com”>AllowOverride All&lt/目录> 保存并关闭文件。只是想让你知道。htaccess文件也是WordPress permalink工作所必需的。现在重新启动Apache以使更改生效。 sudo systemctl重启apache2 4.启用网络 然后在WordPress仪表板上,选择子域并单击安装按钮。 要使用子域配置,DNS中必须有通配符条目。要创建通配符DNS记录,请在名称字段中输入*并在DNS管理器的值字段中输入服务器IP地址。以下是CloudFlare DNS manager中的通配符条目示例。 然后下一页将告诉您在wp config中添加一些配置。php文件和。htaccess文件。请注意,您需要删除中的现有重写规则。htaccess文件,然后添加新的重写规则。 完成后,单击页面底部的登录链接重新登录。 在网络中创建一个新站点 WordPress网络现在已完全启用和配置,您可以在WordPress仪表板右上角的菜单中看到一个名为“我的网站”的新链接。要创建新网站,请转到我的网站->网络管理员->地点。 单击添加新按钮,输入网站URL、网站标题和管理员电子邮件。 您可以根据需要添加多个站点。 安装主题和插件 个人网站管理员无法安装新主题和插件。只有网络管理员才能这样做。转到我的网站->网络管理员->仪表板从那里,网络管理员可以安装主题和插件,并应用影响整个网络的更改。一旦一个主题或插件启用了网络,各个管理员就可以从他们的仪表板上启用它。 如何设置域映射 如果要在WordPress多站点网络中添加顶级域,首先需要在网络中创建一个子站点,如site1。实例com,然后使用域映射映射顶级域,如示例所示。组织到网站1。实例通用域名格式。 以下是步骤。 首先,为要映射的顶级域创建DNS记录。它应该指向WordPress站点的IP地址。 然后,在WordPress多站点网络中创建一个子网站。 接下来,转到我的网站->网络管理员->单击新创建的子网站的“编辑”按钮。在Site Address字段中,将URL替换为要映射的顶级域。 保存您的更改,您就完成了。现在,当一位访客进入示例。在web浏览器中,它将被重定向到site1。实例在没有被访客注意到的情况下在引擎盖下移动。 我希望本教程能帮助您建立WordPress多域和域映射。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。

    2022.03.23 浏览:120