java - 关于java中ssl握手和行为的问题

标签 java security apache iis ssl

我正在使用 https 连接到 https 服务器。
具体来说,我使用的是 apache httpclient,我将 ssl 上下文配置为使用我的 keystore 和信任库。
我使用的 https 服务器是 IIS7,并配置为需要客户端身份验证。
我想我已经正确设置了它。
无论如何,如果我使用对 IIS 有效的 keystore (即客户端证书)配置 httpClent 的 ssl 上下文,那么连接就没有问题。

现在我的问题如下: 如果我使用要发送到 IIS 的任何客户端证书配置 ssl 上下文,则不会与服务器建立连接。不过,让我想到的是,由于 hanshake 失败警报,我期望在代码中看到一些 Java 异常。
监视 wireshark 发生的情况,我看不到 IIS 向我的应用程序发出的证书请求,但我注意到在 ServerHelloDone 之后所有内容都已加密。
我原本没想到。我认为握手通常是明文的。
我使用私钥解密痕迹,我看到了来自 IIS 的证书请求,但在多次启动和打开新连接之后。
我的应用发回长度为 0 的证书作为响应,IIS 回复 TLSv1 Finished
之后数据包停止(即似乎通信结束)。
我期待握手警报。

我的问题是,这是它应该如何工作或者至少 IIS 是如何工作的?
或者,如果我没有看到警报,我的用例有问题吗?

谢谢

最佳答案

听起来 IIS 只需要某些 URL(例如 example.com/foo,而不是 example.com/bar)的客户端证书。

在最初的握手中,它并不知道你请求的是哪个url,所以它不需要证书。当它发现您正在请求受限资源 (/foo) 时,它会重新握手,要求提供证书。

但是,我仍然希望发生 handshake_failure。

关于java - 关于java中ssl握手和行为的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6080792/

相关文章:

java - 在 ClassPathXmlApplicationContext 中失败时销毁创建的 bean

java - 为什么我在调用invoke方法(JAVA)时遇到 "wrong number of arguments"异常

java - Android 中的 Microsoft ISA 服务器身份验证

node.js - JSON Web token - 有效负载中的密码?

apache - 在 APACHE 2.4.1 (freebsd) 上安装和配置 SSL

apache - Jenkins 支持 Apache 和 mod_proxy

java - @Path注释: abstract resource in dropwizard

Java InetAddressClass getAllByNAme 方法

java - 可以使用根 CA 或祖父 CA 验证证书而不使用父 CA

java - 在 Tomcat 8.5.9 上部署 Spring 应用程序在本地主机访问日志中返回 404 1034 错误