我在 Windows 10 上制作了一个自签名证书,如下所示:
$MasterKeyDNSName = 'CN=Always Encrypted Sample'
Write-Host "Creating Self Signed Certificate $($MasterKeyDNSName)"
$Cert = New-SelfSignedCertificate `
-Subject $MasterKeyDNSName `
-CertStoreLocation Cert:\CurrentUser\My `
-KeyExportPolicy Exportable `
-Type DocumentEncryptionCert `
-KeyUsage DataEncipherment `
-KeySpec KeyExchange
$CmkPath = "Cert:\CurrentUser\My\$($cert.ThumbPrint)"
Write-Verbose "Column Master Key Certificate Path: $($CmkPath)"
该证书具有 的指纹B91A912CF632575F784CDE485DA37AB2F23DB6BA
,并出现在 下的电子注册表中HKEY_CURRENT_USER\Software\Microsoft\SystemCertificates\CA\Certificates\B91A912CF632575F784CDE485DA37AB2F23DB6BA
。
从 powershell 我可以通过 和 访问Cert:\CurrentUser\My\B91A912CF632575F784CDE485DA37AB2F23DB6BA
它Cert:\CurrentUser\CA\B91A912CF632575F784CDE485DA37AB2F23DB6BA
。
根据Microsoft 文档其中,我的文件夹使用 .Default 存储,CA 文件夹使用 .Default、GroupPolicy 和 .LocalMachine 物理存储。
My 是否像符号链接并且 CA 是权威位置?
答案1
My和CA商店确实不一样。
如果您打开 MMC certmgr,您会看到 My 是个人,CA 是中级证书颁发机构。
此命令:
$Cert = New-SelfSignedCertificate -Subject 'CN=Always Encrypted Sample'
将在 3 个存储中生成证书(除非您当前的路径是 Cert:\CurrentUser 或 Cert:\CurrentUser\My ):
- 证书:\LocalMachine\我的
- 证书:\LocalMachine\ca
- 证书:\CurrentUser\ca
这样做的唯一原因未记录的我所看到的行为是一种笨拙的尝试,试图使自签名证书在生成时立即生效。
如果不是ca
,而是将生成的证书自动发布到root
商店(即受信任的根证书颁发机构),那么这个目标就可以实现。
也许创建代码的开发人员New-SelfSignedCertificate
对故事名称感到困惑ca
,因为 CA 无处不在证书颁发机构,而且只有在那里中级证书颁发机构