SSL/TLS 资料整理
1. HTTPS详解二:SSL / TLS 工作原理和详细握手过程
看到另外几篇介绍不错的文章,再次分享一下
园内大佬写的,
这篇博文已经把 SSL 的工作原理介绍的明白了得,不过在 CA 证书验证这块描写的有点少,故另外找了一篇专门介绍 CA 证书验证的文章
数字证书通常包含了:
CA 签发证书的过程:
- 首先 CA 会把持有者的公钥、用途、颁发者、有效时间等信息打成一个包,然后对这些信息进行 Hash 计算,得到一个 Hash 值;
- 然后 CA 会使用自己的私钥将该 Hash 值加密,生成 Certificate Signature,也就是 CA 对证书做了签名;
- 最后将 Certificate Signature 添加在文件证书上,形成数字证书;
客户端校验服务端的数字证书的过程:
- 首先客户端会使用同样的 Hash 算法获取该证书的 Hash 值 H1;
- 通常浏览器和操作系统中集成了 CA 的公钥信息,浏览器收到证书后可以使用 CA 的公钥解密 Certificate Signature 内容,得到一个 Hash 值 H2 ;
- 最后比较 H1 和 H2,如果值相同,则为可信赖的证书,否则则认为证书不可信。
证书的验证过程中还存在一个证书信任链的问题,因为我们向 CA 申请的证书一般不是根证书签发的,而是由中间证书签发
这是为了确保根证书的绝对安全性,将根证书隔离地越严格越好,不然根证书如果失守了,那么整个信任链都会有问题。
回顾:
Bob 最终发现了自己的公钥被 Jerry 截获了,他感觉自己的公钥通过网络传输给自己的小伙伴似乎也是不安全的,不怀好意的家伙可以截获这个明文传输的公钥。为此他想到了去第三方权威机构"证书中心"(certificate authority,简称 CA)做认证。证书中心用自己的私钥对 Bob 的公钥和其它信息做了一次加密。这样 Bob 通过网络将数字证书传递给他的小伙伴后,小伙伴们先用 CA 给的公钥解密证书,这样就可以安全获取 Bob 的公钥了。
这里有个思考,我一开始还有点懵,中间人如果获得数字证书再解密不一样得到 Bob 的公钥吗,不还是会跟其他人通信吗?
后面发现中间人是无法篡改数字证书的,我们只要保证与小伙伴联系的是 Bob 就行,因为数字证书这一环节保证了其他人访问时的对象一定是 Bob
最后比较 H1 和 H2,如果值相同,则为可信赖的证书,否则则认为证书不可信。
不仅仅是比较 hash,还要确定证书的信息是否正确,包括有效期,机构啥的