Noe*_*oel 5 c# https httpclient x509certificate
我有一个 crt 和密钥文件以及密码。
我通过 Postman 成功使用这些来调用外部 API。我如何在 C# 中执行此操作?
我看到了将 X509Certificate 与 httpclient 一起使用的示例,但没有看到构造函数的任何选项,我可以在其中使用 2 个文件并设置密码
.NET 不会轻易地为您做到这一点。
老实说,最好的选择是使用 OpenSSL 之类的工具将证书和密钥粘合在一起形成 PFX。
假设您决定不这样做,答案现在将继续。
不乏询问如何在没有证书的情况下加载密钥的问题,例如:
一旦您弄清楚如何加载密钥,您就拥有了密钥和证书,但它们彼此无法理解。有解决方案。
如果您使用 .NET Core,或者使用 .NET Framework 4.7.2,则可以使用
X509Certificate2 certWithKey = cert.CopyWithPrivateKey(privateKey);
Run Code Online (Sandbox Code Playgroud)
如果您要将 certWithKey 添加到 X509Store,您要么需要使用持久密钥,要么导出到 PFX 并使用以下命令将其导入回来X509KeyStorageFlags.PersistKeySet
如果(全部):
RSACryptoServiceProvider或一个DSACryptoServiceProvider!string.IsNullOrEmpty(key.CspKeyContainerInfo.KeyContainerName))那么你可以使用X509Certificate2.PrivateKey的setter。
在我对.NET Standard - 将证书和私钥以编程方式合并到 .pfx 文件中以制作 PFX 的答案的底部有一些 P/Invoke 建议。一旦你制作了 PFX,你就回到了“简单”的领域。