2012-09-13 39 views
2

我有Apache Tomcat服务器A的Web应用程序这使得Web应用程序连接到运行在其他地方的服务器B中。此服务器B需要使用SSL证书的客户端身份验证Tomcat作为一个客户端。在Tomcat Web应用程序不使用SSL客户端证书

我所试图实现的是,为了使服务器A这个Web应用程序使用SSL客户端证书到服务器B验证

因此,我已经提供了一些额外的JAVA_OPTS我的Tomcat服务器答:

-Djavax.net.ssl.trustStore=/location/keystore.jks 
    -Djavax.net.ssl.trustStorePassword=changeit 
    -Djavax.net.ssl.keyStore=/locaton/keystore.jks 
    -Djavax.net.ssl.keyStorePassword=changeit 
    -Djavax.net.debug=ssl 

现在这个keystore.jks包含三个证书:

  • CA证书
  • 服务器证书(PKCS12)这是服务器的证书一个
  • 客户端证书(PKCS12),这是客户端证书我希望我的web应用程序使用。

的tomcat /日志/ catalina.out中给出了这样的:

Client write key: 
0000: some hex 
Server write key: 
0000:some hex 
... no IV used for this cipher 
*** CertificateVerify 
pool-1-thread-2, WRITE: TLSv1 Handshake, length = 134 
pool-1-thread-2, WRITE: TLSv1 Change Cipher Spec, length = 1 
Finished 
verify_data: { data } 

pool-1-thread-2, WRITE: TLSv1 Handshake, length = 32 
pool-1-thread-2, READ: TLSv1 Alert, length = 2 
pool-1-thread-2, RECV TLSv1 ALERT: fatal, unsupported_certificate 
pool-1-thread-2, called closeSocket() 
pool-1-thread-2, handling exception: javax.net.ssl.SSLHandshakeException: Received fatal alert: unsupported_certificate 
pool-1-thread-2, called close() 

为了证明这个密钥库我写了一个小的Java应用程序,这使得具有相同连接到同一台服务器B的正确性密钥库并成功协商客户端证书。

我曾试图改变这种客户端证书X509型,但即使如此,我得到的错误,我不能够沟通。

我想也许有我丢失的东西?有人有这种东西的经验吗?

谢谢

回答

1

这看起来是因为客户端证书不是“客户身份验证”的使用功能。您可以通过打开证书,并检查“详细信息”选项卡,在“增强型密钥用法”字段下验证。它应该在现场有“客户认证”。

相关问题