我在Java 1.7上使用HttpClient 4.2.3连接到由nginx托管的远程服务器 . 我的组织广泛使用PKI,远程和客户端都拥有由公共CA颁发的证书 .
服务器有一个如下所示的签名链:
CN=Server 123, OU=Servers, OU=My Division, O=My Org, C=US
CN=My Division CA, OU=My Division, O=My Org, C=US
CN=My Org CA, O=My Org, C=US
客户端有一个如下所示的签名链:
CN=Client 456, OU=Servers, OU=My Division, O=My Org, C=US
CN=My Division CA, OU=My Division, O=My Org, C=US
CN=My Org CA, O=My Org, C=US
出于某种原因,客户端不会将其证书提供给服务器 . 服务器配置正确(例如,使用--cert, - key和--cacert卷曲) . 客户端在密钥库中具有其证书,私钥和签名链,在其信任存储中具有“我的分部CA”和“我的组织CA”证书(以及其他) . 启用SSL调试后,我可以看到密钥存储和信任存储加载成功 . 客户端可以连接到正确请求证书的其他服务器 . 但是,在尝试连接到“Server 123”时,我看到如下内容:
*** ServerHello, TLSv1
...
** TLS_RSA_WITH_AES_256_CBC_SHA
...
<