c#https使用带密码的crt和密钥文件进行呼叫

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#https使用带密码的crt和密钥文件进行呼叫相关的知识,希望对你有一定的参考价值。

我有一个crt和密钥文件以及一个密码短语。

我通过Postman成功使用这些来调用外部API。我怎么在c#中这样做?

我看到使用Xcl9Certificate与httpclient的例子,但Idont看到构造函数的任何选项,我可以使用2个文件并设置密码短语

答案

.NET不会轻易为您做到这一点。

老实说,你最好的选择是使用类似OpenSSL的东西来粘贴证书并将其键入PFX。

如果您决定不这样做,答案现在将继续。

在没有证书的情况下,如何加载密钥并不缺乏问题,例如:

一旦你弄明白如何加载密钥,就会有密钥和证书,而且他们彼此不了解。有解决方案。

最安全,最简单的下一步:

如果您使用的是.NET Core,或者正在使用.NET Framework 4.7.2,则可以使用

X509Certificate2 certWithKey = cert.CopyWithPrivateKey(privateKey);

如果您要将certWithKey添加到X509Store,您需要使用持久密钥,或者导出到PFX并使用X509KeyStorageFlags.PersistKeySet将其导回

在遥远的第二个:

如果(全部):

  • 你在.NET Framework上(不是.NET Core)
  • 你的关键是RSACryptoServiceProviderDSACryptoServiceProvider
  • 你的密钥被加载到一个密钥容器(!string.IsNullOrEmpty(key.CspKeyContainerInfo.KeyContainerName)
  • 您要么没有从X509商店获得此证书,要么您不担心潜在的意外副作用

那么你可以使用X509Certificate2.PrivateKey的setter。

最后的想法

在我对.NET Standard - Merge a certificate and a private key into a .pfx file programmatically做出PFX的回答的底部有一些P / Invoke建议。一旦你制作了PFX,你就会回到“简单”的领域。

另一答案

System.Net.Security.RemoteCertificateValidationCallback默认值为null。

设置qazxsw poi和 返回qazxsw poi

System.Net.ServicePointManager.ServerCertificateValidationCallback

以上是关于c#https使用带密码的crt和密钥文件进行呼叫的主要内容,如果未能解决你的问题,请参考以下文章

Python 发送带自签名证书的 https 请求

linux下生成https的crt和key证书

linux下生成https的crt和key证书

linux下使用openssl生成https的crt和key证书

iis绑定ssl证书 只提供了crt文件无Key文件怎么办?

导出不带密码的 gpg 密钥