我正在设置一个将连接到远程Web服务的Web应用程序,并且需要使用客户端证书。 我的networking应用程序使用HTTPS进行连接,并使用我现有的通配符证书为我的域进行configuration。
我可以使用通配符证书中的公钥作为我的客户端证书吗? 我需要将它提供给远程Web服务pipe理员,以便他们可以将其添加到受信任的客户端证书列表中。
使用我的通配符的公钥作为我的客户端证书有什么缺点吗? 如果我不能/不应该这样做,我可以使用什么样的证书?
一个缺点是你的私钥现在可能在两台机器上。
根据定义,客户端密钥应该是私有的。 如果它是共享的,那么它不是私人的。
这立即减less了任何人可以在你的证书中的信任。 该服务器的所有其他用户(如果有的话)现在不能信任它,因为它的私钥已知是共享的。
您的问题没有说明您是使用您自己的CA还是使用商业CA. 如果是商业性的,您可能会通过共享私钥破坏CA的条款和条件。
最好的办法是简单地为您的客户创build另一个证书。 如果您正在运行自己的CA,只需创build另一个证书。 如果是商业性的,可以为您的客户购买新的证书或免费获得。 无论哪种方式,如果您的证书将有一个扩展密钥用法字段,请确保它包含“客户端身份validation”(而不是“服务器身份validation”)。
正如你所阐明的,你的设置是一台机器充当客户端和服务器。 在这种情况下,您需要了解服务器身份validation和客户端身份validation的证书configuration文件中的细微差别:
服务器证书将具有该服务器的DNS名称作为CommonName(CN)或主题备用名称(SAN),或两者。 客户端证书通常会将您的电子邮件地址作为CN,尽pipe没有理由不能做任何其他事情。
服务器证书的扩展密钥用法扩展应该是server authentication ,而对于客户端证书,它应该是client authentication 。 这可能会导致问题。