2010-10-22 172 views
2

有什么办法可以将我们自己生成的密钥对与已链接到根CA(例如:verisign)的现有证书链接起来?基本上,我的问题是在图下方如何链接SSL证书

Verisign Root CA 
    | 
    --> Company XYZ certificate 
        | 
        ---> Server foo certificate 

描述一旦我生成服务器foo的密钥对,我怎么跟公司XYZ证书链呢?

+1

不,你不能这样做。 Verisign和其他根CA不会向可以创建其他证书的公众颁发证书 - 这会破坏根证书信任的整个点。 – 2010-10-22 15:12:15

+1

没有技术上的原因,为什么商业CA不应该签署企业CA的根证书,以便企业可以颁发自己的证书。这样的证书需要具有用于密钥签名的正确使用属性。由于其CA证书由商业CA签署,所以企业的证书将被信任。这正是PKI信任链应该如何工作的方式。然而,商业上的原因为什么很少这样做(大量的身份证明比一次签名证书赚钱更多)。 – dajames 2010-10-26 11:55:17

回答

4

如果公司XYZ有Intermediate Certificate Authority证书,那么你可以。这种证书由根CA授权颁发新证书,并且这是在创建时由特定属性(基本约束,密钥使用,增强密钥使用)确定的。

但是,如果XYZ公司有正规的证书,例如用于识别网站,电子邮件用户或软件开发人员,这是不可能的。即使在实践中认为没有什么能阻止你创建一个新的证书并且用另一个签名(如果你有私钥的话),我认为你不会获得一个有效的证书。

所以,如果你有合适的证书,你将不得不签署foo。您可以使用makecertopen ssl来创建新的X509 Certificate。例如:

makecert -pe -n "CN=foo" -a sha1 -sky exchange -eku 1.3.6.1.5.5.7.3.1 -in "Company XYZ" -is my -ir LocalMachine -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12 -ss my -sr LocalMachine

你需要有安装在Windows证书存储在本地计算机/个人位置的XYZ公司的证书。生成的证书将被添加到同一个地方,您将能够以各种格式(.pfx,.cer,.p7b)从那里导出它。这也为新证书创建了密钥对。

1

如果您有两个证书,请尝试连接证书文件。如果不是,请修改您的问题,以便我们知道您在此过程中的位置。

如果您在Apache服务器上设置它,请参阅mod_ssl的SSLCertificateChainFile指令。