【问题标题】:Converting New-SelfSignedCertificate to X509Certificate2 : some options available in ps1 are missing in C#将 New-SelfSignedCertificate 转换为 X509Certificate2:C# 中缺少 ps1 中可用的一些选项
【发布时间】:2022-01-15 01:32:46
【问题描述】:

我正在尝试用 C# 代码替换创建自签名证书的现有 ps1 脚本。

有很多参考资料 like this 描述了使用 C# 和 .NET 创建自签名证书的大量内容。

但是似乎缺少几个选项,如果我能得到这样的输入,那就太棒了。

我在 C#/X509Certificate2 中寻找的选项在 ps1 New-SelfSignedCertificate 中可用如下:

-KeyUsageProperty All `
-CertStoreLocation $certStoreLocation `
-KeyExportPolicy Exportable `
-KeyProtection None `
-Type Custom

C# 中可用的等效类/属性有哪些?

【问题讨论】:

  • 你能分享你为此编写的代码吗?
  • -KeyUsageProperty 可以使用X509KeyUsageExtension 添加。 -Type 只是一些您可以轻松复制的标准模板,-Type Custom 表示您无论如何都没有使用模板。

标签: c# ssl-certificate x509certificate ps1


【解决方案1】:

由于您没有共享代码,因此很难准确回答。更加困难,因为您似乎没有描述问题(因此您的代码可能已经具有所有这些效果)

-KeyUsageProperty 全部

此选项更改持久私钥的权限(例如,如果将其设置为仅签名,则用于解密将失败)

密钥创建的默认设置是全部,因此您无需在此处执行任何操作。如果您对此有意见,那么您需要正确配置支持 RSACng/ECDsaCng 的 CngKey 值作为密钥创建的一部分。

CngKeyCreationParameters.KeyUsage

“-KeyUsageProperty”属性/参数似乎与控制 KeyUsageExtension 的“-KeyUsage”属性不同,尽管它可能用于生成一些默认值。由于您链接到的 sn-p 已经构建了 KeyUsageExtension,因此这一段无关紧要。

-CertStoreLocation $certStoreLocation

powershell cmdlet 创建证书并将其保存到 X509Store。 CertificateRequest API 没有。

如果要将证书保存到持久存储,则必须自己打开 X509Store 实例并调用 Add。 (确保有一个持久化的私钥,或者将创建的证书导出为 PFX,然后使用 X509KeyStorageFlags.PersistKeySet 设置将其导入。)

-KeyExportPolicy 可导出

如果您要创建临时密钥(例如 RSA.Create()),它们是可导出的。如果您正在创建持久密钥,那么它是您创建密钥的一部分。

CngKeyCreationParameters.ExportPolicy

-KeyProtection 无

另一个密钥创建选项。默认值为无。如果您想要其他内容,请参阅CngKeyCreationParameters.UIPolicy

-自定义类型

“-Type”参数用于在 EKU 扩展中预填充一些值。由于您使用的是Custom,这意味着“不要预先填充任何内容”......所以......完成了!

【讨论】:

    猜你喜欢
    • 2020-02-10
    • 1970-01-01
    • 2016-06-25
    • 1970-01-01
    • 1970-01-01
    • 2013-04-27
    • 2010-11-13
    • 1970-01-01
    • 2022-10-14
    相关资源
    最近更新 更多