HTTPS原理以及Java实现

HTTPS是HTTP与SSL/TLS的结合,通过非对称加密的公钥/私钥生成对称加密秘钥进行数据传输。本文介绍了SSL/TLS的核心概念如SSL Messages、RSA和DSA流程、核心对象如SSLScoket、SSLContext、KeyManager和TrustManager,以及服务端启用SSL和客户端SSL访问的步骤。重点讲解了握手过程和密码组的概念。
摘要由CSDN通过智能技术生成

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对这个随机

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值