【发布时间】:2017-11-09 01:24:41
【问题描述】:
问题总结: 我正在尝试使用 ssl 在 tomcat 上运行对称 ds。设置详细信息 1)。 MasterNode M1:在tomcat上运行。 2)。客户端节点 C1:在 tomcat 上运行。 我可以在没有 ssl 的情况下在 tomcat 上运行 symmetricds。此设置工作正常所有同步发生。 现在,当我尝试使用以下 ssl 设置运行 tomcat 时,它会在客户端节点上出现 bad_certificate 错误: Master节点上的连接设置:
<Connector SSLEnabled="true" acceptCount="10"
algorithm="PKIX" allowTrace="false"
ciphers=""
clientAuth="true"
enableLookups="true"
keystoreFile="/root/symmetric-server-3.8.28/security/keystore.p12"
keystorePass="changeit@1"
keystoreType="pkcs12"
port="31415"
redirectPort="-1"
scheme="https"
secure="true"
sslEnabledProtocols="TLSv1.2"
sslProtocol="TLSv1.2"
truststoreFile="/root/symmetric-server-3.8.28/security/keystore.p12"
truststorePass="changeit@1"
truststoreType="pkcs12"/>
客户端节点上的连接器设置:
<Connector SSLEnabled="true" acceptCount="10"
algorithm="PKIX" allowTrace="false"
ciphers=""
clientAuth="true"
enableLookups="true"
keystoreFile="/root/symmetric-server-3.8.28/security/keystore2.p12"
keystorePass="changeit@1"
keystoreType="pkcs12"
port="31415"
redirectPort="-1"
scheme="https"
secure="true"
sslEnabledProtocols="TLSv1.2"
sslProtocol="TLSv1.2"
truststoreFile="/root/symmetric-server-3.8.28/security/keystore2.p12"
truststorePass="changeit@1"
truststoreType="pkcs12"/>
注意:如果我使用 clientAuth=false 运行主节点 tomcat,那么一切正常。在进一步调试中,我发现客户端在 TLS 握手期间没有提供其证书。以下是错误:专家请帮助我需要做什么配置以便客户端提供证书:
错误: javax.net.ssl.SSLHandshakeException:收到致命警报:bad_certificate
【问题讨论】:
-
主节点和客户端节点密钥库之间是否交换了证书?
-
在 TLS 握手期间,服务器正在出示其证书,但客户端节点未出示其证书。在服务器端 ssl 日志显示:空证书链。 http-nio-31415-exec-8,致命错误:42:空证书链 javax.net.ssl.SSLHandshakeException:空证书链 %% 无效:[Session-4,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384] http-nio-31415-exec-8,发送 TLSv1.2 警报:致命,描述 = bad_certificate http-nio-31415-exec-8,致命:引擎已关闭。重新抛出 javax.net.ssl.SSLHandshakeException: null cert chain
-
证书是否已添加到客户端的密钥库中?
-
是的,我已经在客户端的密钥库中添加了客户端证书并进行了交叉检查。我想我无法弄清楚在客户端节点上提供密钥库的位置。 tomcat中提供的keystore路径是否足够或需要在其他地方提供?
-
应该够了。 master 和 client 之间是否交换过证书?
标签: ssl https keystore tomcat8 symmetricds