主域换成 https 之后,图片仍然走 img.example.com,那个子域没有证书,浏览器里图片偶尔能出,蜘蛛抓到的却全是握手失败,页面被判资源缺失。
把日志和配置对完,能解释这个现象的基本就这几处。证书 SAN 里只有主域和 www,没有图片子域。也可能是CDN 的图片域名是单独配置,证书没有同步申请。
不容易想到的是,页面里的图片地址没有跟着主域一起切协议。
动手时先检查子域证书是否覆盖
echo | openssl s_client -connect img.example.com:443 -servername img.example.com 2>/dev/null | openssl x509 -noout -text | grep -A1 'Subject Alternative Name'
补签泛域名或单独申请子域证书
acme.sh --issue -d img.example.com --webroot /var/www/html
等前面都确认过,再把图片地址统一改成相对协议或 https
wp db query "UPDATE wp_posts SET post_content=REPLACE(post_content,'http://img.example.com','https://img.example.com');"
这台环境是别人交接的,不少默认值被动过,只能一项项核。
恢复的判定其实很直接。补签后图片全部可加载,页面混合内容告警清零,图片抓取量一周内恢复。
子域名的证书要单独记在巡检清单里,主域签好了不代表整站都安全。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。
