最近访问某网站时,谷歌浏览器提示“您的连接不是私密连接”、“NET::ERR_CERT_COMMON_NAME_INVALID”,展开详情:“您目前无法访问xxx.com,因为此网站使用了HSTS。网络错误和攻击通常是暂时的,因此,此网页稍后可能会恢复正常。”,见下图1.
简单查了下资料,HSTS的意思是HTTP严格传输安全(HTTP Strict Transport Security),是网站用来声明它们只能使用安全连接(HTTPS)访问的一种安全规范。 如果网站服务器端使用了HSTS,那么要求客户端浏览器必须严格拒绝所有的 HTTP 连接并阻止用户接受不安全的 SSL 证书。大白话翻译一下,就是如果浏览器接收到使用HTTP加载资源的请求,则必须尝试使用HTTPS请求替换;如果替换失败,那么会直接终止连接,拒绝展示网页信息。
问题分析:可以不用纠结理解什么是HSTS,仔细观察下,发现地址栏前面的HTTPS证书状态标志显示为“不安全”,鼠标点击一下,弹出的详细信息,“您与此网站之间建立的连接不安全”,“证书无效”,如下图2.可见,被服务器端HSTS拦截正常网页服务的罪魁祸首是HTTPS证书,只要解决HTTPS证书无效的问题即可。
解决思路:将该网站的证书手动添加到“受信任的根证书颁发机构”下即可。
操作步骤:
1、导出网站异常证书:点击上图2中的“证书无效”选项,在弹出的证书详细窗口上点击“详细信息(D)”,“证书层次机构”展开到最底层的域名级别,“证书字段”选中“SHA-256 指纹”下的“证书”,最后点击下方的“导出”按钮,将证书导出到电脑上,见下图3; #导出的证书可重命名,后缀名选择.crt格式
2、手动导入证书,并将证书放入到“受信任的根证书颁发机构”下:双击步骤1保存到电脑本地上的.crt证书,点击“安装证书(I)…”,在弹出的证书导入向导窗口上,选择“将所有的证书都放入下列存储(P)”,选中“受信任的根证书颁发机构”,然后一直下一步直至完成,见下图4。
3、刷新浏览器页面,HTTPS证书状态标志恢复正常,网页内容正常加载,见下图5.