最近收到通知说微信支付HTTPS服务器 由于 根证书即将在8.23号过期
所以更换了新的服务器证书 需要商户确认服务器上是否已经部署了新的CA根证书
首先请求微信的Https服务器是这样的
第一步浏览器发送请求(https哈) 对 微信服务器说 hello,I‘m client
第二步微信服务器回复浏览器 hello I’m server 并附加 他的数字证书(包含公钥)
第三步浏览器收到证书判断是哪家的 然后读取自己系统级的证书信任列表是否包含该证书签发CA机构 并做证书校验(这里发生了好多巴啦巴拉一堆)
(这里其实就是校验请求的服务器是否是可靠的信任的)
第四步如果浏览器确认无误就会回复服务器 然后双方使用规定的加密方式 用密钥建立通信
如果浏览器判断证书有问题就会提示用户 这是一个不受信任的 请求之类类似的玩意
那微信这样做是为了什么?
原因就在第三步那里,微信签了 DigiCert
和 Baltimore
的证书
因此在第二步的时候 微信服务器返回了他的签认证书 我们去校验他是不是真的微信服务器
所以会读取我们本地的系统级一些根证书(比如windows 或者 Linux 下其实已经内置了很多大厂的根证书)
如果我们本地没有DigiCert的根证书 也没有 Baltimore 的根证书 这个时候根本没办法校验微信证书的真假
浏览器直接弹出提示 说对方不安全 有可能直接中断请求(比如chrome就准备这么搞事情)
微信主要就是防止这个 所有需要我们校验自己的服务器是否已经内置了 相应的 Baltimore 或者 DigiCert 根证书
根证书和其他证书关系
证书的关系类似这样 因为只要根证书是可信任的 他就可以校验他的下面所有签发的证书是不是有效真实的
我们需要做什么
我们只需要在我们自己的服务器中安装下 Baltimore 或者 DigiCert 的根证书就可以了
至于微信官网写的那些校验只是校验这些的