存储客户端证书的最佳做法?

时间:2014-08-05 18:46:18

标签: security ssl certificate x509certificate mutual-authentication

我正在构建一个需要相互身份验证的应用。因此,我将允许我的用户上传一堆客户端证书,当他们拨打电话时,他们可以使用其中任何一个。我将匹配来自传入请求的客户端证书,以查看它是否与已存储的任何一个匹配,如果匹配,则该请求将被接受。

现在我试图找出存储这些客户端证书的最佳方式。我以为我可以将它们存储在数据库或某种文件/ blob商店中,或者我已经知道它们也可以安装在机器的商店中?

这些选项中的哪一个是理想的或被认为是最佳做法?

存储客户端证书的最佳做法是什么?

编辑:我的服务器实际上是在带有其他用户将使用的IIS的Windows计算机上运行服务。

1 个答案:

答案 0 :(得分:2)

1。)回答你的实际问题:

您可以将X.509证书存储在任何地方,我们可以将该位置称为truststore。如果它在您的文件系统,数据库或其他地方。 X.509证书可以公开给任何人,不包含任何敏感信息。只有公钥/私钥对的公钥存储在X.509证书中。

您只需要确保NO ONE ELSE能够在您的信任库中添加/删除/修改证书。否则,恶意的人将能够将例如他的 X.509证书添加到您的信任库中,您将立即信任他。

2。)关于你的评论

I will match the client cert from the incoming request to see if it matches any of the ones already stored, and if it does, the request will be honored. 

证书的简单比较不够。任何人都可以发给你任何证书。某人向您发送证书的事实是没有证明该人是该私钥的所有者,与该证书相对应。

为了确保,向您发送请求的人(您的传入请求)需要生成签名,例如传入请求。如果您收到传入请求以及签名,则可以使用X.509证书检查签名是否有效。那里有很多签名方案,你需要想象你想要使用哪些(有些很简单,有些更复杂)。