GoLang:你真的了解 HTTPS 吗?
(2) 验证证书 收到对端发过来的证书,执行证书申请的“逆过程”即可,总结如下图: 接受证书的一端先对除数签名的其他部分做一次相同的哈希算法(证书中指明了哈希算法),得到这段文本的哈希映射,记作 H1;获取 CA 机构的公钥对数字签名属性做解码,得到了 CA 机构计算出的哈希映射,记作 H2。对比 H1 和 H2 两个字符串是否严格相等,若是,代表该证书的信息未被篡改,证书有效;否则,证书内容被篡改,证书无效。 若证书有效,接受端会再进行对端的身份校验(验证域名),若身份验证通过,接收端会拿证书上的公钥(也是对端自己生产的非对称加密公钥)加密接下来整个 TLS 握手阶段的信息之后,发送给对端。 这个过程中有一个问题:CA 机构的公钥怎么获取? 回答:提前内置。 众所周知,操作系统和浏览器在软件安装阶段会在其特定目录下放置一堆的证书。如 Windows 的根证书管理在 certmgr 下: 这些证书都有个特点:权威 CA 机构发布的根证书(Root Certificate)。根证书有几个特点: 没有上层机构再为其本身作数字签名 证书上的公钥即为 CA 机构发布的公钥 权威 CA 机构的自签证书 而这些根证书会跟很多软件,包括操作系统、浏览器一起被安装到用户设备上。即使没有被提前安装好,这些根证书也可以在 CA 机构的官网上获取得到。 目前全球大型权威 CA 机构有 Symantec、GeoTrust、Comodo 以及 RapidSSL 等,并且这些机构颁发的 SSL 数字证书,在市场的占有率是非常的高。(节选自《SSL 证书颁发机构有哪些》) 本地被内置了这么多的根证书,那要怎么知道我这份证书应该要用哪一个根证书来验证呢? 回答:证书信任链。 (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |