【问题标题】:SSL client (Java) is not sending a certificate back to the server in two-way SSL handshakeSSL 客户端 (Java) 未在双向 SSL 握手中将证书发送回服务器
【发布时间】:2017-11-07 05:52:35
【问题描述】:

我们正在尝试使用 https 协议访问托管在 IIS 服务器 上的 RESTful Web 服务资源。

当我们禁用TWO WAY SSL Auth(禁用客户端证书的服务器端验证)时,一切正常。

当 IIS 强制执行TWO WAY SSL(启用客户端证书的服务器端验证)时,我们得到以下异常:

403 - 禁止:访问被拒绝。

您无权使用您提供的凭据查看此目录或页面。 我们正在使用 java 1.8 update 102、IIS server 7.5 和 TLS 1.2 for ssl

详细问题请打开以下链接:

For details SSL Debug log, certificates, client program

如果有人帮助我们,那将是很大的帮助。

谢谢!

【问题讨论】:

  • 请在此处发布您的代码,而不是作为链接
  • 感谢您的回复 MLavoie。问题是 Stackoverflow 对我们发布的内容有一些限制。该链接包含所有必需的 ssl 调试日志、下载的证书和客户端程序代码。
  • 您的日志非常广泛。我建议在这里发布客户端代码和 cmets 并仅链接到 SSL 调试日志
  • 查看此警告:未找到合适的证书 - 无需客户端身份验证即可继续 您的服务器正在发送接受的 CA 列表以请求客户端证书,但您的客户端没有找到合适的一个。看来您的密钥库具有正确的证书。可能是Java配置问题。确保您的证书是正确的,例如在浏览器中安装它并导航到受保护的资源
  • 请仔细阅读:hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/… 在调用 build() 之前调用 useSystemProperties() 方法时,配置默认实现时将考虑系统属性。 你没有调用它。并查看issues.apache.org/jira/plugins/servlet/mobile#issue/…

标签: java ssl ssl-certificate keystore ssl-client-authentication


【解决方案1】:

在 SSL 日志中查看此警告:

未找到合适的证书 - 无需客户端身份验证即可继续

您的服务器正在发送接受的 CA 列表以请求客户端证书,但您的客户端没有找到合适的 CA。看来您的密钥库具有正确的证书。确保您的证书是正确的,例如在浏览器中安装它并导航到受保护的资源

可能是您的 Java 客户端的配置问题。请仔细阅读HttpClientBuilder文档

在调用 build() 之前调用 useSystemProperties() 方法时,配置默认实现时将考虑系统属性。

你没有打电话给useSystemProperties()

另请参阅此可能影响您的错误报告https://issues.apache.org/jira/plugins/servlet/mobile#issue/HTTPCLIENT-1477

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-07
    • 2016-01-18
    • 2016-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-20
    • 1970-01-01
    相关资源
    最近更新 更多