自签名证书认证

时间:2010-05-05 12:56:51

标签: java security certificate

我已经在java中启动了基于客户端服务器通信的项目。我正在做的是客户端和服务器有自己的自签名证书。在初始通信中,客户端和服务器都将交换其证书。服务器必须验证客户端证书,并应授予身份验证。我遇到的问题是服务器可以验证或使特定客户端无效的主题。我无法从这里出发。那么请你们中的任何人简单解释一下吗?如果可能的话,java中有一些Pseudocode。?

1 个答案:

答案 0 :(得分:1)

无法通过正常的PKI方法验证自签名证书 - 即,检查证书链到信任锚,不在CRL等上。

使用自签名证书时,初始配置通常涉及使用带外机制来交换证书和指纹以验证它们。然后,可以将这些证书添加到受信任的商店并由您的应用程序使用。当然,每次更新任何自签名证书时,都需要重复这个带外过程。对于需要安全通信的几个应用程序,这种方法可能没问题,但很明显,自签名证书方法无法扩展。

另一种方法是使用openssl包装器CA.pl之类的东西来设置迷你CA并发出客户端证书。然后,这些颁发的证书将链接到一个根。此根仍然必须安全地传递给所有依赖方,但不是根CA发布的其他证书。

更新:(回应下面评论中的问题)

以下是获取证书指纹的几种方法:

  • 使用openssl:openssl x509 -sha1 -in cert.pem -noout -fingerprint
  • Windows上的
  • 将其保存为.cer文件,然后双击它,然后转到详细信息选项卡
  • 使用此工具:online cert decoder

为了进一步提高安全性,证书所有者可以使用与证书检查程序不同的工具。