我的CSR inf代人怎么了?出现Keyspec错误

时间:2019-06-25 14:35:03

标签: c# .net windows-server-2008 x509certificate2

我正在编写一个C#程序,该程序将创建inf文件,然后运行certreq -new以生成CSR并输出内容-在较旧的机器(例如Windows Server 2008)上,我遇到了一般错误< / p>

"[NewRequest] KeyAlgorithm = "ECDSA_P256" <=> KeySpec?

手动编辑CSR文件并完全删除KeySpec似乎可以使CSR顺利进行,但是我看到的每本指南似乎都提到了KeySpec,所以我很困惑自己在做错什么还是做什么。

string[] csrPairs = {"[NewRequest]", subjectLine, "Exportable = true", "ExportableEncrypted = true", "HashAlgorithm = sha256",
      "KeyAlgorithm = " + keyAlgorithm, "KeyLength = " + keysize, "KeySpec = 1", "MachineKeySet = true", "ProviderName = \"Microsoft Software Key Storage Provider\"","RequestType = PKCS10", "SMIME = false", "UseExistingKeySet = false"};

这是我用来生成CSR的代码,似乎可以在Windows 10上运行,但不能在Windows 2008 Server上运行。

任何帮助将不胜感激-Windows Serer 2008有什么我没想到的地方吗?还是我的新计算机为.net设置的东西,而其他计算机没有设置? (目标版本3.5)

旁注-理解关键规格的任何帮助也将非常有用。似乎“ 1”表示可以签名和加密,“ 2”只能签名-不确定默认值或0表示什么,或者我是否应该在此处执行其他任何操作。

1 个答案:

答案 0 :(得分:1)

嗯,我想我已经弄明白了。

CNG(密码学API:下一代)提供程序不使用KeySpec,而是将其设置为0-似乎此设置可能会与某些事情混淆,例如创建代码签名CSR。

在某些情况下,常规CSP /传统提供程序似乎能够确定所需的密钥,因此至少在我的测试中,设置KeySpec但没有密钥算法可以正常工作。