参考文章: http://drops.xmd5.com/static/drops/tips-6002.html
http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html
https://www.jianshu.com/p/46e48bc517d0
https://blog.csdn.net/tterminator/article/details/50675540
一、SSL/TLS的简述
SSL全称是Secure Sockets Layer,安全套接字层,它是由网景公司(Netscape)设计的主要用于Web的安全传输协议,SSL的主要目标是:
- 认证性——借助数字证书认证服务器端和客户端身份,防止身份伪造
- 机密性——借助加密防止第三方窃听
- 完整性——借助消息认证码(MAC)保障数据完整性,防止消息篡改
SSL最初的几个版本(SSL 1.0、SSL2.0、SSL 3.0)由网景公司设计和维护,从3.1版本开始,SSL协议由因特网工程任务小组(IETF)正式接管,并更名为TLS(Transport Layer Security),发展至今已有TLS 1.0、TLS1.1、TLS1.2这几个版本。TLS1.0和TLS1.1都存在安全风险,一般只是为了兼容性才开启TLS1.0和TLS1.1。
二、TLS证书
一般TLS证书会包含三个文件:CA证书、公钥、私钥。
公钥和私钥是成对的,主要是利用非对称加密算法进行加解密,由于非对称加密算法的复杂度很高,我们一般不会直接利用公私钥对对数据进行加解密,而是利用公私钥对来协商对称加密的秘钥。
CA证书的作用是来确认对端数字证书的真实性。数字证书 = encrypt(公钥等信息,CA的私钥),如下图。所以当TLS交换数字证书的过程中,我们就可以使用本端的CA证书(即CA的公钥)进行解密,再hash公钥,比较hash值与证书中是否相等,来确认对端证书的真实性和有效性。
图1 签名过程