SSL与HTTPS

SSL与HTTPS是什么?

SSL(Secure Socket Layer)是在网络上使用的协议:

HTTPS仅意味着HTTP加上SSL。

就像“http://”意思是“这是一个网站”,看到“https://”表示“这是一个网站,它使用SSL来加密数据和验证网站”。-WP Engine

为什么要SSL?

使用WooCommerce设置SSL

要在您的网站上使用SSL,您需要购买SSL证书。许多供应商出售证书,价格不等; 您的主机提供商也可能会出售证书。

证书设置在你的服务器上(或虚拟主机)。一旦设置,您可以通过https://yoursite.com访问你的商店-你的浏览器可能会在地址栏中显示“锁”图标,以显示其已被保护。

WooCommerce目前支持专用SSL证书 - 不支持共享的。

WooCommerce强制SSL设置

WooCommerce的强制SSL设置WooCommerce > 设置 > 结算 > 结算选项 > 强制安全结算确保某些页面仅在启用时才通过HTTPS显示。这些页面是:

排除SSL问题

HTTPS相关的错误页面

这可能表示您的证书的安装有问题。我们建议您联系您的主机提供商查看。

重定向循环

WooCommerce使用WordPressis_ssl()函数重定向非安全页面。这可能会导致重定向循环,当:

  1. 您还安装了另一个SSL插件,例如Easy HTTPS Redirection试图取消强制安全URL。尝试删除其他插件或关闭强制SSL设置。
  2. 您的主机通过代理执行SSL,使得https无法检测。SSL by Proxy Problems

非安全内容警告

如果您在查看安全页面时出现非安全的内容警告,则表示您直接通过 http而不是 https链接了js脚本、图片或css样式表

大多数情况下,可以通过将这些链接更改为https或使用相对URL(例如:用/wp-content/file代替http://yoursite/wp-content/file

您也可以使用WordPress HTTPS这样的插件强制URL安全。WooCommerce保护正确排入队列的脚本。

要识别非安全链接,请使用Firebug for Firefox或Chrome内置开发者工具等工具,并查看错误控制台。将列出不安全的资源。

负载平衡器或反向代理之后的网站

WooCommerce使用WordPress函数is_ssl()来验证您的网站是否使用SSL。

is_ssl()检查HTTPS或端口443。但是,这对于负载平衡器(特别是托管在网络解决方案的网站)背后的网站来说不起作用。有关详细信息,请阅读WordPress is_ssl()函数参考说明

负载平衡器后面的网站或支持HTTP_X_FORWARDED_PROTO的反向代理,可以通过将以下代码添加到wp-config.php文件中,放在require_once调用上面:

if ( isset( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) && 'https' == $_SERVER['HTTP_X_FORWARDED_PROTO'] ) {
    $_SERVER['HTTPS'] = 'on';
}
	
如果你用了CloudFlare,则需要进行配置。