2010-04-10 48 views
3

我们有一个专有的框架,现在我们想要集成客户端SSL证书的认证。 将客户端证书映射到专有用户帐户(例如数据库中的简单用户表)的最佳做法是什么?将客户端证书映射到用户帐户的最佳做法是什么?

  • 保存证书的公钥呢?
  • 保存发行者和序列号?

还是有其他的可能性?

回答

2

您是否正在颁发证书(并且有可能设置证书的某些字段)?这些证书是否必须与更大规模的PKI环境(如电子邮件签名(我的意思是说你有X.509互操作性恶梦))集成?

如果你可以为用户创建一个证书颁发机构,并没有在意国外的系统,你可以给每个客户端证书的通用名称属性直接映射到您的用户帐户。因此,您可以检查客户端证书是否由用户证书颁发机构签署,然后匹配证书CN属性。

当只有签名证书的有限的和众所周知的号码,然后我推荐给存储这个证书,并检查客户端证书,并接受他们,只有当他们被签名证书的一个签名。然后,您使用颁发CA为每个用户唯一设置的证书字段(在用户证书更新时保持不变,许多合作让用户证书在约一年后超时)将该字段与您的用户数据库连接起来。

如果您不能颁发证书,您可以将证书的散列存储在数据库中,但是这样做的缺点是当证书用完时您需要更新数据库。散列对于每个证书都是唯一的,而证书的大部分字段都可能被伪造。

您可能还想检查签名证书颁发机构的证书吊销列表,因此没有用户可以使用被盗证书访问您的服务。