我正在尝试将现有证书上的KeySpec标志设置为用于server加密角色。当前的KeySpec是0,我需要它是1。
要做到这一点,首先要将cert、其私钥和密钥使用导出到.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.的目录的权限存在问题具体来说,该“系统”对它具有权限,他删除了该权限,并使其工作起来。但是,我的目录副本没有具有权限的系统--它看起来与他的图片相同。
不需要做太多的事情了,这个certutil导入方法似乎是将KeySpec设置为1的唯一方法。在这里,我能做什么来使用正确的KeySpec标志导入那个键?
发布于 2020-07-10 15:03:20
在使用Template =(无模板) CNG密钥生成私钥后,我遇到了这个问题
若要将CNG密钥转换回遗留密钥,可以使用OpenSSL (https://www.google.com/search?q=Download+windows+OpenSSL)重新编码证书。
openssl pkcs12 -in mycert.pfx -out tmpmycert.pem -nodes
openssl pkcs12 -export -out mycert2.pfx -in tmpmycert.pem
您可以通过使用Template =(无模板) Legacy键生成CSR来避免这个问题。
祝好运!
发布于 2022-01-12 00:14:04
我在微软工作。我的客户今天收到了这个,我们没能修好。我们最终制定了一份新的社会责任。
这是一篇主要的文章,它解释了密钥规范是如何工作的,CNG相对于传统的加密服务提供商。
您可以做的是去您的MMC抢购证书。右键单击个人存储区->所有任务->高级操作->创建自定义请求。
没有注册策略->选择遗产模板,-> PKCS #10 -> Next -> DETAILS ->属性
添加一个友好的名称->,为您需要的任何SAN添加一个->名称->在扩展密钥上选择服务器和客户端身份验证->,在私钥选项卡上选择->,为您想要的密钥选项选择Microsoft强密码提供程序->,使私钥可导出->密钥类型选项卡->选择Exchange
这将生成一个(CSR)证书签名请求,然后让您的授权证书完全填充它。
发布于 2022-03-11 22:15:55
可以通过指定-csp参数使certutil导入使用遗留的强加密提供程序。
certutil -csp "Microsoft Strong Cryptographic Provider" -importpfx -f -enterprise my mycert.pfx AT_KEYEXCHANGE
https://stackoverflow.com/questions/61642667
复制相似问题