密钥存储库包含CA、证书和私钥。
bash:$ keytool -list -keystore my.keystore
Enter keystore password:
Keystore type: JKS
Keystore provider: SUN
Your keystore contains 6 entries
xyz-server-ca, Nov 12, 2015, trustedCertEntry,
Certificate fingerprint (SHA1): F1:94:1E:B3:C1:E7:7E:54:DA:6B:12:35:26:AA:4C:DE:46:D6:45:3F
xyz-key, Nov 12, 2015, PrivateKeyEntry,
Certificate fingerprint (SHA1): 81:45:05:29:15:26:0C:0E:71:EB:E0:1F:3E:1C:D8:FE:C6:8D:78:69
xyz-root-ca, Nov 12, 2015, trustedCertEntry,
Certificate fingerprint (SHA1): 67:D6:A8:37:AD:16:15:31:6D:55:78:02:F2:FA:AB:7A:2A:75:F0:DF
server, Nov 12, 2015, trustedCertEntry,
Certificate fingerprint (SHA1):
xyz-root-ca1, Nov 12, 2015, trustedCertEntry,
Certificate fingerprint (SHA1): 67:D6:A8:37:AD:36:15:31:6D:55:78:02:F2:FA:AB:7A:2A:75:F0:DF
server, Nov 12, 2015, trustedCertEntry,
Certificate fingerprint (SHA1): 当我使用openssl查看证书链时,它不会返回所有链,而只是返回服务器证书和一个CA文件
openssl s_client -host 127.0.0.1 -port 443 -prexit -showcerts
---
Certificate chain
0 s:/C=EU/ST=I/L=Du/O=Inc./OU=Foot/CN=example.com
i:/C= EU/O=I/OU=Du/CN=Servers CA发布于 2016-04-21 16:03:37
这是预期的行为。在进行SSL握手时,服务器使用自己的SSL证书和链*中的所有CA证书进行响应,根证书*除外。参考RFC 5246§7.4.2
certificate_list --这是一个证书序列(链)。发件人的证书必须放在列表的第一位。以下每一份证书必须直接证明其前面的证书。由于证书验证要求独立分发根密钥,因此可以从链中省略指定根证书颁发机构的自签名证书,前提是远程端必须已经拥有该证书才能在任何情况下对其进行验证。
换句话说,在SSL协商期间不发送根(以自签名形式表示)证书是一种很好的做法。1:https://www.rfc-editor.org/rfc/rfc5246#section-7.4.2
https://stackoverflow.com/questions/36772236
复制相似问题