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