New-SelfSignedCertificateEx 失败 NTE_NOT_SUPPORTED
New-SelfSignedCertificateEx fails with NTE_NOT_SUPPORTED
我正在尝试使用 PowerShell 创建一个自签名证书,用于在开发环境中加密和解密数据。我用的是优秀的New-SelfSignedCertificateEx
PowerShell script。我的 OS 是 Windows 10,我安装了 Windows Management Framework 5.0。这是脚本:
New-SelfSignedCertificateEx `
-Subject "CN=Test, OU=Development" `
-NotAfter ([DateTime]::Parse('2099-12-31 11:59:59.9999999')) `
-ProviderName "Microsoft Software Key Storage Provider" `
-AlgorithmName ECDH_P256 `
-KeyLength 4096 `
-KeySpec Exchange `
-KeyUsage DataEncipherment `
-IsCA $false `
-SignatureAlgorithm SHA256 `
-FriendlyName Test `
-StoreLocation LocalMachine `
-StoreName My `
-Exportable
第 1 期
执行脚本returns出现以下错误:
New-SelfSignedCertificateEx : CertEnroll::CX509PrivateKey::Create: The requested operation is not supported. 0x80090029 (-2146893783 NTE_NOT_SUPPORTED)
At C:\create-self-signed-certificate.ps1:7 char:1
+ New-SelfSignedCertificateEx `
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OperationStopped: (:) [New-SelfSignedCertificateEx], COMException
+ FullyQualifiedErrorId : System.Runtime.InteropServices.COMException,New-SelfSignedCertificateEx
我研究了错误,但找不到与我的问题直接相关的任何内容。我选择使用密钥存储提供程序代替旧版 CSP。
第 2 期
我应该为 KeySpec
、KeyUsage
和 EnhancedKeyUsage
参数使用什么值?此证书的用途仅用于加密和解密任意字符串(无 TLS,无代码签名等)
您似乎已经发现,问题在于您在指定 NIST-P256 时将 KeySize 的值指定为 4096。对于 RSA 和 DSA,KeySize 大部分是任意的,但对于椭圆曲线算法,KeySize 由曲线的顺序强制(1 <= d <= n,其中 d 是私钥,n 是顺序)。
所以你真的不能选择 KeySize,它不适合选择曲线。
我正在尝试使用 PowerShell 创建一个自签名证书,用于在开发环境中加密和解密数据。我用的是优秀的New-SelfSignedCertificateEx
PowerShell script。我的 OS 是 Windows 10,我安装了 Windows Management Framework 5.0。这是脚本:
New-SelfSignedCertificateEx `
-Subject "CN=Test, OU=Development" `
-NotAfter ([DateTime]::Parse('2099-12-31 11:59:59.9999999')) `
-ProviderName "Microsoft Software Key Storage Provider" `
-AlgorithmName ECDH_P256 `
-KeyLength 4096 `
-KeySpec Exchange `
-KeyUsage DataEncipherment `
-IsCA $false `
-SignatureAlgorithm SHA256 `
-FriendlyName Test `
-StoreLocation LocalMachine `
-StoreName My `
-Exportable
第 1 期
执行脚本returns出现以下错误:
New-SelfSignedCertificateEx : CertEnroll::CX509PrivateKey::Create: The requested operation is not supported. 0x80090029 (-2146893783 NTE_NOT_SUPPORTED)
At C:\create-self-signed-certificate.ps1:7 char:1
+ New-SelfSignedCertificateEx `
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OperationStopped: (:) [New-SelfSignedCertificateEx], COMException
+ FullyQualifiedErrorId : System.Runtime.InteropServices.COMException,New-SelfSignedCertificateEx
我研究了错误,但找不到与我的问题直接相关的任何内容。我选择使用密钥存储提供程序代替旧版 CSP。
第 2 期
我应该为 KeySpec
、KeyUsage
和 EnhancedKeyUsage
参数使用什么值?此证书的用途仅用于加密和解密任意字符串(无 TLS,无代码签名等)
您似乎已经发现,问题在于您在指定 NIST-P256 时将 KeySize 的值指定为 4096。对于 RSA 和 DSA,KeySize 大部分是任意的,但对于椭圆曲线算法,KeySize 由曲线的顺序强制(1 <= d <= n,其中 d 是私钥,n 是顺序)。
所以你真的不能选择 KeySize,它不适合选择曲线。