2010-05-05 110 views
1

我已经开始基于java中的客户端服务器通信的项目。我在做的是客户端和服务器有自己的自签名证书。在初始通信中,客户端和服务器将交换其证书。服务器必须验证客户端证书并应授予身份验证。我碰到什么主题服务器可以验证或无效的特定客户端..?我无法从这里开始。所以请你们任何一位可以简单介绍一下吗?如果可能的话,在Java中的一些伪代码..?自签名基于证书的身份验证

回答

1

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

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

另一种方法是使用类似openssl封装器CA.pl的设置来设置一个迷你CA并颁发客户端证书。这些颁发的证书将全部链接到一个根。这个根目录仍然必须安全地传达给所有依赖方,但是没有从根CA颁发的其他证书没有。

UPDATE:(在回答这个问题在下面的评论)

这里有一些方法可以得到一个证书指纹:使用OpenSSL的

  • :OpenSSL的X​​509 -sha1 -in cert.pem - noout -fingerprint
  • 在Windows将其保存为.CER文件,然后双击它,然后使用这个工具去详情标签
  • online cert decoder

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

+0

非常感谢..我得到了一些东西..我想知道如何通过使用指纹验证客户端进行验证。我不想在我的应用程序中使用任何第三方CA.所以我没有使用OpenSSL证书。我们如何通过使用Thumbprint来验证客户端? – 2010-05-06 04:36:32

+0

@Tadi Vijay Kumar:我已经添加了一些关于如何获取证书指纹的信息。希望这可以帮助。 – bignum 2010-05-06 05:25:33