基于证书的认证

时间:2013-12-16 14:48:45

标签: java authentication certificate x509certificate public-key-encryption

我打算在Java中使用桌面应用程序进行安全的文件交换。 该应用程序需要一种可靠的身份验证方法,必须保证只有授权用户才能访问系统。

在注册中,用户生成密钥对并将其用户名和公钥发送到系统的中央服务器。有权访问此中央服务器的系统管理员批准注册,并要求证书颁发机构颁发将用户名绑定到公钥的公钥证书。生成x509证书并将其存储在证书服务器上。

当用户想要进行身份验证时,他会输入用户名,应用程序会使用他的私钥为他创建数字签名。此签名将发送到中央服务器,中央服务器向x509证书请求匹配的私钥。如果在证书服务器上找到x509,它将为中央服务器发送证书,并对用户进行身份验证。

我认为我有正确的想法,但我不知道如何在Java中启动实现。如果你觉得我有点困惑,你们可以给我一些指示,或纠正我的想法吗?

1 个答案:

答案 0 :(得分:1)

我同意Terry Chia的说法,客户端身份验证SSL会为您提供快速简便的方法来获取您想要的内容。使用SSL配置Web服务器,特别是客户端身份验证,并提供管理员用于签署批准的证书的可信CA.

Java应用程序需要使用SSL库,并且可以访问为库设置凭据的方式。我认为Java中的SSL默认库甚至可以这样做,并且可以使用X509Certificate来指定凭证。

在您的描述中,奇怪的是客户端没有使用私钥证明发送证书(无论您是签名还是使用SSL,都有私钥证明作为签名或SSL握手) )。让客户说“这就是我,这就是证据”更为典型 - 即提供X509证书和私钥证明。我怀疑服务器*可以•根据公钥查找凭证,但效率会降低。