客户端认证与SSL相关类的使用
1. 客户端认证概述
在许多网络应用中,之前创建的连接通常仅在服务器端进行认证。对于像互联网购物这类应用,这种方式大多可行,但在很多企业对企业(B2B)和企业级应用中,要求连接的双方都进行认证。
SSL协议支持客户端认证,在握手过程中,客户端可以在Certificate消息中发送证书链和预主密钥,然后发送CertificateVerify消息(签名),该签名可使用客户端证书链中的终端实体证书进行验证。签名是基于从初始客户端消息开始交换的所有消息的数据流计算得出的,这种方式的好处是客户端无需拥有可用于加密的公钥,还能使用一系列数字签名特定算法来进行自我认证。
由于客户端认证是SSL的一个可选功能,引入它需要使用一些额外的配置方法。通常可以使用SSLServerSocket类的相关方法,也可以将SSLSocket对象设置为服务器模式以使用客户端认证。
2. SSLServerSocket 配置
配置SSLServerSocket以请求客户端认证很简单,有两个方法可用于此目的:
-setNeedClientAuth():该方法接受一个布尔参数。若参数为true,通过accept()创建的服务器模式套接字将强制进行客户端认证。若客户端无法提供认证,连接将被断开。调用此方法会覆盖之前对