如何为WordPress通配符子站点配置加密证书(多站点场景)
嘿,我来帮你搞定这个问题!针对WordPress多站点的通配符SSL证书配置,分两种情况给你一步步说清楚:
首先要确认你的现有证书是通配符SSL证书(即包含*.yourdomain.com的主题备用名称),如果是单域名证书(仅yourdomain.com),那没法覆盖子站点,得先换成通配符证书。确认没问题后,按以下步骤操作:
更新Web服务器配置(分Nginx和Apache两种场景):
- 对于Nginx:打开你的站点配置文件(通常在
/etc/nginx/sites-available/目录下),修改server_name为yourdomain.com *.yourdomain.com,确保ssl_certificate和ssl_certificate_key指向通配符证书的文件路径(比如/etc/letsencrypt/live/yourdomain.com/fullchain.pem和/privkey.pem),然后添加必要的SSL安全配置(比如ssl_protocols TLSv1.2 TLSv1.3;),最后重启Nginx:sudo systemctl restart nginx。 - 对于Apache:修改VirtualHost配置文件(通常在
/etc/apache2/sites-available/),设置ServerName yourdomain.com,ServerAlias *.yourdomain.com,然后指定SSLCertificateFile、SSLCertificateKeyFile(以及SSLCACertificateFile如果有)为通配符证书的路径,启用SSL模块并重启Apache:sudo a2enmod ssl && sudo systemctl restart apache2。
- 对于Nginx:打开你的站点配置文件(通常在
更新WordPress多站点设置:
- 登录WordPress后台,进入「设置」→「网络设置」,把「站点地址(URL)」和「WordPress地址(URL)」里的
http://替换成https://,确保主站和所有子站点的URL都使用HTTPS。 - 如果之前站点用的是HTTP,需要批量更新数据库里的旧URL:登录数据库(比如用phpMyAdmin或
mysql命令),执行以下SQL语句(注意替换wp_为你的数据库表前缀):-- 更新主站的home和siteurl UPDATE wp_options SET option_value = REPLACE(option_value, 'http://yourdomain.com', 'https://yourdomain.com') WHERE option_name IN ('home', 'siteurl'); -- 更新所有子站点的域名记录 UPDATE wp_blogs SET domain = REPLACE(domain, 'http://', 'https://'); -- 更新站点元数据里的URL UPDATE wp_sitemeta SET meta_value = REPLACE(meta_value, 'http://yourdomain.com', 'https://yourdomain.com'); - 安装并激活Really Simple SSL插件,它会自动修复站内的混合内容问题(把HTTP资源链接替换成HTTPS),避免浏览器出现安全警告。
- 登录WordPress后台,进入「设置」→「网络设置」,把「站点地址(URL)」和「WordPress地址(URL)」里的
测试验证:访问任意子站点(比如
sub.yourdomain.com),查看浏览器地址栏的锁形图标,确认证书正常生效,无安全提示。
如果还没有通配符证书,推荐用免费的Let's Encrypt证书,步骤如下:
安装Certbot工具:根据你的服务器系统选择对应的安装命令:
- Ubuntu/Debian(Nginx):
sudo apt update && sudo apt install certbot python3-certbot-nginx - Ubuntu/Debian(Apache):
sudo apt update && sudo apt install certbot python3-certbot-apache - CentOS/RHEL:
sudo dnf install certbot python3-certbot-nginx(或python3-certbot-apache)
- Ubuntu/Debian(Nginx):
申请通配符证书:必须使用DNS验证方式(HTTP验证无法覆盖通配符),运行命令:
sudo certbot certonly --manual --preferred-challenges=dns -d yourdomain.com -d *.yourdomain.com按照提示,在你的域名DNS服务商后台添加一条指定的TXT记录(比如
_acme-challenge.yourdomain.com对应某个验证值),等待DNS生效后按回车继续。验证通过后,Certbot会把证书文件生成在/etc/letsencrypt/live/yourdomain.com/目录下。小技巧:如果用Cloudflare、阿里云DNS等服务商,可安装对应Certbot DNS插件实现自动添加TXT记录,不用手动操作,比如Cloudflare插件:
sudo apt install python3-certbot-dns-cloudflare,然后配置API密钥即可自动验证。配置Web服务器:参考「情况1」中的Web服务器配置步骤,把证书路径指向新生成的通配符证书,重启服务器。
WordPress多站点适配:同样参考「情况1」中的WordPress设置步骤,更新URL、数据库内容,并处理混合内容问题。
设置证书自动续期:Let's Encrypt证书有效期90天,添加定时任务实现自动续期:
sudo crontab -e在打开的文件中添加一行:
0 12 * * * /usr/bin/certbot renew --quiet这会让服务器每天中午12点自动检查证书是否需要续期,成功后自动重启Web服务器。
内容的提问来源于stack exchange,提问作者Cor Cool

