15%

全场主机优惠15%

测试技能,享折扣

使用代码:

Skills
开始使用
10.10.2024

如何在您的WordPress网站上安装SSL证书

SSL证书(安全套接层/TLS)是一种加密协议绑定,用于加密Web服务器与浏览器之间传输的数据。在WordPress网站上安装SSL意味着每个HTTP请求都会被重定向到HTTPS,浏览器会显示一个挂锁图标,敏感数据——登录凭据、表单提交、支付详情——将通过加密通道传输,而非明文传输。

对于WordPress而言,SSL安装涉及三个不同层面:在服务器或托管层面配置证书、配置WordPress本身以通过HTTPS提供所有资源,以及消除会悄然破坏安全上下文的混合内容警告。如果遗漏其中任何一个环节,您的网站将显示损坏的挂锁、触发浏览器安全警告,或完全无法通过HTTPS验证。

第一步:选择正确的SSL证书类型

并非所有SSL证书都提供相同级别的验证或信任信号。选择错误的类型是一个常见错误,要么浪费金钱,要么反之,对处理敏感交易的网站保护不足。

验证级别对比

证书类型验证级别签发时间适用场景浏览器信任信号
**域名验证(DV)**仅验证域名所有权数分钟至数小时博客、个人网站、开发环境挂锁图标
**组织验证(OV)**域名 + 法律实体1–3个工作日企业网站、SaaS门户挂锁 + 证书中的组织详情
**扩展验证(EV)**完整法律 + 运营审查1–5个工作日电子商务、银行、高信任度门户挂锁 + 组织名称(部分浏览器)
**通配符 DV/OV**域名 + 所有子域名数分钟至数天多子域名部署挂锁
**多域名(SAN)**多个独立域名数分钟至数天管理多个资产的代理机构挂锁

免费SSL与付费SSL

Let’s Encrypt通过ACME协议签发免费的自动化DV证书,有效期90天,支持自动续期。它受到所有主流浏览器的信任,是绝大多数WordPress网站的正确选择。较短的有效期是有意为之的——它强制实现自动化,并降低证书被盗用的风险窗口。

Cloudflare的免费SSL运作方式有所不同:它加密访客与Cloudflare边缘节点之间的连接,但除非您配置了完全(严格)模式并使用有效的源证书,否则Cloudflare与您的源服务器之间的连接可能仍未加密。这是一个经常被误解的边缘情况,会造成虚假的安全感。

来自商业CA(DigiCert、Sectigo、GlobalSign)的付费证书在您需要OV或EV验证、担保,或Let’s Encrypt不支持的特定SAN/通配符配置时是必要的。

如果您需要为域名购买受信任的证书,AlexHost提供SSL证书,可直接从您的账户面板进行便捷的签发和管理。

第二步:在托管层面安装SSL证书

在WordPress能够提供HTTPS响应之前,必须先在Web服务器上安装证书。具体方法取决于您的托管环境。

通过cPanel安装SSL(共享主机和VPS托管)

cPanel是共享和托管环境中最常见的控制面板。如果您的主机使用AutoSSL(Sectigo支持)或原生支持Let’s Encrypt,只需单击一次即可自动配置和续期证书。

当您拥有来自CA的证书文件时,手动安装步骤如下:

  1. 登录cPanel并导航至安全 > SSL/TLS
  2. 点击管理SSL网站
  3. 从下拉菜单中选择目标域名。
  4. 将三个文件的内容粘贴到相应字段中:
  • 证书(CRT):来自CA的已签名证书。
  • 私钥(KEY):在CSR创建过程中生成——切勿共享此文件。
  • 证书颁发机构捆绑包(CABUNDLE):中间链证书。
  1. 点击安装证书

如果您在带有cPanel的VPS上运行WordPress,AutoSSL通常会自动处理WHM中所有域名的证书。请在WHM > SSL/TLS > 管理AutoSSL下验证域名已被覆盖,且证书不处于待处理或失败状态。

在带有Apache的VPS上手动安装SSL

在运行Apache的自管理Linux VPS上,该过程需要直接编辑虚拟主机配置。

在Debian/Ubuntu上安装Certbot(Let’s Encrypt客户端):

sudo apt update
sudo apt install certbot python3-certbot-apache -y

