X509Store构造函数(String)有什么意义?

时间:2015-03-18 06:00:10

标签: powershell certificate x509

好像你可以根据任何字符串设置有效的X509Store对象。 例如。

$store = New-Object System.Security.Cryptography.X509Certificates.X509Store("abcdef")

我最初使用的是

 $store = New-Object System.Security.Cryptography.X509Certificates.X509Store("Cert:\CurrentUser\My")

认为我有My商店的有效对象,但是在调用时我一直遇到异常:

$store.Open([System.Security.Cryptography.X509Certificates.OpenFlags]::MaxAllowed) #Exception calling "Open" with "1" argument(s): "The parameter is incorrect.

字符串是否采用某种格式?

编辑: 似乎字符串可以是任何东西,只要没有斜杠。所以我需要使用$store = New-Object System.Security.Cryptography.X509Certificates.X509Store("My")

1 个答案:

答案 0 :(得分:1)

在咨询MSDN X509Store Class documentation后,这是我理解它的要点。

X509Store Class有许多构造函数。在定义了类的实例之后,可以使用Open方法打开它。

如果实例指向有效StoreLocation中的有效StoreName,则Open方法将打开证书存储。如果StoreLocation正确,Open方法还可以基于使用的标志[System.Security.Cryptography.X509Certificates.OpenFlags]创建新的存储。

如果未正确定义商店实例,则打开方法将生成System.ArgumentException。

有效的StoreLocation值为

  • CurrentUser
  • LOCALMACHINE

且有效的StoreName值为

  • 地址簿
  • AuthRoot
  • CertificateAuthority
  • 不允许
  • TrustedPeople
  • TrustedPublisher。

这就是MSDN对(String)构造函数的看法。

"使用此构造函数使用当前用户的特定X.509商店名称创建X509Store对象。要创建新商店,请指定不存在的名称。将使用该名称创建一个新商店。"

因此,此代码应在" CurrentUser"中创建新的证书存储区。叫做#34; abcdef"。

$store = New-Object System.Security.Cryptography.X509Certificates.X509Store("abcdef")
$openFlags = [System.Security.Cryptography.X509Certificates.OpenFlags]::MaxAllowed
$store.Open($openFlags)

可以使用MMC进行验证。

New certificate store

因此,总之,存储构造函数参数" StoreName"和"字符串"是可以互换的。语义上" StoreName"用于引用预定义值和" String"可以指任何价值。