基于CA的Tomcat客户端身份验证

时间:2017-12-06 14:14:35

标签: ssl tomcat7 keystore ca

我在 Centos 7 中使用 Tomcat 7 设置相互身份验证方案时遇到了麻烦。 服务器身份验证按预期工作,但我仍然坚持客户端身份验证。

服务器证书和客户端证书由同一CA颁发。我的目标是允许任何客户拥有此CA颁发的证书。

到目前为止,我的server.xml对于相关的连接器看起来像这样:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150"
               scheme="https" secure="true" sslProtocol="TLSv1.2" sslEnabledProtocols="TLSv1,TLSv1.1,TLSv1.2" SSLEnabled="true"
               keystoreFile="/absolute/path/to/mykeystore.jks" keystorePass="P455W0RD" keyAlias="myalias" 
               clientAuth="true"        
               truststoreFile="/absolute/path/to/mykeystore.jks" truststorePass="P455W0RD"
/>

当密钥库包含客户端证书时,相互身份验证成功。 但是,当密钥库仅包含CA时,相互身份验证将失败。

我使用以下命令生成了我的密钥库:

openssl pkcs12 -export -in  server.crt -inkey server.key -out server.p12 -name myalias -CAfile ca.crt -caname root
keytool -importkeystore -deststorepass <pass> -destkeypass <pass> -destkeystore mykeystore.jks -srckeystore server.p12 -srcstoretype PKCS12 -srcstorepass <pass> -alias myalias
keytool -importcert -alias root -keystore mykeystore.jks -storepass <pass> -file ca.crt

我还尝试从连接器中删除truststoreFile和truststorePass参数,并将CA添加到 $ JAVA_HOME / jre / lib / security / 中的cacerts,但相互身份验证仍然失败。 / p>

您能否指出我如何设置这种相互认证配置?

0 个答案:

没有答案