bg-tutorials

如何在WordPress上设置SSL证书并切换到HTTPS

在WordPress网站上安装SSL证书需要三个步骤:在服务器上安装证书,将WordPress指向URL的HTTPS版本,并重定向旧的HTTP流量。现在大多数主机会为您处理第一步,自5.7版本起,WordPress自身就能处理第二步的大部分工作。本指南涵盖了这三个步骤,适用于免费和付费证书,并修复了之后通常会出现的错误。

快速答案:通过您的主机控制面板安装SSL证书,然后在WordPress中打开设置 > 常规,将WordPress地址(URL)站点地址(URL)都更改为其https版本。最后添加一个301重定向,使HTTP请求转到HTTPS。

SSL(Secure Sockets Layer的缩写,尽管如今发行的每个证书实际上都使用TLS)就是将http://变成https://并从地址栏中移除”不安全”标签的东西。如果您想先了解背景知识,请阅读什么是SSL证书。否则,请从下表开始。

哪种方法适合您的设置

为WordPress添加SSL有三种方式,正确的选择几乎完全取决于您的主机。找到您的设置,然后跳转到对应的方法。

您的设置使用此方法大致耗时
托管WordPress主机无需安装任何东西。证书通常已经启用,因此可以直接跳到将WordPress切换到HTTPS5分钟
cPanel或类似的共享主机方法1,主机自带的免费AutoSSL10分钟
没有SSL工具的主机,或您希望有人代劳方法2,插件向导10到15分钟
VPS、独立服务器,或使用付费证书方法3,手动安装30分钟加验证时间
Cloudflare位于网站前端方法1或3,然后将Cloudflare SSL设置为Full(strict)。请参阅故障排除15分钟

无论您选择哪种方式,都要先备份网站,如果您有测试环境,请先在那里进行更改,然后再对生产环境进行操作。

WordPress是否需要SSL证书?

是的,对大多数人来说,原因是他们已经能看到的:Chrome、Firefox、Safari和Edge都会在地址栏中将纯HTTP页面标记为不安全。该标签会出现在没有证书的网站的每一页上,包括登录表单。

解决这个问题的三个实际理由:

  • 凭据和表单数据以明文传输。没有证书,同一网络上的任何人都能读取访问者提交的内容,包括您自己的WordPress密码。
  • 支付要求使用它。如果您运营WooCommerce,或接受任何银行卡数据,HTTPS不是可选项。支付网关将拒绝通过HTTP运行。
  • Google将HTTPS用作排名信号。这确实是一个真实的信号,但影响较轻,因此应将SEO这一论点视为附加好处而非主要理由。浏览器警告才是主要理由。

WordPress网站应该使用哪种SSL证书?

从免费选项开始,因为对于大部分WordPress网站来说,这确实是正确的答案。大多数主机会自动发行免费的Let’s Encrypt证书,而免费证书的加密效果与付费证书完全一样。加密方式是相同的。不同的WordPress SSL证书之间的差异在于证书颁发机构在发行证书前验证了什么,以及出现问题时您能获得什么。

验证级别

类型CA检查的内容发行时间适用于
域名验证(DV)您是否控制该域名几分钟博客、宣传网站、大多数WordPress安装
组织验证(OV)域名加上您注册的组织信息1到3个工作日商业网站、会员区、客户门户
扩展验证(EV)对公司进行全面的法律和运营核查1到5个工作日处理支付的商店、金融机构,以及任何身份识别重要的场景

如果您的网站运行在子域上,例如商店位于store.example.com,博客位于blog.example.com,一个通配符证书可以用一个证书覆盖它们全部,而不必为每个子域单独申请。不确定该选择哪种类型?SSL向导通过几个问题就能帮您缩小范围。

免费证书何时不再够用

