我对HTTPS/SSL/TLS相当陌生,我有点困惑,当使用证书进行身份验证时,客户端究竟应该呈现什么。
我正在写一个Java客户端,需要做一个简单的POST的数据到一个特定的URL。这部分工作正常,唯一的问题是它应该在HTTPS上完成。HTTPS部分相当容易处理(使用HTTPclient或使用Java内置的HTTPS支持),但我被困在使用客户端证书进行身份验证上。我注意到这里已经有一个非常类似的问题,我还没有用我的代码尝试(很快就会这样做)。我目前的问题是——无论我做什么——Java客户端从来不发送证书(我可以用PCAP转储检查这一点)。
我想知道客户端在使用证书进行身份验证时到底应该向服务器提供什么(特别是对于Java -如果这很重要的话)?这是一个JKS文件,还是PKCS#12?里面应该有什么;只有客户端证书,还是密钥?如果是,是哪个钥匙?关于所有不同类型的文件、证书类型等,有相当多的困惑。
正如我之前说过的,我是HTTPS/SSL/TLS的新手,所以我也想了解一些背景知识(不一定是一篇文章;我将满足于好文章的链接)。