自动获取并安装证书:

sudo certbot --apache -d yourdomain.com -d www.yourdomain.com

Certbot会修改您的Apache虚拟主机配置、安装证书,并设置用于自动续期的cron任务或systemd定时器。验证续期定时器是否处于活动状态:

sudo systemctl status certbot.timer

对于VPS上的Nginx:

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com

在Apache上手动安装证书(使用付费CA证书时):

将证书文件放置在安全目录中,然后编辑您的虚拟主机:

<VirtualHost *:443>
    ServerName yourdomain.com
    ServerAlias www.yourdomain.com
    DocumentRoot /var/www/html

    SSLEngine on
    SSLCertificateFile      /etc/ssl/certs/yourdomain.crt
    SSLCertificateKeyFile   /etc/ssl/private/yourdomain.key
    SSLCertificateChainFile /etc/ssl/certs/yourdomain_ca_bundle.crt
</VirtualHost>

重启Apache以应用更改:

sudo systemctl restart apache2

如果您在独立服务器上管理高流量WordPress安装,您可以完全控制密码套件、HSTS头部和OCSP装订——这些配置在共享主机上是无法实现的。

在带有Nginx的VPS上手动安装SSL

server {
    listen 443 ssl;
    server_name yourdomain.com www.yourdomain.com;

    ssl_certificate     /etc/ssl/certs/yourdomain.crt;
    ssl_certificate_key /etc/ssl/private/yourdomain.key;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;

    # OCSP Stapling
    ssl_stapling on;
    ssl_stapling_verify on;
    resolver 8.8.8.8 1.1.1.1 valid=300s;

    root /var/www/html;
    index index.php;
}

编辑后重新加载Nginx:

sudo nginx -t && sudo systemctl reload nginx

第三步:通过301重定向在服务器层面强制使用HTTPS

在修改WordPress设置之前,先在服务器层面强制执行HTTP到HTTPS的重定向。这比单独依赖WordPress或插件更为可靠,并且可以防止浏览器加载HTTP版本。

Apache:.htaccess 重定向

打开您的.htaccess文件(位于WordPress根目录,通常为/var/www/html/.htaccess,或可通过cPanel文件管理器访问),并在现有WordPress重写规则上方添加以下代码块:

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

关键注意事项:如果您将此代码块放置在# BEGIN WordPress标记*之后*,它可能会被WordPress核心更新覆盖。请务必将服务器级重定向规则放置在WordPress管理的代码块上方。

Nginx:服务器块重定向

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

HSTS头部(高级,推荐)

一旦确认您的HTTPS设置稳定,添加HTTP严格传输安全头部,以指示浏览器永不尝试HTTP连接:

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

警告:在确认每个子域名也拥有有效SSL证书之前,请勿启用带有preload的HSTS。预加载在短期内是不可逆的,并且会破坏未配置HTTPS的子域名。

第四步:更新WordPress以通过HTTPS提供所有内容

在证书安装完毕且服务器级重定向就位后,必须告知WordPress为所有内部链接、资源和API端点生成HTTPS URL。

方案A:手动更新WordPress网站URL

  1. 在WordPress管理后台,前往设置 > 常规
  2. WordPress地址(URL)网站地址(URL)均从http://更改为https://
  3. 点击保存更改

保存后WordPress会立即将您退出登录。请使用HTTPS URL重新登录。

方案B:通过wp-config.php更新URL

如果您无法访问管理面板,或偏好基于代码的方式,请在wp-config.php/* That's all, stop editing! */行之前添加以下代码:

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

方案C:更新数据库中硬编码的HTTP URL

WordPress将URL存储在数据库中,包括文章元数据和选项表中的序列化数据。直接对原始SQL进行查找替换可能会损坏序列化数组。请使用WP-CLI进行安全的、支持序列化的替换:

wp search-replace 'http://yourdomain.com' 'https://yourdomain.com' --skip-columns=guid --all-tables

--skip-columns=guid标志用于保留文章GUID,根据WordPress最佳实践,这些GUID不应被更改。请在WordPress根目录下运行此命令,并确保wp-config.php中已配置适当的数据库凭据。

此外,Better Search Replace插件可通过管理界面执行相同操作,并支持序列化数据。

第五步:修复混合内容警告

