【发布时间】:2019-11-07 10:28:52
【问题描述】:
我正在编写一个 C# 程序,它将创建 inf 文件,然后运行 certreq -new 以生成 CSR 并输出内容 - 在较旧的机器上(例如 Windows server 2008)我收到一个一般错误
"[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)
旁注 - 任何理解 keyspec 的帮助都会很棒。似乎“1”意味着它可以签名和加密,“2”只能签名 - 不确定默认值或 0 做什么,或者我是否应该在这里做任何其他事情。
【问题讨论】:
-
尝试用
= AT_KEYEXCHANGE替换= 1 -
感谢您的建议!但是,同样的错误。摆脱 KeyAlgorithm 或 KeySpec 字段使它工作得很好——不过,我担心两者的影响。如果我删除 KeyAlgorithm,我是否信任系统来决定我要返回什么?如果我删除 KeySpec,密钥是否可以以人们想要的方式使用...
标签: c# .net windows-server-2008 x509certificate2