如何使用Keytool验证证书?
问题描述:
我想要一个程序来验证使用Oracle的SSLSocket
类创建SSL套接字。在我的程序中,我希望客户端通过其证书(使用Keytool
创建)。服务器应验证证书,然后继续进行通信。我希望服务器检查连接到它的每个客户端的证书。假设所有密钥(服务器和客户端)都存储在Keystore
中。我如何实现这一点?如何使用Keytool验证证书?
编辑:
原谅我,如果我不能正确地传达我的问题。我是新来的。我正在阅读this link以获得一些指导。在这里,当读取密钥库时,服务器直接对客户端的密钥文件名(即“client.public”)进行硬编码。但是,在我的程序中,这将由客户端指定,因为服务器事先不知道客户端的公钥文件名是什么。
答
您刚刚描述了幕后发生的事情。您只需创建一个SSLServerSocket并将needClientAuth设置为true,并像往常一样开始接受它的连接。 JSSE将完成剩下的工作。
假设我有10个客户端连接到服务器。服务器如何知道向CA请求哪个客户端的证书(在这种情况下,由于Keytool将管理所有证书)?你能给一些参考吗? – TheRookierLearner 2013-04-25 22:53:44
我不明白这个问题。客户端连接,发送其证书,服务器读取证书并根据信任存储进行检查。为每个客户。每个连接。 – EJP 2013-04-25 23:20:47
请参阅编辑。 – TheRookierLearner 2013-04-25 23:45:26