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