HTTPS 混合内容问题及解决方案

当 HTTPS 页面加载 HTTP 资源时,就会产生混合内容(Mixed Content)。浏览器会阻止不安全的请求,导致页面功能异常。本文介绍混合内容的类型、排查方法和解决方案。 什么是混合内容 HTTPS 页面中通过 HTTP 加载的资源称为混合内容: 1 2 3 4 <!-- HTTPS 页面中的混合内容 --> <script src="http://example.com/script.js"></script> <img src="http://example.com/image.jpg"> <link rel="stylesheet" href="http://example.com/style.css"> 混合内容类型 混合被动内容(Mixed Passive Content) 低风险资源,浏览器通常只显示警告: <img> 图片 <audio> / <video> 媒体 <object> 子资源 混合主动内容(Mixed Active Content) 高风险资源,浏览器会直接阻止: <script> 脚本 <link> 样式表 <iframe> 内嵌页面 XMLHttpRequest / Fetch 请求 <frame> / <object> 加载的页面 排查方法 浏览器控制台 打开开发者工具(F12),查看 Console 和 Security 面板: 1 2 3 Mixed Content: The page at 'https://example....

April 5, 2026 · 2 min · 黑豆子

OpenSSL s_client:SSL/TLS 连接调试工具

openssl s_client 是调试 SSL/TLS 连接的利器。它可以建立到远程服务器的 SSL/TLS 连接,显示证书链、协议版本、加密套件等详细信息,是排查 HTTPS 问题的必备工具。 基本用法 连接 HTTPS 服务器 1 openssl s_client -connect example.com:443 执行后会显示完整的 SSL/TLS 握手信息,包括证书链、协议版本、加密套件等。 指定 SNI(Server Name Indication) 对于共享 IP 的虚拟主机,必须指定 SNI: 1 openssl s_client -connect example.com:443 -servername example.com 不指定 SNI 时,服务器可能返回默认证书,导致证书验证失败。 常用场景 1. 查看证书信息 提取服务器证书并查看详情: 1 2 3 4 5 # 获取证书 echo | openssl s_client -connect www.baidu.com:443 -servername www.baidu.com 2>/dev/null | openssl x509 -noout -text # 只看有效期 echo | openssl s_client -connect www....

April 5, 2026 · 2 min · 黑豆子

使用 OpenSSL 检查证书有效期

证书过期会导致服务不可用,提前监控证书有效期是运维的基本功。OpenSSL 提供了多种检查证书有效期的方法。 检查远程服务器证书 查看有效期 1 echo | openssl s_client -connect www.baidu.com:443 -servername www.baidu.com 2>/dev/null | openssl x509 -noout -dates 输出: 1 2 notBefore=Jul 9 07:01:02 2025 GMT notAfter=Aug 10 07:01:01 2026 GMT notBefore:证书生效日期 notAfter:证书过期日期 检查本地证书文件 1 openssl x509 -in certificate.crt -noout -dates 查看剩余天数 1 openssl x509 -in certificate.crt -noout -checkend 0 输出: Certificate will not expire:证书未过期 Certificate will expire:证书已过期 检查是否在 30 天内过期(2592000 秒): 1 openssl x509 -in certificate.crt -noout -checkend 2592000 返回码:...

April 5, 2026 · 2 min · 黑豆子