移动端HTTPS跳转后子页面显示证书错误怎么办?

IT人彦会 阅读 15

我在开发电商小程序时遇到个奇怪的问题,主域名已经配置了HTTPS,但跳转到支付页面时浏览器突然提示NET::ERR_CERT_COMMON_NAME_INVALID。

支付页面是单独的子域名pay.example.com,我的配置是这样的:


<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Refresh" content="0; url=/pay.html">
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
    正在跳转支付页面...
</body>
</html>

我已经确认主域名证书包含子域名,服务器配置了HSTS头,但移动端真机测试时只有支付页面报错。试过清除缓存、用不同机型测试都没解决,这是哪里配置错了?

我来解答 赞 4 收藏
二维码
手机扫码查看
1 条解答
可欣
可欣 Lv1
这个问题大概率是证书配置或者跳转逻辑有问题。虽然你说主域名的证书包含了子域名,但还是建议你重新检查一下证书的 SAN(Subject Alternative Name)字段,确保 pay.example.com 真的在证书的有效范围内。

另一个可能的原因是跳转逻辑本身的问题。你用的是 meta 刷新跳转,这种方式可能会导致浏览器在处理 HTTPS 请求时出现一些奇怪的行为,尤其是在移动端环境下。我建议改成服务器端的 302 跳转,这样能更明确地告诉浏览器目标地址和协议。

代码示例:

header("Location: https://pay.example.com/pay.html", true, 302);
exit;


另外,HSTS 的配置也需要特别注意。如果你在主域名上启用了 HSTS,但子域名的 HTTPS 配置不完整,浏览器会直接拒绝访问子页面。你可以暂时关闭 HSTS 测试一下,确认问题是否与此相关。如果确实是 HSTS 导致的,记得把子域名也加入到 HSTS 配置中。

最后提醒一下,支付页面的安全性非常重要,建议你在开发完成后做一次完整的 SSL/TLS 安全扫描,检查是否有其他潜在问题。还要确保服务器的时间是正确的,时间不同步也可能导致证书校验失败。

对了,别忘了测试环境和生产环境的配置要一致,之前我就遇到过类似问题,结果发现是测试环境用了自签名证书,上线后忘记切换成正式证书了,真是折腾了半天。
点赞 2
2026-02-14 11:16