![为 SCVMM 创建新的(自签名?)证书](https://linux22.com/image/757574/%E4%B8%BA%20SCVMM%20%E5%88%9B%E5%BB%BA%E6%96%B0%E7%9A%84%EF%BC%88%E8%87%AA%E7%AD%BE%E5%90%8D%EF%BC%9F%EF%BC%89%E8%AF%81%E4%B9%A6.png)
我有一台 Server 2012R2 机器,它托管 System Center。在 SCVMM 安装期间,它为自己创建了一个自签名证书,用于 SCVMM 连接。不幸的是,它创建了一个带有 SHA-1 哈希的证书,这会触发我们的漏洞扫描程序,需要修复。
我知道有一种方法可以使用 MMC 的证书管理器控制台来生成证书请求,但我这样做只是为了将请求提交给更高级别的组织以生成和分发证书。虽然我确信我可以找到一种方法来手动创建完全自签名的证书,但我确实有几个问题更具体一些,更具体一些,更针对 SCVMM。
SCVMM 真的需要自签名证书吗?机器已安装上级组织要求的客户端/服务器身份验证证书(并且是 SHA-256)。我可以使用这个证书吗,或者“友好名称”必须包含“SCVMM_CERTIFICATE_KEY_CONTAINER(serverFQDN)”吗?
一旦 SHA-1 证书被替换(使用新的 SHA-256 自签名证书或现有的 SHA-256 证书),SCVMM 是否需要以某种方式进行配置?我通常不直接管理此应用程序,但负责管理此应用程序的人似乎找不到一个控制台来指示应该使用什么证书,我也没有。
答案1
SCVMM 真的需要自签名证书吗?
不,不是。实际上,在 SCVMM 场景中使用自签名证书并不是一个好的做法。这只是开始。您不太可能重用现有的客户端/服务器身份验证证书进行 SCVMM,因为它需要内部的特殊扩展:
1.3.6.1.4.1.311.62.1.1.1 = AgEE
Key Usage = Key Encipherment, Data Encipherment (30)
我不知道它的语法细节,只知道它是必需的。普通的 TLS 证书没有它。因此,您可能需要生成具有正确字段的 CSR 并要求上级组织对其进行签名。
但是这样做的人似乎无法找到一个控制台来指示应该使用什么证书,我也没有。
我不了解 GUI 控制台(从未使用过它),但我知道您可以在注册表中指定 SCVMM 证书:
Key = HKLM\Software\Microsoft\Windows NT\CurrentVersion\Virtualization
Value1 = DisableSelfSignedCertificateGeneration
Type1 = REG_QWORD
Data1 = 1
Value2 = AuthCertificateHash
Type2 = REG_SZ
Data2 = [CertThumbprint]
您创建/更新两个值:
DisableSelfSignedCertificateGeneration
-- 禁用自签名证书生成AuthCertificateHash
——您指定普通证书的指纹值(全部大写,没有空格,例如1234ABCDEF<...>
)。
另外,还需要授予VMM服务账户对私钥的权限:
icacls "%ALLUSERSPROFILE%\Microsoft\Crypto\RSA\MachineKeys\{KeyContainer}" /grant "*S-1-5-83-0:(R)"
首先,您与上级组织完成证书注册流程,并将证书安装在 Local Machine\Personal 文件夹中。然后运行
certutil -store my "Cert Serial Number"
并指定证书的序列号。该命令将返回有关证书的一些信息,如果安装正确,将出现Key Container
以下行,例如
<...>
Cert Hash(sha1): 21 1b 8d 5f d2 fa 68 a4 cd 27 56 2f c2 b0 b6 1e 7f 54 b2 7e
Key Container = 7e715043f56d6d367794d85b6f0fc494_9e3784ff-fd0b-4d70-a002-a1e4fc2f0cc8
用实际的键容器值替换命令{KeyContainer}
中的占位符。icacls