免费证书仅为DV级别,有效期为90天,且不提供支持和保修。这对于个人博客来说没有问题。但在以下四种情况下会成为问题:

  • 您接受支付。付费证书带有保修,可在证书本身出问题时弥补损失。免费证书则没有任何保障。
  • 您的访问者需要了解您的身份。DV证书只能证明有人控制该域名。OV和EV会将您经过验证的组织信息写入证书中。
  • 您运营多个子域。免费通配符证书的发行是可能的,但操作繁琐,通常需要主机可能不提供的DNS自动化功能。
  • 续订不是自动的。一个90天期限却无人续订的证书,会像根本没有证书一样让网站下线。如果您的主机不自动续订,使用一个有效期更长的付费证书反而工作量更小,而不是更大。

方法1:从主机获取免费SSL证书

这是最快的途径,也是应该首先尝试的方法。几乎每家主机现在都提供免费的Let’s Encrypt证书,通常已经默认开启。

  • 打开您的主机控制面板,查找SSL/TLS、Let’s Encrypt或AutoSSL。在cPanel中它位于安全下方。
  • 选择您的域名并发行证书。同时包含裸域和www版本,否则其中一个会出现名称不匹配警告。
  • 确认已启用自动续订。这是人们常常忽略的步骤。

如果您运行自己的VPS或独立服务器,完全没有主机面板?请使用Let’s Encrypt客户端Certbot,它可以通过命令行发行证书,并设置自己的续订计划。

Let’s Encrypt证书的有效期为90天,续订应该会自动进行,通常在到期前大约30天进行。当这种自动化出问题时(确实会出问题,通常是在域名转移或DNS记录变更之后),网站会在数周内看起来仍然正常,然后毫无警告地变成”不安全”。请在日历中为首次预期的续订日期设置提醒,并在该日期过后用SSL Checker检查证书。如果到期日期已推后,说明续订正在正常工作。

方法2:使用插件在WordPress上安装SSL

大多数人使用的插件是Really Simple Security。它在2024年9月之前名为Really Simple SSL,当版本9发布时,随着其免费功能集超出SSL设置范围,插件被重新命名。它拥有超过三百万个活跃安装量。

与名称一起改变的内容才是重点:该插件不再只是强制重定向,它还可以通过Let’s Encrypt向导为您获取证书。因此,当您的主机不提供该功能时,它能覆盖整个流程。

  • 插件 > 添加新插件安装并激活Really Simple Security
  • 跟随打开的引导流程,或前往插件在管理侧边栏添加的新的”安全”项目。较旧的教程会说是设置 > SSL,那是插件重命名之前的位置。如果服务器上已安装证书,插件会检测到它。
  • 如果没有证书,选择安装SSL证书,然后按照向导获取一个免费的Let’s Encrypt证书。
  • 选择激活SSL。插件会更新您的网站URL,设置重定向,并通过HTTPS重新加载仪表盘。

在您决定使用之前,有一个值得了解的注意事项。强制使用HTTPS的插件是在每次请求时通过PHP来实现的。而写入服务器配置中的重定向会在WordPress加载之前发生,速度更快,且即使插件被停用也能继续工作。如果您熟悉编辑服务器文件,请手动进行切换,并让插件避开关键路径。

方法3:手动安装SSL证书

这是适用于付费证书或没有一键工具的任何服务器的方法。在共享主机上,请先检查您的套餐是否允许安装第三方证书;一些低价主机仍会锁定此功能或对此收费。

  • 生成CSR。证书签名请求会将您的域名和组织信息传递给证书颁发机构。使用我们的CSR生成器,或按照适用于您特定服务器的CSR指南操作。
  • 提交CSR给证书颁发机构并完成验证。DV在几分钟内完成,OV和EV则需要几天时间。
  • 安装文件。您将收到证书本身以及一个或多个中间证书。在cPanel中,将它们粘贴到SSL/TLS > Manage SSL sites下方,参照cPanel安装指南操作。其他平台的操作方式请参见SSL安装指南
  • 在操作WordPress之前,先用SSL Checker验证。

