TLS会话票证和客户端身份验证,Tomcat APR

时间:2014-11-18 21:25:23

标签: java tomcat servlets ssl apr

我们在Tomcat + APR / native上运行RESTfull服务时遇到问题。服务器需要凭证书进行客户端验如果客户端支持带有会话票证的TLS(RFC 5077),则问题仅出现

以下是发生的情况:当客户端执行初始握手时(完全握手)req.getAttribute("javax.servlet.request.X509Certificate")返回有效证书。当且仅当证书所标识的帐户有足够的金额时,服务才会在数据库中查找证书并处理请求。

在初始完整握手期间,服务器向客户端发送SessionTicket。

当客户端执行第二个请求时,它会向服务器发送SessionTicket。让SessionTicket服务器进行CertificateRequest,因此客户端不会传输其证书。 req.getAttribute("javax.servlet.request.X509Certificate") 返回null

问题是:通过证书(相互TLS身份验证)识别客户端的最佳做法是什么?有没有办法在初始完全握手期间将一些信息注入SessionTicket并在恢复握手期间提取它?

UPD1。完全握手期间可用的请求属性:

javax.servlet.request.ssl_session=219FE...
javax.servlet.request.ssl_session_id=219FE...
javax.servlet.request.key_size=256
javax.servlet.request.X509Certificate=[Ljava.security.cert.X509Certificate;@2a0ad546
javax.servlet.request.cipher_suite=DHE-RSA-AES256-SHA

恢复TLS握手期间的可用请求属性:

javax.servlet.request.key_size=256
javax.servlet.request.cipher_suite=AES256-SHA

0 个答案:

没有答案