c#https使用带密码的crt和密钥文件进行呼叫
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#https使用带密码的crt和密钥文件进行呼叫相关的知识,希望对你有一定的参考价值。
我有一个crt和密钥文件以及一个密码短语。
我通过Postman成功使用这些来调用外部API。我怎么在c#中这样做?
我看到使用Xcl9Certificate与httpclient的例子,但Idont看到构造函数的任何选项,我可以使用2个文件并设置密码短语
.NET不会轻易为您做到这一点。
老实说,你最好的选择是使用类似OpenSSL的东西来粘贴证书并将其键入PFX。
如果您决定不这样做,答案现在将继续。
在没有证书的情况下,如何加载密钥并不缺乏问题,例如:
- Digital signature in c# without using BouncyCastle
- How to parse(Convert to RSAParameters) X.509 private key in C#?
- Create RSACryptoServiceProvider object using RSA private key file in C#
- How is a private key encrypted in a pem certificate?
一旦你弄明白如何加载密钥,就会有密钥和证书,而且他们彼此不了解。有解决方案。
最安全,最简单的下一步:
如果您使用的是.NET Core,或者正在使用.NET Framework 4.7.2,则可以使用
X509Certificate2 certWithKey = cert.CopyWithPrivateKey(privateKey);
如果您要将certWithKey添加到X509Store,您需要使用持久密钥,或者导出到PFX并使用X509KeyStorageFlags.PersistKeySet
将其导回
在遥远的第二个:
如果(全部):
- 你在.NET Framework上(不是.NET Core)
- 你的关键是
RSACryptoServiceProvider
或DSACryptoServiceProvider
- 你的密钥被加载到一个密钥容器(
!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和密钥文件进行呼叫的主要内容,如果未能解决你的问题,请参考以下文章
linux下使用openssl生成https的crt和key证书