请注意中间证书。如果您安装了主证书但省略了证书链,大多数桌面浏览器仍会显示锁形图标,因为它们会缓存在其他地方见过的中间证书。移动浏览器、支付网关,以及任何通过API调用您网站的程序都会失败。一个”在Chrome中正常运行但结算流程出错”的网站,往往就是证书链不完整的问题,SSL Checker会报告这一点。

运行WordPress Multisite需要额外几个步骤,详见Multisite SSL指南

将您的WordPress网站从HTTP切换到HTTPS

证书已在服务器上安装完成。但WordPress仍然不知道它的存在。这就是很多指南在此之前会让您先运行数据库搜索和替换的地方,而对大多数网站来说,这一步已经多年不再需要了。

WordPress自动完成的部分

自2021年3月发布的WordPress 5.7起,核心程序会检测您的环境是否支持HTTPS,并在工具 > 站点健康 > 状态下的HTTPS状态部分报告。当HTTPS可用时,该部分会提供一个按钮,一键切换网站。

更重要的是,一旦站点地址(URL)WordPress地址(URL)都使用https,WordPress就会在渲染页面时重写内容中不安全的URL。以前保存为http地址的图片、链接和嵌入内容(在您自己域名内的)会以https方式提供,而您完全不需要编辑数据库。这正是较旧的教程告诉您要手动完成的步骤。

值得准确理解的是,这决定了您还需要做什么:重写发生在输出阶段,通过附加在内容显示时的过滤器实现。您的数据库仍然保存着旧的http URL。对访问者来说结果是相同的,这也是为什么迁移无需搜索和替换即可完成,但存储的数据本身并未改变。这在您导出网站、迁移到另一个主机,或直接查询数据库的那一天就会变得重要,也正是为什么最终仍值得运行一次搜索和替换,而不是永远不做的原因。

更改两个URL设置

如果站点健康没有提供一键按钮,或者您更愿意显式操作,请打开设置 > 常规。这里有两个字段,两者都需要更改:

  • WordPress地址(URL),WordPress文件所在的位置。
  • 站点地址(URL),访问者输入的地址。

将两处的http://都改为https://,然后保存。只更改其中一个是导致自己无法访问仪表盘的最常见原因。如果发生这种情况,您可以通过FTP在wp-config.php中设置这两个值:

define( 'WP_HOME', 'https://example.com' );
define( 'WP_SITEURL', 'https://example.com' );

将这些行添加到写着”That’s all, stop editing”这一行的上方,并将example.com替换为您的域名。请注意,只要定义了这些常量,设置 > 常规中的相应字段就会变为只读状态。

何时仍需要搜索和替换

核心程序的重写覆盖的是已渲染的内容。它无法覆盖所有地方,因此对以下情况,搜索和替换仍然是解决方案:

  • 硬编码在主题文件或functions.php中的URL。
  • 以序列化数据形式存储的插件设置,这也是为什么您永远不应该运行纯粹的SQL查找和替换。
  • 由页面构建器写入的选项行、自定义字段和小工具内容。

使用能正确处理序列化数据且具有试运行模式的Better Search Replace,或者使用WP-CLI:

wp search-replace 'http://example.com' 'https://example.com' --all-tables --dry-run

阅读试运行输出,然后重复运行该命令但不加–dry-run来应用更改。先备份数据库。

通过301重定向在WordPress中强制使用HTTPS

您的网站现在可以通过https访问,但它仍然可以通过http访问,而每个旧链接和书签都指向那里。永久性HTTPS重定向会将访问者和搜索引擎都引导到安全版本,并传递旧URL的排名信号。尽可能在服务器级别而不是PHP中设置它。

Apache

在您WordPress根目录中的.htaccess文件顶部,即WordPress代码块的上方,添加以下内容:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