当HTTPS页面通过HTTP加载一个或多个资源(图片、脚本、样式表、iframe)时,就会出现混合内容警告。这会破坏安全上下文、隐藏挂锁图标,在某些情况下还会导致浏览器完全阻止该资源。

诊断混合内容

打开浏览器的开发者工具(F12),前往控制台选项卡,查找以Mixed Content:为前缀的警告。消息中会标识出导致问题的确切资源URL。

或者,使用Why No Padlock?工具或运行SSL Labs扫描以获取完整报告。

修复混合内容:插件方法

Really Simple SSL是用于此目的最广泛使用的插件。激活后,它会:

  • 设置HTTPS服务器变量,强制WordPress识别安全连接。
  • 添加基于JavaScript的内容过滤器,动态重写HTTP URL。
  • 可选择刷新重写规则并更新网站URL。

SSL Insecure Content Fixer提供更精细的控制,允许您在简单的输出缓冲区替换和更深层的WordPress过滤器钩子方法之间进行选择——当Really Simple SSL的JavaScript方法导致某些页面构建器出现渲染问题时,此方法非常有用。

修复混合内容:手动方法

对于主题文件或自定义插件中硬编码的HTTP URL,请搜索您的主题目录:

grep -r "http://yourdomain.com" /var/www/html/wp-content/themes/your-theme/

将所有出现的内容替换为https://,或者对于无法保证HTTPS可用性的第三方资源,更好的做法是使用协议相对URL(//yourdomain.com/...)。

对于SSL迁移前上传的嵌入媒体,如果您尚未执行第四步中的WP-CLI搜索替换命令,请立即执行,因为图片附件URL存储在wp_postswp_postmeta表中。

第六步:验证SSL安装

切勿假设安装已成功——请系统地进行验证。

SSL Labs测试

访问https://www.ssllabs.com/ssltest/并输入您的域名。配置正确的WordPress网站应获得AA+评级。获得A+评级需要:

  • 支持TLS 1.2和1.3,并禁用TLS 1.0和1.1。
  • 强密码套件(无RC4,无3DES)。
  • 存在HSTS头部。
  • 启用OCSP装订。
  • 无链路问题(中间证书正确安装)。

浏览器验证

点击地址栏中的挂锁图标。在Chrome中,导航至连接安全 > 证书有效,确认颁发者、有效期和主题备用名称(SAN)与您的域名匹配。

命令行验证

openssl s_client -connect yourdomain.com:443 -servername yourdomain.com

此命令输出完整的证书链、协商的密码和TLS版本。查找Verify return code: 0 (ok)以确认链路受信任。

检查证书到期时间

echo | openssl s_client -connect yourdomain.com:443 2>/dev/null | openssl x509 -noout -dates

对于Let’s Encrypt证书,还需验证自动续期演练是否正常运行:

sudo certbot renew --dry-run

第七步:安装后加固与SEO清理

更新Google Search Console

在Google Search Console中将您网站的HTTPS版本添加为新资产。Google将http://https://视为独立资产。提交您的HTTPS站点地图(https://yourdomain.com/sitemap.xml)以加速对更新URL的重新抓取。

更新站点地图和规范标签

确保您的XML站点地图(由Yoast SEO、Rank Math或类似工具生成)仅输出HTTPS URL。检查主题<head>中的规范标签是否引用HTTPS。即使301重定向已就位,指向页面HTTP版本的规范标签也会使爬虫感到困惑。

通知Google变更

在Google Search Console中,仅当您迁移到全新域名时才使用地址变更工具。对于同一域名上的HTTP到HTTPS迁移,301重定向会处理信号传递——无需使用地址变更工具。

WordPress多站点注意事项

在WordPress多站点网络中,您必须更新wp_siteurlwp_blogs表中每个子站点(而非仅主站点)的siteurlhome值。WP-CLI可逐站点处理:

wp search-replace 'http://subdomain.yourdomain.com' 'https://subdomain.yourdomain.com' --url=subdomain.yourdomain.com --all-tables

实用决策矩阵:选择哪种SSL方法

