Java 在ssl握手中如何在JKS中获取正确的证书

Java 在ssl握手中如何在JKS中获取正确的证书,java,ssl,jks,Java,Ssl,Jks,假设我有一个JAVA客户端应用程序,它试图通过https连接到服务器(example.com)。客户端应用程序有一个信任存储JKS,它有服务器的证书和一些其他证书。在服务器将其证书发送到此客户端应用程序的握手过程中,如何从信任存储jks中提取正确的证书。i、 基于什么参数,java将服务器发送的证书与存储在JKS中的证书相匹配 匹配由证书的主题完成 例如,如果您浏览并查看他们的证书,它会显示一个证书链,其中包含: 主题:/C=US/ST=California/L=Mountain View/O=

假设我有一个JAVA客户端应用程序,它试图通过https连接到服务器(example.com)。客户端应用程序有一个信任存储JKS,它有服务器的证书和一些其他证书。在服务器将其证书发送到此客户端应用程序的握手过程中,如何从信任存储jks中提取正确的证书。i、 基于什么参数,java将服务器发送的证书与存储在JKS中的证书相匹配

匹配由证书的
主题
完成

例如,如果您浏览并查看他们的证书,它会显示一个证书链,其中包含:

主题:
/C=US/ST=California/L=Mountain View/O=Google Inc/CN=www.Google.com

发布人:
/C=US/O=Google Inc/CN=Google互联网管理局G2

发行人:
/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA

发布人:
/C=US/O=Equifax/OU=Equifax安全证书颁发机构

*使用openssl s_client-connect www.google.com:443-showcerts实际获得

如果您的信任库中有任何证书,则该证书将受信任

您可以这样扫描信任库(假设您有
grep
):

keytool-list-keystore/path/to/cacerts-storepass changeit-v | grep“CN=GeoTrust Global CA”-B 4-A 8
要获得此类输出,请执行以下操作:

别名:geotrustglobalca
创建日期:2003年7月18日
条目类型:trustedCertEntry
所有者:CN=GeoTrust Global CA,O=GeoTrust Inc.,C=US
发行人:CN=GeoTrust Global CA,O=GeoTrust Inc.,C=US
编号:23456
有效期:2002年5月21日星期二00:00:00 EDT至2022年5月21日星期六00:00:00 EDT
证书指纹:
MD5:F7:75:AB:29:FB:51:4E:B7:77:5E:FF:05:3C:99:8E:F5
SHA1:DE:28:F4:A4:FF:E5:B9:2F:A3:C5:03:D1:A3:49:A7:F9:96:2A:82:12
SHA256:FF:85:6A:2D:25:1D:CD:88:D3:66:56:F4:50:12:67:98:CF:AB:AA:DE:40:79:9C:72:2D:E4:D2:B5:DB:36:A7:3A
签名算法名称:SHA1 WithRSA
版本:3