R=301标志使其变为永久重定向。如果规则写成[R,L],则会发出临时的302重定向,这是一个值得留意的错误,尤其是当您从较旧的指南复制重定向规则时。

Nginx

Nginx没有.htaccess文件,也不理解为Apache编写的重写规则。请改为编辑站点配置中的server块:

server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://$host$request_uri;
}

使用nginx -t测试配置,然后使用systemctl reload nginx重新加载。

仅在仪表盘上强制HTTPS

要专门保护登录和管理区域,请将以下内容添加到wp-config.php中:

define( 'FORCE_SSL_ADMIN', true );

这涵盖了wp-admin和登录页面。它不会重定向前端,因此它是服务器级重定向的补充,而不是替代。

HSTS,在一切正常运行后再启用

HSTS会告知浏览器彻底拒绝对您的域名使用纯HTTP,从而消除首次请求和重定向之间的空隙。在Apache上:

Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"

只有在HTTPS已经稳定运行一段时间后才添加此项,并且一开始先不要开启preload指令。预加载很难快速撤销,如果某个子域上的任何内容尚未使用HTTPS,它就会变得无法访问。

修复切换后留下的问题

混合内容

混合内容指的是通过HTTPS提供的页面,其中仍通过HTTP加载图片、脚本、样式表或字体。浏览器现在将其分为两类:可升级的资源,主要是图片和媒体,浏览器会在请求前悄悄将其升级为HTTPS;以及可阻止的资源,如脚本和样式表,浏览器会完全拒绝加载。这就是为什么含有混合内容的页面可能只是看起来没有锁形图标,或者可能完全丢失样式地呈现出来。

在WordPress中,常见的来源是主题文件中硬编码的图片URL、通过HTTP加载的外部脚本,以及仍配置为HTTP的CDN。打开浏览器控制台,它会指出问题资源,然后从源头进行修复。我们关于如何修复混合内容的指南详细介绍了诊断方法。

缓存和CDN

切换后请清除您的页面缓存和CDN缓存。一个HTTP页面的缓存副本会继续提供旧的标记内容,让已完成的迁移看起来像是坏掉了。

电子邮件和事务性模板

这一项几乎普遍会被遗漏。WooCommerce订单邮件、密码重置消息、发票模板和新闻通讯页脚经常带有硬编码的HTTP链接,而它们存在于普通搜索和替换所触及不到的表格之外。给自己发一份测试订单和一次测试密码重置,然后检查链接实际指向哪里。

WordPress SSL问题故障排除

症状常见原因解决方法
无限重定向循环,ERR_TOO_MANY_REDIRECTSCloudflare SSL设置为Flexible。Cloudflare通过HTTP与您的服务器通信,您的服务器重定向到HTTPS,Cloudflare又将其发回将Cloudflare SSL/TLS加密模式设置为Full(strict),并在源站上保持有效证书
切换后无法进入wp-admin只更改了两个URL字段中的一个通过FTP在wp-config.php中设置WP_HOME和WP_SITEURL
只有部分页面没有锁形图标这些页面存在混合内容在浏览器控制台中找到HTTP资源,从源头修复
网站原本正常,几周后显示”不安全”Let’s Encrypt证书因续订失败而过期重新发行证书,然后在控制面板中确认自动续订
浏览器中正常,但应用或支付网关失败证书链中缺少中间证书安装完整的CA证书包,然后用SSL Checker重新检查
www或裸域上出现名称不匹配警告证书只覆盖了两者中的其中一个重新发行覆盖两个名称的证书;仅靠重定向无法修复此问题,警告会在任何重定向执行之前出现

如果证书已安装但网站仍报告为不安全,SSL错误指南涵盖了具体的浏览器错误代码。

