我正在尝试在现有证书上设置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标志导入该密钥?>
答案 0 :(得分:1)
在使用Template =(无模板)CNG密钥生成私钥后,我遇到了这个问题
要将CNG密钥转换回旧密钥,可以使用OpenSSL(https://www.google.com/search?q=Download+windows+OpenSSL)重新对证书进行编码
将当前证书导出到无密码的pem
openssl pkcs12 -in mycert.pfx -out tmpmycert.pem -nodes
使用密码将pem文件转换为新的pfx文件:
openssl pkcs12 -export -out mycert2.pfx -in tmpmycert.pem
您可以通过使用Template =(无模板)旧版密钥生成CSR来避免此问题
祝你好运!