您的托管环境推荐的SSL方法续期方式操作难度
带有cPanel的共享主机AutoSSL或通过cPanel使用Let’s Encrypt自动极低
[VPS托管](https://alexhost.com/zh/vps/)(Apache/Nginx)Certbot(Let’s Encrypt)通过systemd定时器自动续期
带有cPanel/WHM的VPSWHM中的AutoSSL自动极低
[独立服务器](https://alexhost.com/zh/dedicated-servers/)Certbot或付费CA证书手动或自动中等
Cloudflare代理域名Cloudflare SSL + 源证书自动(Cloudflare)低(但需验证完全严格模式)
电子商务/高信任度网站付费OV或EV证书每年手动续期

关键技术要点

  • 证书安装和WordPress配置是独立的步骤。在服务器层面安装的证书不会自动使WordPress生成HTTPS URL。两者都必须进行配置。
  • 混合内容是迁移后最常见的故障。在激活任何SSL插件之前,使用WP-CLI运行数据库搜索替换,从源头捕获硬编码的HTTP URL。
  • Let’s Encrypt自动续期必须经过验证,而非假设其正常运行。初始设置后运行certbot renew --dry-run并监控到期日期。续期失败会在90天后悄然破坏您的网站。
  • HSTS是一扇单向门。在每个子域名都拥有有效证书且您承诺永久使用HTTPS之前,请勿设置较长的max-age或启用preload
  • Cloudflare的免费SSL默认情况下不是端到端加密的。将SSL/TLS模式设置为完全(严格),并在您的服务器上安装源证书以弥补这一缺口。
  • 在共享主机上,请验证您的托管服务商的SSL同时覆盖顶级域名(yourdomain.com)和www子域名。仅为其中一个签发的证书在另一个上会产生名称不匹配错误。
  • WordPress数据库中的序列化数据无法通过原始SQL REPLACE()安全更新。请始终使用WP-CLI或支持序列化的插件。

对于托管在共享虚拟主机上的网站,实现SSL最快捷的方式是通过cPanel启用AutoSSL或Let’s Encrypt——整个过程不到五分钟,无需命令行访问。对于需要自定义密码配置、OCSP装订或多域名证书的更复杂部署,带有可配置控制面板的VPS可为您提供必要的服务器级访问权限。

常见问题

安装SSL证书是否能直接提升我的Google排名?

Google于2014年确认HTTPS为排名信号。直接的排名提升幅度有限,但间接收益——降低因浏览器安全警告导致的跳出率、获得HTTP/2和HTTP/3的资格,以及用户信任——对自然搜索表现具有可量化的累积效果。

SSL和TLS有什么区别?

SSL(安全套接层)是TLS(传输层安全)的已弃用前身。所有现代证书均使用TLS 1.2或1.3。”SSL证书”这一术语作为行业简称延续至今,但自2015年以来,没有任何浏览器或服务器实际使用SSL。如果您的服务器仍接受SSLv3或TLS 1.0,请立即禁用它们——它们分别容易受到POODLE和BEAST攻击。

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

最常见的原因是混合内容错误:页面上至少有一个资源通过HTTP加载。打开浏览器开发者工具,在控制台中查找混合内容警告,并使用WP-CLI搜索替换或Really Simple SSL插件重写有问题的URL。另一个原因是设置 > 常规中的WordPress网站URL仍指向http://

如何在Let’s Encrypt证书到期前续期?

Certbot会安装一个systemd定时器或cron任务,当证书距到期不足30天时自动尝试续期。要强制立即续期,请运行sudo certbot renew --force-renewal。要在不做任何更改的情况下进行测试,请运行sudo certbot renew --dry-run。如果续期失败,请查看/var/log/letsencrypt/letsencrypt.log处的续期日志。

我能在没有服务器或cPanel访问权限的情况下为WordPress安装SSL吗?

可以,通过Cloudflare实现。将您的域名添加到Cloudflare,将您的域名服务器指向Cloudflare,并启用SSL/TLS设置。访客到Cloudflare的连接会立即加密。但是,请将模式设置为完全(严格),并在您的服务器上安装Cloudflare源证书,以同时加密Cloudflare到源服务器的连接。如果不这样做,Cloudflare与您服务器之间的连接将保持未加密状态,对于任何处理用户数据的网站而言,这是一个重大安全漏洞。

15%

全场主机优惠15%

测试技能,享折扣

使用代码:

Skills
开始使用