迁移后:SEO检查清单及预期情况

  • 在Google Search Console中添加HTTPS属性。HTTP属性不会报告HTTPS URL的数据。添加新属性并保留旧属性,或使用涵盖两者的域名属性。如果您使用Bing网站管理员工具,也要在那里更新。
  • 重新提交您的XML站点地图,使用https URL。
  • 检查规范标签是否指向https。大多数SEO插件在网站URL更改后会自动更新,但仍要在页面源代码中确认。
  • 更新Google Analytics和Ads的属性设置,以及任何存储您网站URL的第三方服务。
  • 更新内部链接中的绝对链接。相对链接不需要任何更改。

之后正常的情况是什么样子,因为这会让从未经历过的人感到担忧:随着Google重新抓取,一段时间内Search Console会将您的展示次数在HTTP和HTTPS属性之间分开显示,排名往往会在稳定之前波动几周。Google将HTTP到HTTPS的迁移视为URL更改的网站迁移,所以出现一些波动是预期之中的,而不是出问题的信号。只要301重定向到位,且每个页面都能正常解析,那就只需要等待,无需其他操作。

有一点值得直白地说明:从HTTPS退回到HTTP几乎从来都不是解决问题的正确方法。这意味着第二次网站迁移,又一轮排名波动,而且浏览器警告会重新出现。如果HTTPS引起了问题,原因几乎总是故障排除表中的某一项,而修复该问题的成本远低于撤销迁移。

常见问题

如何强制WordPress使用HTTPS?

在设置 > 常规下,将WordPress地址(URL)站点地址(URL)都更改为https,然后在服务器级别添加301重定向。在Apache上,这是.htaccess文件中以[R=301,L]结尾的重写规则;在Nginx上,是端口80的server块中的一行return 301 https://$host$request_uri;。将FORCE_SSL_ADMIN添加到wp-config.php中以同时覆盖仪表盘。

我还需要对数据库运行搜索和替换吗?

通常不需要,而这是许多指南尚未跟上的一项变化。自WordPress 5.7起,一旦两个站点URL设置都使用https,WordPress会在页面渲染时重写内容中不安全的URL。对于硬编码在主题文件、序列化插件选项,或页面构建器内容中的URL,仍值得运行搜索和替换,但这是一个清理步骤,而非迁移的必需部分。

将WordPress网站切换到HTTPS需要多长时间?

如果您的主机已经发行了证书,大约需要五分钟。发行免费证书并运行插件向导需要十到十五分钟。使用付费域名验证证书进行手动安装大约需要三十分钟,而组织验证或扩展验证在您能安装任何东西之前,会增加一到五天的验证时间。之后修复混合内容是可变部分,取决于您有多少内容带有硬编码URL。

切换到HTTPS会损害我的排名吗?

不会永久损害,前提是每个HTTP URL都通过301重定向到其HTTPS对应版本。Google将此次迁移视为带有URL更改的网站迁移,因此在重新抓取期间预计会有几周的波动,并预计在此期间展示次数会在您的HTTP和HTTPS Search Console属性之间分开显示。持续性的下降通常可追溯到被遗漏的重定向,而不是HTTPS本身。

为什么我的WordPress网站安装证书后仍显示”不安全”?

大多数情况可归结为三个原因。设置 > 常规中的站点URL仍为http,因此WordPress继续提供HTTP页面。或者页面至少加载了一个通过HTTP传输的资源,这就是混合内容。或者证书安装时没有包含中间证书,导致验证不一致。请先运行SSL Checker,因为它能区分安装问题和内容问题。

要将其他平台迁移到HTTPS,或想了解通用流程?请查看我们关于如何将网站从HTTP切换到HTTPS的指南。

立即订购 SSL 证书, 可节省 10% 的费用!

快速发行, 强大加密, 99.99% 的浏览器信任度, 专业支持和 25 天退款保证. 优惠券代码 SAVE10

龙飞行的详细图像
撰写人

经验丰富的内容撰稿人, 擅长 SSL 证书. 将复杂的网络安全主题转化为清晰, 引人入胜的内容. 通过有影响力的叙述, 为提高数字安全作出贡献.