使用.pfx证书从Apache Tomcat 8调用RESTFul API

时间:2017-03-27 09:35:34

标签: java apache tomcat ssl pfx

我需要有关在tomcat 8上安装.pfx证书的帮助。

我已经通过创建jks在jvm上安装了.pfx证书。 我已经在cacert中添加了证书

keytool -import -alias 192.168.56.100 -keystore" C:\ Program Files \ Java \ jdk1.8.0_91 \ jre \ lib \ security \ cacerts" -trustcacerts -file C:\ EBCM_Client_TEST.pfx

我已经在tomcat 8上部署了服务器的战争,并且我在端口8444上配置了连接器:

当我尝试从服务器调用HTTPS API到其他服务器时,在日志中我收到此错误:

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

我已经配置了tomcat安装的server.xml

<Connector port="8444" 
maxHttpHeaderSize="8192" 
maxThreads="150" 
minSpareThreads="25" 
maxSpareThreads="75" 
enableLookups="false" 
disableUploadTimeout="true" 
acceptCount="100" 
scheme="https" 
secure="true" 
SSLEnabled="true" 
clientAuth="true" 
sslProtocol="SSL/TLS" 
keystoreFile="C:/EBCM_Client_TEST.pfx" keystorePass="allianzebcm" keystoreType="PKCS12"/>

在java中,用于创建自定义SSL上下文我使用

System.setProperty("javax.net.debug", "all");
System.setProperty("javax.net.ssl.trustStore", "C:/clientcert.jk");
System.setProperty("javax.net.ssl.trustStorePassword", "allianzebcm");
System.setProperty("javax.net.ssl.trustStoreType", "JKS");

//my certificate and password
System.setProperty("javax.net.ssl.keyStore", "C:/EBCM_Client_TEST.pfx");
System.setProperty("javax.net.ssl.keyStorePassword", "allianzebcm");
System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");

您是否知道如何在tomcat上配置证书pfx以进行HTTPS客户端身份验证?

由于

1 个答案:

答案 0 :(得分:1)

问题是连接器server.xml上的端口

错误配置

<Connector  port="8444" 

更正配置

<Connector  port="8443" 

现在我可以使用pfx证书调用REST API。 感谢