使用现有的根证书颁发机构签署证书

5
我正在尝试为SQL Server Reporting Services设置一些证书,以便我可以为测试目的在我的计算机上安全连接不同主机名(别名)。 我的理解是这些证书需要由受信任的根证书颁发机构签名(在此处解释)。 经过一些研究,我找到了很多有用的信息,通常可以通过此帖总结; 我找到的信息告诉我如何使用Powershell的New-SelfSignedCertificate cmdlet创建新证书。
因此,我现在知道如何创建新的根CA,也知道如何为给定主机名创建由新根CA签名的SSL证书。 但是,我找不到任何地方解释如何重复使用现有的根CA。 我希望代码像这样工作:
$rootCA = <# What goes here? #>
$TestSigned = New-SelfSignedCertificate -subjectName "CN=TestSignedByRoot" -Signer $rootCA

我每次想创建证书时,是否都需要创建一个新的根CA?这似乎很疯狂,所以我希望不是这种情况。如果有人能提供一些解释和示例代码,将不胜感激。

3个回答

3
从已知哈希值的证书存储中获取证书:
$rootCa = ( Get-ChildItem -Path cert:\LocalMachine\My\EEDEF61D4FF6EDBAAD538BB08CCAADDC3EE28FF )

查看“我的存储”中的证书:

Get-ChildItem -Path cert:\LocalMachine\My

要按主题名称获取证书,使用Where-Object来检查Subject属性:
$rootCa = Get-ChildItem -Path cert:\LocalMachine\My | Where-Object {$_.Subject -eq "CN=My Awesome Root CA"}

0
你在这里缺少一个关键词:可信。不仅是你,任何试图验证证书有效性的计算机都需要信任它。大多数公司都会有PKI解决方案来能够内部发放证书,并将根CA的证书通过GPO推送到本地计算机证书存储的受信任根文件夹中。根CA应该是已经建立并被连接到你的SQL服务器的计算机所信任的东西。我建议你联系IT或安全部门,询问公司是否有一个可信的根CA,你可以通过它签署证书,或者他们是否可以为你发放一个链到可信根的证书。
编辑:好的,我误解了重点。我的理解是“我的机器”是你支持的SQL服务器,而不是其他要连接它的计算机。如果你只关心自己的计算机,那么就需要:
1. 创建一个证书签名证书(证书A) 2. 将证书A添加到本地计算机证书存储的受信任根文件夹中 3. 使用证书A作为签名证书创建自签名证书(证书B)

完成步骤1和2后,您可以重复执行步骤3多次以生成其他证书。通常只需要一个根证书即可。重要的是,'客户端'信任根证书,这样当它连接到SQL报告服务并看到证书时,就可以建立起一条链式信任,直到初始链式的根证书。


1
没有所谓的“IT”,因为我正在管理自己的机器。在这个方程式中,没有其他计算机参与(或应该参与)。 - Jake

0
要使用现有的受信任证书,您需要在个人证书文件夹(cert:\ LocalMachine \ My)中拥有受信任证书的副本。 我使用了CertMgr。否则,当您最终运行创建自签名证书的命令时,将出现错误
新自签名证书:CertEnroll :: CSignerCertificate :: Initialize:找不到对象或属性。 0x80092004(-2146885628 CRYPT_E_NOT_FOUND)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接