当前位置: 首页 > 知识库问答 >
问题:

带有参数的 ssl 需要客户端身份验证/旺特身份验证设置为 true 失败与 javax.net.ssl.SSL手抖异常: 空证书链 /

呼延辰龙
2023-03-14

我已将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>

当NeedClientAuth设置为false时,我可以打开https://server.com:50881/admin/

当NeedClientAuth如上述参数所示设置为true时,它将失败,并返回错误

259498 2014-04-23 12:02:23,881 [825245763@qtp-1957835280-3] WARN  org.mortbay.log  - javax.net.ssl.SSLHandshakeException: null cert chain
260138 2014-04-23 12:02:24,521 [825245763@qtp-1957835280-3] WARN  org.mortbay.log  - javax.net.ssl.SSLHandshakeException: null cert chain
260689 2014-04-23 12:02:25,072 [825245763@qtp-1957835280-3] WARN  org.mortbay.log  - javax.net.ssl.SSLProtocolException: handshake alert: no_certificate

我已将根/中间/签名证书添加到服务器密钥库 我还已将根/中间证书添加到客户端 IE 浏览器

问题请建议是否存在任何配置错误,并正确运行命令以创建密钥库并从CA安装签名证书

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

创建 CSR 密钥工具 -certreq -alias server -keystore serverdns.keystore -文件服务器.csr

正在安装签名证书keytool-import-trustcacerts-alias server-keystore server DNS . keystore-file signed cert . der . cer

共有1个答案

裴昊阳
2023-03-14

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

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

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

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

 类似资料:
  • 我不熟悉SSL和证书。我一直在做关于客户端证书认证的研究。我看过这个和wiki。 因此,如果我必须为我的B2B REST服务实现客户端证书身份验证解决方案,我应该执行以下操作 要求客户端生成自己的私钥,并为其公钥生成证书(CA 颁发?)。通过电子邮件或 USB 闪存盘发送该证书。 在服务器端将客户端的公共证书导入信任存储区并启用客户端身份验证 在握手期间,客户端会出示其证书并进行身份验证,因为服务

  • 我正在组装一个soap客户端来调用第三方soap服务。我在连接Java时遇到问题。它在SoapUI上运行良好。这是我第一次在应用程序中设置密钥库。我发现的所有代码都是相同的,非常简单,但我不明白为什么java版本不起作用。。我使用的是该公司提供的TLS pfx文件,我也在尝试连接该公司的服务。我要从服务器上拿回403。。这是密码 非常感谢任何对我错误的帮助... 不确定是否重要,但服务器是一个.

  • 问题内容: 我正在尝试确保通过Internet进行通信的Java客户端/服务器应用程序的连接安全。我的想法是将SSL套接字与自签名证书和客户端身份验证一起使用。我做了以下事情: 服务器:包含新的自签名证书的密钥库。 客户端:包含新的自签名证书的密钥库。 服务器:包含导出的客户端证书的信任库(来自上面的项目符号)。导出客户端证书并将其导入服务器的信任库 客户端:包含导出的服务器证书的信任库(从第一个

  • 我是SOAP新手,正在尝试运行wsimport命令来生成存根,以便我可以调用相关服务。我有wsdl url,要访问它,我需要进行身份验证。所以我尝试了以下命令来解决身份验证问题: wsimport -Xauthfile C:\auth.txt -keep http://example.com/test?wsdl -s c:\path\to\源\ 然而,当我在浏览器中启动服务器url时,它抱怨“站点

  • 授权服务器为进行客户端身份验证的目的,为Web应用客户端创建客户端凭据。授权服务器被鼓励考虑比客户端密码更强的客户端身份验证手段。Web应用程序客户端必须确保客户端密码和其他客户端凭据的机密性。 授权不得向本地应用程序或基于用户代理的应用客户端颁发客户端密码或其他客户端凭据用于客户端验证目的。授权服务器可以颁发客户端密码或其他凭据给专门的设备上特定安装的本地应用程序客户端。 当客户端身份验证不可用

  • 在向令牌端点发起请求时,机密客户端或其他被颁发客户端凭据的客户端必须如2.3节所述与授权服务器进行身份验证。客户端身份验证用于: 实施刷新令牌和授权码到它们被颁发给的客户端的绑定。当授权码在不安全通道上向重定向端点传输时,或者 当重定向URI没有被完全注册时,客户端身份验证是关键的。 通过禁用客户端或者改变其凭据从被入侵的客户端恢复,从而防止攻击者滥用被盗的刷新令牌。改变单套客户端凭据显然快于撤销