任何 WordPress 网站的免费 SSL

已发表: 2022-03-10
快速总结 ↬如果您有一个电子商务网站,那么 SSL 是安全处理信用卡所必需的。 但即使您不处理付款,您仍然应该认真考虑安全 HTTP(或 HTTPS),尤其是现在我将向您展示如何免费快速设置它。 让我们开始吧。 简而言之,SSL 就是 HTTPS 中的“S”。 它为 HTTP 添加了一层加密,以确保收件人实际上是他们声称的身份,并且只有授权的收件人才能解密消息以查看其内容。

如果您有一个电子商务网站,那么 SSL 是安全处理信用卡所必需的。 但即使您不处理付款,您仍然应该认真考虑安全 HTTP(或 HTTPS),尤其是现在我将向您展示如何免费快速设置它。 让我们开始吧。

什么是 SSL,我为什么要关心?

简而言之,SSL 就是 HTTPS 中的“S”。 它为 HTTP 添加了一层加密,以确保收件人实际上是他们声称的身份,并且只有授权的收件人才能解密消息以查看其内容。

关于 SmashingMag 的进一步阅读

  • HTTPS 无处不在,使用 Nginx、Varnish 和 Apache
  • 如何使用旧的 SSL 密钥颁发新的 SSL 证书
  • 为 HTTP/2 做好准备:Web 设计师指南

诸如信用卡号之类的敏感信息——基本上是任何私人信息——应始终通过 HTTPS 提供。 然而,正如我们在新闻网站、博客、搜索引擎和大多数主流品牌的网站上看到的那样,通过 HTTPS 提供所有内容的趋势正在增加。 因此,即使您的网站不处理付款,也有充分的理由考虑使用 HTTPS,这里列出了其中的一些:

跳跃后更多! 继续往下看↓
  • 信誉。 即使是非技术观众也会将浏览器地址栏中的绿色小挂锁与信任和可靠性联系起来。
  • 密码保护。 也许您的网站只托管小猫视频。 但是,如果用户使用他们也用于网上银行的密码通过 Wi-Fi 登录您的网站,那么您可能会通过公开广播这些凭据来促成严重的安全漏洞。
  • 面向未来。 许多网站仍然通过 HTTP 提供服务,但不可否认的是 HTTPS 的趋势,而且随着用户对网络安全的了解越来越多,这种趋势只会增加。 站在历史的正确一边。
  • 搜索引擎优化。 Google 正式宣布使用 HTTPS 作为排名信号。 换句话说,谷歌通过提高搜索结果中的排名来奖励 HTTPS 网站。

反对 HTTPS 的一个常见论点是它会降低性能。 诚然,加密和解密的过程确实需要额外的毫秒,但在大多数情况下,它可以忽略不计,这可以从 Google 和 Facebook 等注重性能的公司通过 HTTPS 提供所有内容的事实中得到证明。 而且,的确,HTTPS 会加剧现有的性能问题,例如单独提供许多 CSS 文件,但是通过遵循基本的最佳性能实践可以缓解这种情况。 而随着 HTTP/2 的采用,HTTPS 的性能成本更低。 底线是,只有当您的网站被超优化或表现不佳以至于每毫秒都很重要时,性能下降才是有意义的威慑。

如何免费设置 HTTPS

免费设置 HTTPS 的第一步是注册云 DNS 服务。 如果您不知道 DNS 是什么,我建议您在继续之前花一点时间了解一下。 令人愉快的 DNS 工作原理在将其分解为俏皮卡通方面做得很好。 否则,只需知道 DNS 是这样的系统,例如example.com (人类理解)等域名链接到104.28.2.167 (计算机理解)等 IP 地址。 你有很多选择,但我是 CloudFlare 的粉丝,因为它的设置速度非常快,仪表板很直观,并且提供了具有许多强大功能的免费计划。

设置 CloudFlare

注册 CloudFlare 帐户后,您将通过一个简单的向导来配置您的第一个网站,最后将说明如何登录您的域注册商并将名称服务器指向 CloudFlare。 更改需要一些时间才能传播,但完成后,CloudFlare 将托管您网站的 DNS 记录。 接下来,打开 CloudFlare 的“灵活 SSL”功能。

CloudFlare 仪表板
带有 SSL 设置的 CloudFlare 仪表板(查看大图)

选择“灵活 SSL”设置很重要,因为它不需要您在网站服务器上购买和安装自己的 SSL 证书。 这是正在发生的事情的图表。

CloudFlare 灵活的 SSL 图
CloudFlare 灵活的 SSL 图(查看大图)

