WebOne HTTPS 解密原理:如何为老浏览器动态生成兼容 SSL 证书的完整指南

WebOne HTTPS 解密原理:如何为老浏览器动态生成兼容 SSL 证书的完整指南 WebOne HTTPS 解密原理如何为老浏览器动态生成兼容 SSL 证书的完整指南【免费下载链接】weboneHTTP 1.x proxy that makes old web browsers usable again in the Web 2.0 world.项目地址: https://gitcode.com/gh_mirrors/we/weboneWebOne 是一个专为怀旧场景打造的 HTTP/HTTPS 代理服务器它的 HTTPS 解密原理是在老浏览器与网站之间做中间人为每个访问的域名动态签发一张由自建 CA 认证的兼容 SSL 证书再完成解密与内容改写。只要你在 Windows 98 的 Netscape 或 XP 时代的 IE6 里把代理指向它现代 Web 2.0 网站就会重新变得可用。为什么老浏览器打不开现代 HTTPS 网站现代网站几乎全部启用了 HTTPS而 1995–2005 年代的浏览器只支持 SSL 2.0/3.0 和早期的弱加密算法RC4、MD5 签名等与今天服务器的 TLS 1.2 完全没有交集。于是你看到的就是下面这个经典画面——老版 Firefox 弹出安全连接失败没有共同加密算法要让老浏览器重新连上现代网络必须有人替它说它听得懂的 SSL 协议版本与密码套件出示一张它信任的、域名匹配的正确证书把解密后的网页内容改写成它能渲染的旧版格式。WebOne 的 HTTPS 解密就是围绕这三件事工作的 WebOne 的解密原理MITM 代理 CONNECT 隧道当你把老浏览器设为 WebOne 代理默认端口 8080后流程如下步骤发生的事①浏览器发出CONNECT 目标域名:443请求代理打通一条隧道②WebOne 返回200 OK宣称隧道已建立见 HttpSecureServer.cs③WebOne 以目标网站的假扮者身份发起 SSL 握手出示动态生成的该域名证书④浏览器信任证书握手成功开始在隧道内发送未加密 HTTP 请求⑤WebOne 向真实服务器发起自己的现代 HTTPS 请求解密、改写内容编码、JS、图片、视频后回传给老浏览器核心入口在 HttpSecureServer.cs从 CONNECT 请求里取出域名调用CertificateUtil.MakeChainSignedCert(CN域名, 根证书, 哈希算法)拿到这张临时身份证随后在 SslStream 握手 中把SslProtocols、密码套件策略等老浏览器兼容参数交给系统 TLS 栈。动态生成 SSL 证书的完整流程WebOne 的证书体系分两层自签根 CA 证书按域名即时签发的子证书。1️⃣ 首次启动自动生成自签根 CA如果配置里指定的ssl.crt/ssl.key文件不存在WebOne 启动时会自动调用CreateRootCertificate()见 Program.cs生成一张有效期到 2037 年的自签 CA默认名称为CNWebOne Certificate Authority xxx并故意加入OMITM Proxy字段避免用户误以为是安全连接 生成的算法可通过配置选择CertificateUtil.csSslHashAlgorithmSHA1对老浏览器MD5/SHA1 是必须的——现代 .NET 默认禁用它们所以项目里专门写了RsaPkcs1SignatureGenerator绕开限制CertificateUtil.cs。2️⃣ 每次访问新域名签发一张专属证书当浏览器 CONNECT 到某个新域名时MakeChainSignedCert 会现场完成生成新的 RSA 私钥每个域名一把写入SAN 扩展让证书中的 DNS 名与访问的域名严格一致用 16 字节随机序列号——这是刻意为之因为 Firefox 遇到重复序列号会直接报sec_error_bad_signatureCertificateUtil.cs;由根 CA 私钥签名有效期默认为今天前 7 天到今天后 7 天SslCertVaildBeforeNow/-AfterNow。3️⃣ 三级缓存避免重复签发签发顺序遵循内存 → 磁盘 → 外部工具 → 现算的缓存策略内存缓存FakeCertificates字典命中且未过期直接返回磁盘缓存配置SslSiteCerts/var/webone/ssl/%Subject%后优先读取已有的xxx.crt/.key文件外部生成器配置SslSiteCertGenerator可调用 openssl 等命令行工具生成证书都没命中才走内存现算。这三项配置在 webone.conf 中都有注释模板。为老浏览器选择 SSL 协议与加密算法证书只是门票握手能否成功还取决于协议版本。在 webone.conf 中SslProtocolsSsl2, Ssl3, Tls, Tls11, Tls12 SslCipherSuitesTLS_RSA_WITH_RC4_128_MD5, TLS_RSA_WITH_3DES_EDE_CBC_SHASslProtocols列出 WebOne 愿意和客户端协商的协议版本Netscape 3 时代只需Ssl2, Ssl3SslCipherSuites控制可用密码套件老浏览器几乎都卡在 RC4/3DES 这一档在 Linux 上OpenSSL 自身会拒收弱证书此时需启用项目自带的 openssl_webone.cnf通过OPENSSL_CONF环境变量加载它显式放开enable-weak-ssl-ciphers并允许 SSLv3 起步。⚠️ 项目作者在 README.md 中明确提示WebOne 会解除网页流量加密且老浏览器本身存在大量已知漏洞请只在隔离的怀旧局域网中使用不要暴露到公网。快速上手5 分钟让老浏览器连上 WebOne在现代电脑上安装 .NET 8.0运行webone默认监听 8080 端口在老浏览器的网络设置中填入代理地址例如 Netscape 的Network Preferences在老机器的证书存储中导入 WebOne 根证书ssl.crt此后访问 HTTPS 网站就不再报警告打开http://代理主机:8080/查看运行状态页开始怀旧冲浪 相关文件路径速查内容路径证书生成核心CertificateUtil.cs假 HTTPS 服务器 / 握手逻辑HttpSecureServer.cs根 CA 自动创建入口Program.csSSL 全部可配置项webone.confLinux 弱加密 OpenSSL 配置openssl_webone.cnf老浏览器代理配置参考图EXE/Howto2.png理解了这个根 CA 按域名动态签发的机制你就掌握了 WebOne HTTPS 解密的关键它本质上是一台懂怀旧协议的证书工厂让 30 年前的浏览器也能安心地相信这是一条安全连接。【免费下载链接】weboneHTTP 1.x proxy that makes old web browsers usable again in the Web 2.0 world.项目地址: https://gitcode.com/gh_mirrors/we/webone创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考