客户端证书签名

我的一个合作伙伴想要做客户端SSL证书authentication。

他们希望我们使用认可的CA签署证书。

我的印象是,对于客户端SSL证书authentication,使用自签名的CA会做。 但是,他们坚持认为这应该由认可的CA来完成。 有这样的事吗?

这个问题更适合http://security.stackexchange.com姊妹网站。

客户端证书不应由认可的CA签名; 更确切地说,他们应该签署这样的根/中间,只有签署信任代表你的客户。

很明显,属于公认的CA的公共签名确实会签署除客户以外的其他证书; 用一些主题文本(CN)签署证书与相信任何请求签名的人有权充当该主题相同。 这意味着认可的CA本质上“信任”更多的主体,而不是您所信任的主体。 换句话说, 您的服务器需要特别注意区分信任的所有主题。

公认的证书也是购买和续费的额外费用。

尽pipe可以由认可的CA提供解决scheme来满足您的要求,但与自行签署(在您自己的客户端身份validation过程之后)相比,它们总是更昂贵,更复杂,也不安全。 这对我没有任何意义。

更糟糕的解决scheme是支付公共证书,然后从您的信任存储中删除所有的公共根目录,并且只添加特定的最终客户端证书。 这种“妥协”只是将两种替代品的成本加在一起,而没有任何相应的好处。

更新在专业上,我经常与银行和PCI处理器合作进行电子商务支付。 大多数情况下,他们都需要自己的CA用于服务器端和客户端证书,并拒绝使用公认的CA.

大多数(如果不是全部的话)由商业CA发布的服务器证书也适合于客户端authentication。 挑战在于,因为您需要将证书和密钥分发给客户端,所以可能会造成安全风险。 除非你要进行机器到机器的通信,否则我将创build一个适合于仅发布客户端证书的专用CA.

商业CA只会为您拥有的有效DNS名称颁发服务器证书。 如果要使用此服务器证书进行客户端身份validation,则需要将证书和密钥发送给最终用户。 这是您用来请求证书的服务器的安全风险。