分享

Java实现HTTPS通讯

 大明明小珠珠 2015-12-09

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

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

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

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

 

 

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

使用 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要导入客户端的公钥证书。

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多