CertUtil导入pfx失败:NTE_NOT_SUPPORTED

时间:2020-05-06 18:31:20

标签: sql certificate pki certutil

我正在尝试在现有证书上设置KeySpec标志,以用于SQL Server加密角色。当前的KeySpec是0,我需要将其设置为1。

执行此操作的方法是,首先将证书,其私钥和密钥用法导出到.pfx文件中(使用密码,无论密码要求什么)。然后,使用certutil,运行certutil -importpfx AT_KEYEXCHANGE。

此“有效”之处在于,它提示输入密码(正确输入),但失败,并显示以下错误消息:

CertUtil:-importPFX命令失败:0x80090029(-2146893783 NTE_NOT_SUPPORTED) CertUtil:不支持请求的操作。

不幸的是,我在网上找不到太多-显然只有这一篇文章:

https://anotherexchangeblog.wordpress.com/tag/importpfx-command-failed-0x80090029/

似乎表明这是对位于C:\ ProgramData \ Microsoft \ Crypto \ RSA \ MachineKeys的目录的权限存在的问题。具体来说,该“ SYSTEM”对此具有权限,他删除了该权限,并使certutil运行。但是,该目录的副本没有权限的系统-它看起来与他的图片相同。

没有更多的事情要做,这种certutil导入方法似乎是将KeySpec设置为1的唯一方法。我该怎么办才能允许我使用正确的KeySpec标志导入该密钥?

1 个答案:

答案 0 :(得分:1)

在使用Template =(无模板)CNG密钥生成私钥后,我遇到了这个问题

要将CNG密钥转换回旧密钥,可以使用OpenSSL(https://www.google.com/search?q=Download+windows+OpenSSL)重新对证书进行编码

  1. 将当前证书导出到无密码的pem

    openssl pkcs12 -in mycert.pfx -out tmpmycert.pem -nodes

  2. 使用密码将pem文件转换为新的pfx文件:

    openssl pkcs12 -export -out mycert2.pfx -in tmpmycert.pem

您可以通过使用Template =(无模板)旧版密钥生成CSR来避免此问题

祝你好运!