如您所见,CloudFlare 充当中间人来保护您的网站和客户端之间的流量。 如果这是一个静态 HTML 网站,您现在可以通过 HTTPS ( https://yourdomain.com ) 连接到它。 然而,WordPress 需要额外的配置才能使用修改后的协议。

将 WordPress 从 HTTP 重新配置为 HTTPS

您首先需要在“设置”→“常规”下更新仪表板中的“WordPress 地址”和“站点地址”设置。 执行此操作时,您将不得不再次登录仪表板。

WordPress仪表板
带有 URL 设置的 WordPress 仪表板(查看大图)

谨慎行事。 如果您过早更新这些设置,您可能会被锁定。 例如,如果网站尚未正确配置 HTTPS 并且设置已更新,您可能会导致重定向循环中断网站并阻止您访问仪表板。

此时,您应该可以通过 HTTPS 访问网站的主页。 但是,页面链接仍将指向 HTTP URL。 WordPress 将页面和图像的链接存储为绝对 URL,这意味着包括协议在内的完整 URL 都保存在数据库中。 为确保通过 HTTPS 始终如一地为整个网站提供服务(不会发出有关混合内容的警告),您需要更新旧内容。

更新旧内容

在只有几个页面的小型网站上,最快的选择可能是通过在管理界面中编辑现有页面来手动更新 URL。 如果网站很大或有一个非常活跃的博客,那么手动编辑可能不切实际。 如果您的主机提供 phpMyAdmin 或其他一些接口来运行 MySQL 查询,您可以通过 SQL 选项卡中的一些 MySQL 查询轻松完成此操作。 或者,您可以按照自定义 Windows 的说明从命令行执行此操作。

冒着明显的风险,将以下查询中的yourdomain.com替换为您的实际域。 此外,如果您自定义了 WordPress 的表前缀,请将wp_替换为相关前缀。

首先,更新帖子和页面的 URL。

 UPDATE wp_posts SET guid = replace(guid, 'https://yourdomain.com','https://yourdomain.com');

[更新:如评论中所述,不应编辑 guid 字段。]

也更新wp_postmeta表。

 UPDATE wp_postmeta SET meta_value = replace(meta_value,'https://yourdomain.com','https://yourdomain.com');

最后,更新帖子或页面的实际内容。 这会将所有反向链接更新到 HTTPS。

 UPDATE wp_posts SET post_content = REPLACE(post_content, 'https://yourdomain.com', 'https://yourdomain.com');

运行这些查询后,您将需要通过转到“设置”→“永久链接”来刷新永久链接。 只需将设置更改回默认设置,然后将其设置回您最初使用的任何设置。

现在,您应该可以单击整个网站的菜单和链接,并且协议应该保持 HTTPS。

混合内容警告故障排除

根据使用的主题和插件,您可能会在地址栏中收到警告,指出某些资源未得到安全服务。 如果错误与您自己的自定义主题或插件添加的资产相关联,请确保正确地将 JavaScript 和 CSS 文件排入队列,而不是对以HTTP开头的 URL 进行硬编码。 大多数浏览器都允许您展开警告以显示导致错误的特定请求。 您还可以尝试免费插件,例如 SSL Insecure Content Fixer,它会尝试纠正未能做到这一点的第三方插件。

此时,您应该在访问您的网站时在 URL 栏中看到绿色挂锁。 如果您没有使用 WooCommerce 或 WP eCommerce 等电子商务插件,那么您就完成了! 如果你是,还有一个重要的最后一步。

让灵活的 SSL 与电子商务插件一起工作

WordPress 有一个名为is_SSL()的核心函数,插件依靠它来确定流量是否使用 SSL 加密。 单独使用上述方法,此函数将返回false ,因为加密仅在 CloudFlare 和客户端之间。 PHP 与之交互的流量是未加密的,因此该函数检查的超级全局(即$_SERVER['HTTPS'] )将没有用。 出于我们的目的,相关变量是$_SERVER['HTTP_X_FORWARDED_PROTO'] ,在撰写本文时,WordPress 无法识别。 改变这一点的要求由来已久,但尚未解决。

幸运的是,一个免费的插件 CloudFlare Flexible SSL 会立即为您解决这个问题。 只需安装插件并激活它。 请记住,这种技术不会增加任何安全性。 CloudFlare 和您网站服务器之间的流量仍未加密,因此仍容易受到嗅探。

灵活的 SSL 不是完整的 SSL

CloudFlare 的“Universal SSL”倡议是使 Internet 更加安全的有趣尝试,但并非没有争议。 主要担心的是,灵活的 SSL 不会加密流量旅程的后半部分(到您的服务器),但浏览器目前仍然显示与我们联系起来的完整SSL 相同的绿色挂锁。 CloudFlare 在其博客上提供了以下理由:

对于小型博客来说,拥有尖端的加密技术似乎并不重要,但它对于推进互联网默认加密的未来至关重要。 每一个字节,无论看起来多么平凡,在互联网上加密流动的每个字节都让那些希望拦截、扼杀或审查网络的人变得更加困难。 换句话说,确保您的个人博客可以通过 HTTPS 访问,这样更有可能在世界各地访问人权组织或社交媒体服务或独立记者。 我们可以一起做伟大的事情。

无论好坏,灵活的 SSL 已经出现,互联网必须适应。 与此同时,网站所有者有责任接受教育并做出负责任的决定。

将 HTTP 请求重定向到 HTTPS

使网站能够在 HTTPS 上运行并不能确保请求将实际使用该协议。 如果您的网站已经存在了一段时间,那么用户可能已经使用 HTTP 为其添加了书签。 您可以通过将以下代码段添加到网站根目录中的.htaccess文件的顶部,将所有 HTTP 请求重定向到新协议。 如果该文件不存在,您可以安全地添加它。

 <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule (.*) https://yourdomain.com/$1 [R=301,L] </IfModule>

如果.htaccess文件已经存在,请注意不要更改该文件中# BEGIN WordPress# END WordPress行之间的任何内容。 这些行由 WordPress 管理,每当刷新永久链接时,该部分中的内容就会被覆盖。

恭喜

通过将您的网站升级到 HTTPS,您改进了您的网站、保护了用户并参与了互联网的发展。 而且它没有花费你任何东西!