我在 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>
您能否指出我如何设置这种相互认证配置?