Https通信 java_Java实现HTTPS通讯

Https协议用于在保密性要求高的环境中。

Https基于Http协议,在Http协议中加了一层封装,加入SSL/TLS协议。

使用SSL会用到JSSE(Java Secure Socket Extension),JSSE对Java访问SSL和TLS协议都做了封装。

图 1. JSSE相关类之间的关系

62662919_1.jpg

安全套接字程序编写的方法

使用 Java 编写安全套接字程序,可以遵循一定的方法,如图 1 所示,展示了相关的各个类之间的关系。其中 Keystore、KeyManagerFactory、TrustManagerFactory、SSLContext 可以称之为“引擎类”(engine class),对它们指定特定的参数 ( 例如:协议、算法等 ),就可以产生符合我们要求的,用于编程的对象实例。

编程的步骤可以简单的小结为以下几步:

1. 使用 Keystore 类将证书库或信任库文件加载进来;

2. 使用 KeyManagerFactory 和加载了证书库的 Keystore 实例,产生 KeyManager 实例数组;

3. 使用 TrustManagerFactory 和加载了信任库的 Keystore 实例,产生 TrustManager 实例数组;

4. 使用 SSLContext 初始化 KeyManager 实例数组和 TrustManager 实例数组,从而设定好通信的环境。

5. 利用 SSLContext 产生的 SSLSocket 或 SSLServerSocket 进行通信。

SSL认证

分为单向认证和双向认证。

单向认证是客户端信任服务端,双向认证是客户端既要信任服务端而且服务端也要信任客户端。

不管是客户端还是服务端,都要存以下两样keystore。

KeyStore:保存自己的公钥和私钥。

Trust KeyStore:保存对方的公钥证书。

如果是单向认证,服务器端的KeyStore存储自己的公钥和私钥,客户端的Trust KeyStore要导入服务器端的公钥证书。

如果是双向认证,在上面的基础上,客户端的KeyStore存储自己的公钥和私钥,服务器端的Trust KeyStore要导入客户端的公钥证书。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值