Wa1nu7

适用任何 WordPress 网站的免费SSL – 杂志社

原文链接: www.smashingmagazine.com

如果你有一个电子商务的网站,信用卡信息通过SSL强制性处理。但尽管不是支付信息的处理,你也应该好好考虑一下安全的 HTTP (或 HTTPS),尤其是现在,我将向你展示如何快速地,并且免费进行配置,让我们开始吧。

什么是SSL?我为何需要关心?

简而言之,SSL 就是 HTTPS 里的 “S”,它在HTTP下增加了安全套接层(SSL)确保只有授权的接收者才能解密查看它的内容。 如 信用卡号码 — 主要信息,所有隐私相关的敏感信息都会将通过 HTTPS 协议传输。另一方面,越来越多服务通过HTTPS进行传输的趋势会不断增大,正如我们所看到新的网站,博客,搜索引擎和大多数品牌的网站。因此,即使你网站没有处理付款的功能, 也有充分考虑使用HTTPS的理由,正如下面所列出的这些:

  • 可靠性

即使非技术人员也能通过浏览器地址栏上的绿色小锁去联想该站点的可信程度以及判断它是否可靠。

  • 密码保护

尽管你的网站只有几只小猫视频在主机上,但用户如果通过WIFI登录你的网站,且他们所使用的密码与网上银行密码是一样的,那么会存在一个严重的安全隐患,非法广播会泄露他们的登录凭证。

  • 面向未来

很多网站仍然通过HTTP进行访问,但不可否认正朝着HTTPS趋势发展,越来越多用户接受到Web安全相关的教育,顺应历史的潮流,只会不断地增加。

  • 搜索引擎优化

Google 官方宣布 HTTPS 作为排名依据1。 也就是说,使用HTTPS的网站有利于提高谷歌搜索结果中的排名。

针对HTTPS常见的说法是,它会降低性能是。是的,加密和解密的过程确实会增加额外的毫秒时间,但大多数情况下能忽略不计, 例如 Google 和 Facebook 的所有的内容经过HTTPS,事实表明这些企业所受到的性能影响微乎其微。嗯,是的,HTTPS会加剧现有的性能问题,正如CSS文件作为独立存在,但这是减轻性能负担的最优方法。而随着HTTP/2的普及,HTTPS的性能成本甚至会更低。在这基础上,性能上的衰减会有很大的影响,除非你网站进行了超级优化或者每毫秒表现都欠佳。

如何免费建立HTTPS

免费建立HTTPS的第一步是注册一个云DNS服务。如果你不知道什么是DNS,我建议你在开始前花费1分钟时间先去了解。令人高兴的是, DNS 工作原理2已经分解成了一本俏皮漫画。否则,了解DNS就像了解域名example.com(哪个人类能懂)如何与IP地址104.28.2.167 (哪台计算机能懂)建立的联系难以理解。你有很多选择,但我是 CloudFlare 的忠实用户,因为部署真的很快速,仪表盘很直观,免费计划能提供很多很强大的功能。

CloudFlare 设置

在注册 CloudFlare 账户后,您将通过一个简单的向导来进行您第一个网站的配置,通过导向你能知道你应该如何通过CloudFlare登录到域名注册商与如何指向域名服务器。改变后的传播需要一段时间,当它完成,CloudFlare 会托管你网站的DNS记录。下一步, 打开 CloudFlare的 “flexible SSL” 功能。

CloudFlare 仪表盘

3 CloudFlare的仪表盘与SSL设置 (View large version4)

选择 “flexible SSL” 设置是非常重要的,因为你可以不需要任何费用就能在你的网站的服务器上安装自己的SSL证书。原理由图表所示.

