参数NeedClientAuth/WantClientAuth设置为true的ssl会因javax.net.ssl.SSLHandshakeException失败:空证书链/

参数NeedClientAuth/WantClientAuth设置为true的ssl会因javax.net.ssl.SSLHandshakeException失败:空证书链/,ssl,jetty,Ssl,Jetty,我已将xml文件配置为 <Call name="addConnector"> <Arg> <New class="org.mortbay.jetty.security.SslSelectChannelConnector"> <Set name="Host"> <SystemProperty default="0.0.0.0" name="https.host"></Sys

我已将xml文件配置为

  <Call name="addConnector">
    <Arg>
      <New class="org.mortbay.jetty.security.SslSelectChannelConnector">
        <Set name="Host">
          <SystemProperty default="0.0.0.0" name="https.host"></SystemProperty>
        </Set>
        <Set name="Port">
          <SystemProperty default="0" name="https.port"></SystemProperty>
        </Set>
        <Set name="MaxIdleTime">60000</Set>
        <Set name="Acceptors">5</Set>
        <Set name="AcceptQueueSize">100</Set>
        <Set name="StatsOn">true</Set>
        <Set name="Keystore"><SystemProperty default="." name="java.config"></SystemProperty>/mykeystore.keystore</Set>
        <Set name="KeyPassword">password</Set>
        <Set name="Password">password</Set>
        <Set name="NeedClientAuth">true</Set>
        <Set name="WantClientAuth">true</Set>
      </New>
    </Arg>
  </Call>
我已将根/中间/签名证书添加到服务器密钥库 我还将根/中间层添加到客户端IE浏览器中

问题 如果有任何配置错误,请提出建议 和命令正确运行,以创建密钥库并安装来自CA的签名证书

已创建密钥库密钥工具-密钥库服务器DNS.keystore-别名服务器 -genkey-keyalg RSA-密钥大小2048

创建CSR keytool-certreq-alias server-keystore serverdns.keystore -文件服务器.csr

安装签名证书密钥工具-导入-信任证书证书-别名 服务器-密钥库serverdns.keystore-文件signedcert.der.cer


这意味着客户端无法提供受服务器信任存储信任的证书,因此它没有发送证书消息。当服务器请求客户端证书时,它还会发送一个可接受的签名者列表,并且客户端只能发送一个由这些签名者之一签名的证书,或者发送一个指向此类证书的链

如果客户端具有自签名证书,则通常会发生这种情况。在这种情况下,您需要从客户机的密钥库导出客户机的证书,并将其导入服务器的信任库

<Set name="NeedClientAuth">true</Set>
<Set name="WantClientAuth">true</Set>
true
真的

这两种设置都没有任何意义。它们是相互排斥的。如果这样做,
NeedClientAuth
可能优先。

谢谢,我已经将所有相关证书都包含在密钥库中了。我将密钥库用作信任库。有没有一种方法可以调试发送到服务器的证书,而无需执行任何代码更改,只需修改jetty xml参数,我已经告诉过您了。例外情况也是如此。未向服务器发送任何证书。至于其余的,如果你真的做了所有必要的事情,你就不会问了。我使用的是Internet Explorer,证书安装在中间和根选项卡中。默认情况下,这些选项卡是否被视为信任者?或者我将复制到任何其他位置感谢我创建了类似于服务器的客户机密钥库和证书,并将客户机证书添加到服务器密钥库中,之后工作正常
<Set name="NeedClientAuth">true</Set>
<Set name="WantClientAuth">true</Set>