HTTPS协议是HTTP协议和SSL协议的结合体,使用HTTPS发送数据意味着消息首先经过SSL加密,然后通过HTTP协议转发,最后再由接收方的SSL解密。
都知道SSL/TLS使用了非对称加密(RAS或DSA),但非对称加密是很复杂而且很慢的。所以在实际中,客户端拿到第三方CertificateAuthority提供的数字证书(包含公钥),解出公钥之后并不是直接用公钥对数据做非对称加密。而是利用公钥生成一个对称加密(AES或DES)的秘钥,然后在C/S交互过程中,用这个对称加密的秘钥对数据加密。服务端要解密,需要利用私钥解出对称加密使用的秘钥,然后用这个对称秘钥解密出明文。
SSL Messages
RSA流程:
1. 假设服务端使用的密码组是TLS_RSA_WITH_AES_128_CBC_SHA。
2. 服务端首先查询KeyManager,给客户端返回Certificate/public key。
3. 客户端接收Certificate/public key,然后用TrustManager验证Certificate。
4. 如果客户端接受该Certificate,则用SecureRandom生成一个随机字节码,并使用Public key对这个随机