我已经在java中启动了基于客户端服务器通信的项目。我正在做的是客户端和服务器有自己的自签名证书。在初始通信中,客户端和服务器都将交换其证书。服务器必须验证客户端证书,并应授予身份验证。我遇到的问题是服务器可以验证或使特定客户端无效的主题。我无法从这里出发。那么请你们中的任何人简单解释一下吗?如果可能的话,java中有一些Pseudocode。?
答案 0 :(得分:1)
无法通过正常的PKI方法验证自签名证书 - 即,检查证书链到信任锚,不在CRL等上。
使用自签名证书时,初始配置通常涉及使用带外机制来交换证书和指纹以验证它们。然后,可以将这些证书添加到受信任的商店并由您的应用程序使用。当然,每次更新任何自签名证书时,都需要重复这个带外过程。对于需要安全通信的几个应用程序,这种方法可能没问题,但很明显,自签名证书方法无法扩展。
另一种方法是使用openssl包装器CA.pl之类的东西来设置迷你CA并发出客户端证书。然后,这些颁发的证书将链接到一个根。此根仍然必须安全地传递给所有依赖方,但不是根CA发布的其他证书。
更新:(回应下面评论中的问题)
以下是获取证书指纹的几种方法:
为了进一步提高安全性,证书所有者可以使用与证书检查程序不同的工具。