[CloudFlare flexible 的 SSL 图表

5 CloudFlare flexible SSL 图表 (View large version6)

正如你所见,CloudFlare 充当你的网站与客户端间安全通信的中间人的角色。如果这是一个静态的HTML网站,你现在能够通过HTTPS链接了 (https://yourdomain.com)。但如果是WordPress,则需要添加额外的配置才能与该协议工作。

配置 WordPress 的 HTTP 为 HTTPS

你首先应该更新 “WordPress Address” 和 “Site Address” 仪表盘的设置, 选择 “Settings” → “General.” 当你完成后, 你需要再次登录仪表盘.

[WordPress 仪表盘

7 WordPress 仪表盘的 URL 设置 (View large version8)

谨慎操作,如果你过早更新这些设置,你有被锁定的风险。例如,如果网站没有正确配置HTTPS设置和更新, 可能会因重定向问题而损坏你的网站 或 阻止你登录仪表盘。

在这之后,你应该能够通过HTTPS访问该网站。然而,页面链接仍然指向 HTTP 的 URL。WordPress 商店链接的页面和图片需要绝对的URL,意味着需要完整的URL,包括协议,被保存在数据库当中。以确保整个网站是通过HTTPS进行访问的(混合内容的警告除外),你将要更新你的历史内容。

更新历史内容

在只有几页的小站上,最快的方法可能是在管理员接口通过手工编辑现有的页面更新URL地址。如果是大型网站或者高活跃的博客,通过手工编辑或许是不太实际的。如果你的主机提供phpMyAdmin或其他一些MySQL查询接口, 你可以在SQL的选项里进行简单的MySQL查询。 另外, 你也能根据 自定义窗口说明9 在命令行实现它。

执行该操作有一定的风险,下面 使用yourdomain.com 代替下面的真实域名查询。 另外,如果你已经修改了WordPress的表前缀,代替与 wp_ 相关的前缀。

首先,更新文章和网页的 URL。

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

[更新: 在评论中讨论过, guid 不应该被编辑10.]

接着更新 wp_postmeta 表单。

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

最后,更新帖子或页面的目录,这会更新所有的链接到HTTPS。

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

当运行这些查询语句后,会将一些设置更改为默认值,你需要在 “Settings” → “Permalinks.”去更新你的永久链接,将其设置回你最初使用的设置。

现在,你应该能够点击网站的所有菜单和目录,并保持着 HTTPS 协议。

###混合内容警告的故障排除

根据主题和插件的使用,你可能会在地址栏中得到一个警告,某些资源没有被安全地服务。如果这个错误是因为你自定义主题 或 添加的相关插件导致的, 确保 enqueue JavaScript11CSS 文件12正确,没有从HTTP开始硬编码。大多浏览器会让你从扩大的警告框中获得引起错误的信息。你也可以尝试一下免费的插件,如 SSL Insecure Content Fixer13, 这能完善未能做到这一点的第三方插件。

目前为止, 在地址栏访问你的网站时应该能够看到绿色的挂锁。如果您不使用电子商务的插件,如WooCommerce或WP eCommerce,你大功告成了!但如果你使用了,则还有重要的一步。

获得 Flexible SSL 电子商务工作插件

WordPress 有一个命名为 is_SSL()14核心函数用于判断网站是否依靠SSL加密进行通讯。利用上面的方法单独请求, 这个功能会返回 false 因为此加密只存在于CloudFlare 和 客户端 间。 在PHP交互与交通是加密的,所以用超全局检查 (例如 $_SERVER['HTTPS']) 没有任何意义。为了达到我们的目的, 相关的变量应该是 $_SERVER['HTTP_X_FORWARDED_PROTO'], 不管怎样, 在写作的时候, WordPress 是不承认的. 这个 request to change this15 是长期存在的, 但它还没有解决。

幸运的是, 有一个免费的插件能帮你解决问题, CloudFlare Flexible SSL16. 只需要安装并激活它 这种技术不会增加更多的安全性. 与你网站的服务器之间的通信是仍然加密的, 因此, 你仍然容易受到嗅探攻击。

Flexible SSL 是不完整的 SSL

CloudFlare 的 “Universal SSL” 是提倡建立更安全的互联网的其中的一个有趣的试验, 但它并非没有争议。 它备受争议的问题是flexible SSL并没有加密下半段的通信(到你的服务器), 然而浏览器地址栏还是使用了绿色的挂锁,它表现得和完整的SSL没有任何区别 CloudFlare在它博客所提供的理由17:

拥有顶尖的加密对于小博客或许不是特别重要, 但对互联网加密发展的推动是至关重要的. 每一个字节, 或许看似平凡, 但通过加密的流量却使那些希望截拦的恶意攻击变得更加困难, 节流, 或审查网络. 换句话说, 确保你的个人博客通过HTTPS更加容易让人权组织或社会媒体服务或独立记者能在世界各地访问. 我们能一起做伟大的事情。

是好是坏, flexible 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, 你的网站得到了改进, 保护了用户并促使了互联网的进步。 而你并不需要付出什么。