baicai

白菜

一个勤奋的代码搬运工!

解决 Firefox 访问weibo搜索或热搜提示 建立安全连接失败

应用版本:firefox 开发者版 v101
问题描述:微博主页可以正常访问,但点击搜索或热搜链接,都提示:

    建立安全连接失败

    连接到 s.weibo.com 时发生错误。

        由于不能验证所收到的数据是否可信,无法显示您想要查看的页面。
        建议向此网站的管理员反馈这个问题。

    详细了解…

通过 curl -v “网址” 反复重试对比发现在访问微博热搜的时候有一个加密协商被 “微博账户认证网关服务器” 拒绝了。

具体测试指令:
通过

    curl -v "https://s.weibo.com/weibo?q=%23%E7%A5%9D%E8%9E%8D%E5%8F%B7%E5%87%86%E5%A4%87%E5%9C%A8%E7%81%AB%E6%98%9F%E8%B6%8A%E5%86%AC%23&topic_ad="

得到 302 跳转请求链接
继续

    curl -v "https://passport.weibo.com/visitor/visitor?entry=miniblog&a=enter&url=https%3A%2F%2Fs.weibo.com%2Fweibo%3Fq%3D%2523%25E7%25A5%259D%25E8%259E%258D%25E5%258F%25B7%25E5%2587%2586%25E5%25A4%2587%25E5%259C%25A8%25E7%2581%25AB%25E6%2598%259F%25E8%25B6%258A%25E5%2586%25AC%2523%26topic_ad%3D&domain=.weibo.com&sudaref=&ua=php-sso_sdk_client-0.6.29&_rand=1651842429.1375"

返回

    ……
    * TLSv1.2 (IN), TLS handshake, Finished (20):
    * SSL connection using TLSv1.2 / AES256-GCM-SHA384
    * ALPN, server did not agree to a protocol
    * Server certificate:
    *  subject: C=CN; ST=Beijing; O=Sina.com Technology(China)Co.,ltd; CN=sina.com
    ……

注意这段提示:

    ALPN, server did not agree to a protocol

ALPN#

ALPN (Application-Layer Protocol Negotiation): 应用层协议协商是 TLS 的一个扩展,故而应用层协议在协商加密协议的过程中,避免了额外的往返通讯开销。
ALPN 支持任意应用层协议的协商,目前应用最多是 HTTP2 的协商。当前主流浏览器,都只支持基于 HTTPS 部署的 HTTP/2,因为浏览器是基于 ALPN 协议来判断服务器是否支持 HTTP2 协议。

浏览器协商原理#

可以通过 WireShark 抓包分析 ALPN 协商协议交互的过程

*浏览器在进行SSL连接,第一次发送Client Hello包时,在扩展字段里携带浏览器支持的版本。

*服务器在返回Server Hello包时,如果服务器支持http 2,则会返回h2,如果不支持,则从客户端支持的协议列表中选取一个它支持的协议,一般为http/1.1。

浏览器和服务端都支持 ALPN 协商,是用上 HTTP/2 的大前提。

大部分 Web Server 都依赖 OpenSSL 库提供 https服务,是否支持 ALPN 完全取决于使用的 OpenSSL 版本,OpenSSL 1.0.2 版本才开始支持 ALPN。

关闭 Firefox ALPN 功能#

地址栏输入

    about:config

确认风险提示

输入“ALPN”

    security.ssl.enable_alpn

的值切换为 false

参考:
ALPN

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。