
HTTPS 是网站安全的基础保障,不仅能加密用户与服务器的传输数据、保护用户隐私,还能提升搜索引擎排名(Google、百度均优先收录 HTTPS 网站)。针对 WordPress 网站,开启 HTTPS 需完成 “SSL 证书获取→服务器配置→WordPress 内部适配→异常排查” 四步,以下结合不同服务器环境(宝塔面板、原生 Linux/Windows),提供详细可落地的操作指南。
一、前置准备:明确 HTTPS 开启的核心前提
在操作前,需确认以下条件已满足,避免后续配置失败:
- 域名已完成解析:确保 WordPress 网站的域名(如www.example.com)已正确解析到服务器公网 IP,且解析已生效(可通过ping 域名验证,解析生效时间通常为 10-30 分钟)。
- 服务器开放 443 端口:HTTPS 默认使用 443 端口,需在服务器防火墙(如 Linux 的 firewalld/iptables、Windows 高级防火墙)及服务商安全组(如阿里云、腾讯云安全组)中,开放 “TCP 443 端口” 的入站规则(具体操作见下文 “服务器配置” 章节)。
- 选择合适的 SSL 证书类型:根据业务需求选择证书,推荐优先级:
- 免费证书:适合个人博客、小型网站,如 Let's Encrypt(有效期 90 天,支持自动续期)、阿里云 / 腾讯云免费证书(有效期 1 年);
- 付费证书:适合企业网站、电商平台,如 OV 证书(验证企业身份,显示 “企业名称”)、EV 证书(浏览器地址栏显示绿色小锁 + 企业名称,安全性最高)。
二、第一步:获取 SSL 证书(3 种主流方式,覆盖不同场景)
方式 1:通过宝塔面板一键申请(推荐新手,最简单)
若 WordPress 部署在宝塔面板管理的服务器上,可直接在面板内申请免费证书,无需手动操作:
- 登录宝塔面板,进入 “网站” 页面,找到目标 WordPress 网站,点击 “设置”;
- 在左侧菜单选择 “SSL”,进入 SSL 配置页面;
- 在 “证书类型” 中选择 “Let's Encrypt”,勾选 “自动续期”(避免证书过期导致 HTTPS 失效),点击 “申请”;
- 等待 1-2 分钟,面板会自动完成域名验证、证书申请与下载,申请成功后会显示 “证书已部署”。
方式 2:通过云服务商申请(适合使用阿里云 / 腾讯云服务器的用户)
若服务器来自阿里云、腾讯云等平台,可在服务商控制台申请免费 / 付费证书:
- 以阿里云为例:
- 登录阿里云控制台,进入 “SSL 证书(应用安全)” 页面,点击 “购买证书”;
- 选择 “免费证书”(或付费证书),填写域名(如www.example.com),完成支付(免费证书支付金额为 0);
- 进入 “证书申请” 页面,选择 “自动 DNS 验证”(无需手动添加解析,阿里云会自动完成验证),点击 “提交审核”;
- 审核通过后(免费证书通常 10 分钟内通过),点击 “下载”,选择与服务器 Web 服务匹配的证书格式(如 Nginx 对应 “Nginx” 格式,Apache 对应 “Apache” 格式),下载后得到压缩包(包含.pem/.crt证书文件与.key私钥文件)。
方式 3:手动申请 Let's Encrypt 证书(适合技术进阶用户)
若需手动控制证书申请流程,可通过 Certbot 工具在服务器上直接申请:
- Linux 服务器(以 CentOS 7 为例):
- 安装 Certbot:yum install certbot python2-certbot-nginx -y(若使用 Apache,替换为python2-certbot-apache);
- 申请证书并自动配置 Web 服务:certbot --nginx -d www.example.com -d example.com(-d后接需要绑定证书的域名,支持多域名);
- 执行命令后,按提示输入邮箱(用于接收证书过期提醒),同意服务条款,选择 “Redirect”(自动将 HTTP 请求重定向到 HTTPS),等待完成即可。
- 证书续期:Let's Encrypt 证书有效期 90 天,可添加定时任务自动续期:
- 执行crontab -e,添加定时任务:0 0 1 * * certbot renew --quiet(每月 1 日 0 点自动检查证书,若即将过期则自动续期)。
三、第二步:配置服务器,启用 HTTPS(分 Nginx/Apache/Windows IIS)
场景 1:Web 服务为 Nginx(最常用,适合 Linux 服务器)
情况 A:使用宝塔面板的用户(已自动配置,无需手动操作)
通过宝塔面板申请证书后,面板会自动修改 Nginx 配置文件,无需手动编辑,可跳过此步骤,直接进入 “第三步:WordPress 内部适配”。
情况 B:手动配置(适合未使用宝塔面板的用户)
- 将下载的 SSL 证书文件(如www.example.com.pem证书文件、www.example.com.key私钥文件)上传到服务器的证书目录,推荐路径:/etc/nginx/ssl/(需先创建ssl目录:mkdir -p /etc/nginx/ssl/);
- 找到 WordPress 网站对应的 Nginx 配置文件,通常路径:/etc/nginx/conf.d/www.example.com.conf(或/usr/local/nginx/conf/vhost/www.example.com.conf);
- 编辑配置文件,添加 HTTPS 监听与证书配置,完整配置示例如下(关键部分已标注注释):
server {
listen 80; # 监听HTTP 80端口,用于将HTTP重定向到HTTPS
server_name www.example.com example.com; # 网站域名
return 301 https://$server_name$request_uri; # 强制HTTP跳转HTTPS(核心配置)
}
server {
listen 443 ssl; # 监听HTTPS 443端口
server_name www.example.com example.com; # 与HTTP部分域名一致
# SSL证书配置(替换为你的证书路径)
ssl_certificate /etc/nginx/ssl/www.example.com.pem; # 证书文件路径
ssl_certificate_key /etc/nginx/ssl/www.example.com.key; # 私钥文件路径
# 优化HTTPS性能与安全性(避免浏览器兼容性问题)
ssl_protocols TLSv1.2 TLSv1.3; # 禁用不安全的TLS 1.0/1.1
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256; # 高强度加密套件
ssl_prefer_server_ciphers on; # 优先使用服务器端加密套件
ssl_session_cache shared:SSL:10m; # 启用SSL会话缓存,提升重复访问速度
# WordPress网站根目录配置(与原HTTP配置一致)
root /www/wwwroot/www.example.com; # 替换为你的WordPress根目录
index index.php index.html;
# WordPress伪静态配置(保持原配置不变,若未配置需添加)
location / {
try_files $uri $uri/ /index.php?$args;
}
# PHP解析配置(保持原配置不变)
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000; # 替换为你的PHP端口(通常为9000)
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
- 保存配置文件,执行nginx -t验证配置是否正确(显示 “test is successful” 说明配置无误);
- 重启 Nginx 服务,使配置生效:systemctl restart nginx(或/etc/init.d/nginx restart)。
场景 2:Web 服务为 Apache(适合 Linux/Windows 服务器)
- 将 SSL 证书文件(如cert.pem、private.key)上传到服务器,推荐路径:/etc/httpd/ssl/(Linux)或C:\Apache\ssl\(Windows);
- 编辑 Apache 主配置文件:
- Linux:/etc/httpd/conf/httpd.conf;
- Windows:C:\Apache\conf\httpd.conf;
- 确保以下模块已启用(去掉行首的#):
1 LoadModule ssl_module modules/mod_ssl.so
2 Include conf/extra/httpd-ssl.conf
- 编辑 SSL 专用配置文件httpd-ssl.conf(路径:Linux 为/etc/httpd/conf/extra/httpd-ssl.conf,Windows 为C:\Apache\conf\extra\httpd-ssl.conf),添加以下配置:
<VirtualHost _default_:443>
ServerName www.example.com # 网站域名
DocumentRoot
"/www/wwwroot/www.example.com" # WordPress根目录
SSLEngine on # 启用SSL
SSLCertificateFile "/etc/httpd/ssl/cert.pem" # 证书文件路径
SSLCertificateKeyFile "/etc/httpd/ssl/private.key" # 私钥文件路径
# 优化配置
SSLProtocol TLSv1.2 TLSv1.3 # 禁用旧协议
SSLCipherSuite ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256
</VirtualHost>
# 配置HTTP重定向到HTTPS
<VirtualHost *:80>
ServerName www.example.com
Redirect permanent / https://www.example.com/
</VirtualHost>
- 验证配置:httpd -t(Linux)或C:\Apache\bin\httpd.exe -t(Windows),无错误则重启 Apache:
- Linux:systemctl restart httpd;
- Windows:在 “服务” 中重启 “Apache2.4” 服务。
场景 3:Web 服务为 Windows IIS(适合 Windows 服务器用户)
- 打开 “Internet 信息服务 (IIS) 管理器”,选中服务器名称,双击 “服务器证书”;
- 点击右侧 “导入”,在弹出的对话框中:
- 选择下载的 SSL 证书文件(通常为.pfx格式,若为其他格式需先转换);
- 输入证书密码(若有),勾选 “允许此证书导出”,点击 “确定”;
- 选中目标 WordPress 网站,点击 “绑定”,在弹出的 “网站绑定” 窗口中点击 “添加”;
- 配置绑定信息:
- 类型:选择 “https”;
- 端口:默认 443(无需修改);
- SSL 证书:选择刚才导入的证书,点击 “确定”;
- 配置 HTTP 重定向到 HTTPS:
- 选中网站,双击 “HTTP 重定向”;
- 勾选 “将请求重定向到目标”,输入https://www.example.com$SCRIPT_NAME$QUERY_STRING;
- 在 “重定向类型” 中选择 “永久 (301)”,点击 “应用”;
- 重启 IIS 服务:打开 “命令提示符”,执行iisreset,或在 IIS 管理器中右键服务器名称选择 “重启”。
四、第三步:WordPress 内部适配,解决 “混合内容” 问题
方法 1:通过 WordPress 后台修改(适合未使用插件的用户)
- 登录 WordPress 后台(此时需通过https://域名/wp-admin访问,若无法登录,可先通过 HTTP 访问,修改后再切换);
- 进入 “设置→常规” 页面,修改以下两项:
- WordPress 地址(URL):将http://改为https://,如https://www.example.com;
- 站点地址(URL):同上,改为https://www.example.com;
- 点击 “保存更改”,此时 WordPress 会自动退出登录,需重新通过https://域名/wp-admin登录。
方法 2:通过插件一键修复(推荐,解决残留 HTTP 链接)
- 登录 WordPress 后台,进入 “插件→安装插件”,搜索 “Really Simple SSL”;
- 安装并激活该插件,激活后插件会自动检测 HTTPS 配置,弹出 “启用 SSL” 提示,点击 “Go ahead, activate SSL!”;
- 插件会自动完成以下操作:
- 修复数据库中所有旧 HTTP 链接为 HTTPS;
- 添加 “HTTPS 强制跳转” 代码到wp-config.php;
- 解决 “混合内容” 问题,确保所有资源通过 HTTPS 加载;
- 验证:点击插件 “设置”,查看 “SSL 状态” 显示 “SSL is active”,说明配置成功。
方法 3:手动修改 wp-config.php(适合插件修复失败的情况)
- 通过 FTP 工具(如 FileZilla)或宝塔面板 “文件” 功能,找到 WordPress 根目录下的wp-config.php文件;
- 在define('WP_DEBUG', false);(或类似代码)下方,添加以下代码:
// 强制使用HTTPS
define('FORCE_SSL_ADMIN', true);
if
(isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
$_SERVER['HTTPS'] = 'on';
}
// 修复混合内容
add_filter('script_loader_src', 'ssl_script_loader_src', 10, 2);
add_filter('style_loader_src', 'ssl_style_loader_src', 10, 2);
function ssl_script_loader_src($src, $handle) {
return preg_replace('/^http:/', 'https:', $src);
}
function ssl_style_loader_src($src, $handle) {
return preg_replace('/^http:/', 'https:', $src);
}
- 保存文件,重新访问网站,确认混合内容问题已解决。
五、第四步:验证 HTTPS 是否配置成功(3 个关键检查点)
- 浏览器访问验证:
- 打开 Chrome/Firefox 浏览器,输入https://域名,地址栏显示 “绿色小锁”,鼠标悬停小锁显示 “连接是安全的”,说明 HTTPS 已启用;
- 点击小锁→“证书”,可查看证书有效期、颁发机构,确认证书未过期且与域名匹配。
- 使用 SSL 检测工具验证(推荐 SSL Labs):
- 访问 SSL Labs 官网(https://www.ssllabs.com/ssltest/),输入网站域名,点击 “Submit”;
- 检测完成后,若显示 “Grade A” 或 “A+”,说明 SSL 配置安全(包含协议版本、加密套件、证书链完整性均无问题);
- 若检测出 “警告”(如 “支持 TLS 1.0”“证书链不完整”),需根据提示优化(如禁用旧协议、补充中间证书)。
- 检查混合内容问题:
- 在 Chrome 浏览器中打开网站,按F12打开 “开发者工具”,切换到 “Console”(控制台);
- 若控制台无 “Mixed Content”(混合内容)错误提示,说明所有资源均通过 HTTPS 加载;
- 若有错误,点击错误链接,定位到使用 HTTP 的资源(如http://example.com/wp-content/uploads/2024/01/img.jpg),通过 WordPress 后台编辑文章或使用插件批量替换为 HTTPS 链接。
