引发这个问题的原因是我的智能设备。几年前我为我家买了一批智能设备,然后供应商发布了新产品,不再支持旧产品。这些设备还很新,更新这些设备的成本很高,所以我希望自己继续使用这些设备。
建立本地开发环境来检查问题。它包括一个 DNS 服务器和几个假的 HTTPS 服务器。网关按预期访问了我的假 HTTPS 服务器,但它立即中断了握手。Wireshake 捕获流量,客户端在 TLS 握手的 ClientHello 步骤拒绝接受服务器证书。
第 205 帧:线路上的 73 个字节(584 位),接口 \Device\NPF_{02345980-BC21-5641-123D-895432769A33} 上捕获的 73 个字节(584 位),id 0 以太网 II,源:00:12:34:46:04:d2,目标:00:12:34:8e:ad:0a Internet 协议版本 4,Src:192.168.1.183,Dst:192.168.1.104 传输控制协议,Src 端口:47813,Dst 端口:443,Seq:240,Ack:985,Len:7 传输层安全 TLSv1.2 记录层:警报(级别:致命,描述:证书未知) 内容类型:警报 (21) 版本:TLS 1.2 (0x0303) 长度:2 提示信息 等级:致命 (2) 描述:证书未知 (46)
我的假 HTTPS 服务器的私钥和证书是我自己生成的,与以下指南相同: 您如何使用您的证书颁发机构签署证书签名请求?
一般来说,如果HTTPS客户端允许安装自己的证书,问题是可以解决的,但是大多数智能设备都是切割系统,根本不支持证书安装功能,那么就没有办法让自签名证书生效。
所以我的问题是,有没有办法在本地开发环境中构建自己的 CA 系统?例如,是否有可能在本地开发环境中找到任何过期的 CA 私钥来生成受信任的证书,但有一些限制,例如仅在过去的时间有效?
欢迎任何建议。