X509Store 构造函数(字符串)有什么意义?
What is the point of the X509Store Constructor (String)?
似乎您可以根据任何字符串设置一个有效的 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")
。
经过查阅MSDN X509Store Class documentation这里是我理解的要点
X509Store Class 有许多构造函数。在定义 class 的实例后,可以使用 Open 方法打开它。
如果实例指向有效 StoreLocation 中的有效 StoreName,则 Open 方法将打开证书存储区。如果 StoreLocation 正确,Open 方法还可以根据使用的标志 [System.Security.Cryptography.X509Certificates.OpenFlags] 创建新存储。
如果store实例定义不正确,open方法会生成一个System.ArgumentException.
有效的 StoreLocation 值为
- 当前用户
- 本地机器
有效的 StoreName 值为
- 地址簿
- AuthRoot
- 证书颁发机构
- 不允许
- 我的
- 根目录
- 值得信赖的人
- TrustedPublisher。
这是 MSDN 对 (String) 构造函数的描述。
"Use this constructor to create an X509Store object using a particular X.509 store name for the current user. To create a new store, specify a name that does not exist. A new store will be created with that name."
因此此代码应在 "CurrentUser" 中创建一个名为 "abcdef" 的新证书库。
$store = New-Object System.Security.Cryptography.X509Certificates.X509Store("abcdef")
$openFlags = [System.Security.Cryptography.X509Certificates.OpenFlags]::MaxAllowed
$store.Open($openFlags)
可以使用MMC验证。
因此,总而言之,存储构造函数参数 "StoreName" 和 "String" 是可以互换的。语义上 "StoreName" 用于引用预定义的值,而 "String" 可以引用任何值。
似乎您可以根据任何字符串设置一个有效的 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")
。
经过查阅MSDN X509Store Class documentation这里是我理解的要点
X509Store Class 有许多构造函数。在定义 class 的实例后,可以使用 Open 方法打开它。
如果实例指向有效 StoreLocation 中的有效 StoreName,则 Open 方法将打开证书存储区。如果 StoreLocation 正确,Open 方法还可以根据使用的标志 [System.Security.Cryptography.X509Certificates.OpenFlags] 创建新存储。
如果store实例定义不正确,open方法会生成一个System.ArgumentException.
有效的 StoreLocation 值为
- 当前用户
- 本地机器
有效的 StoreName 值为
- 地址簿
- AuthRoot
- 证书颁发机构
- 不允许
- 我的
- 根目录
- 值得信赖的人
- TrustedPublisher。
这是 MSDN 对 (String) 构造函数的描述。
"Use this constructor to create an X509Store object using a particular X.509 store name for the current user. To create a new store, specify a name that does not exist. A new store will be created with that name."
因此此代码应在 "CurrentUser" 中创建一个名为 "abcdef" 的新证书库。
$store = New-Object System.Security.Cryptography.X509Certificates.X509Store("abcdef")
$openFlags = [System.Security.Cryptography.X509Certificates.OpenFlags]::MaxAllowed
$store.Open($openFlags)
可以使用MMC验证。
因此,总而言之,存储构造函数参数 "StoreName" 和 "String" 是可以互换的。语义上 "StoreName" 用于引用预定义的值,而 "String" 可以引用任何值。