三、SSL通信模式:
1.服务端:
SSL服务端需要通过SSL服务套接字来提供服务接口,而SSL服务套接字需要通过SSL上下文实例来创建。以下是对SSL服务端的启用过程的描述。
(1)通过指定协议(一般是TLS)获取SSL上下文(SSLContext)实例。
(2)通过指定算法(X.509相关)获取密钥管理器工厂(KeyManagerFactory)实例。
(3)通过指定类型和提供者获取密钥库(KeyStore)实例。
(4)密钥库实例使用约定的密码加载(Load)密钥库文件(.keystore)。
(5)密钥管理器工厂实例使用约定的密码和(4)中密钥库进行初始化(Initialize)。
(6)SSL上下文实例通过密钥管理器工厂实例提供的密钥管理器来初始化(Initialize)。
(7)当SSL上下文实力初始化成功后,就可以获取该上下文势力所关联的服务套接字工厂(ServerSocketFactory)实例
(8)服务套接字工厂实例依据指定的服务端口来创建(Create)服务套接字(ServerSocket)。
(9)当SSL服务套接字创建成功,就可以等待客户端的连接,与客户端进行通信。
(10)通信完毕可以关闭服务套接字。
2.客户端
(1)通过指定协议(一般是TLS)获取SSL上下文(SSLContext)实例。
(2)通过指定算法(X.509相关)获取密钥管理器工厂(KeyManagerFactory)实例。
(3)通过指定算法(X.509相关)获取信任管理器工厂(TrustManagerFactory)实例。
(4)通过指定类型和提供者获取密钥库(KeyStore)实例。
(5)通过指定类型和提供者获取信任密钥库(KeyStore)实例。
(6)(4)中密钥库实例使用约定的密码加载(Load)密钥库文件(.keystore)。
(7)(5)中信任密钥库实例使用约定的密码加载(Load)密钥库文件(.keystore)。
(8)密钥管理器工厂实例使用约定的密码和(4)中密钥库进行初始化(Initialize)。
(9)信任密钥管理器工厂实例使用约定的密码和(5)中密钥库进行初始化(Initialize)。
(10)当SSL上下文实力初始化成功后,就可以获取该上下文实例所关联的套接字工厂(SocketFactory)实例
(11)套接字工厂实例依据指定的主机和端口来创建(Create)客户端套接字(Socket)。
(12)当SSL服务套接字创建成功,就可以向服务端发送请求,与服务端进行通信。
(13)通信完毕可以关闭服务套接字。