我有一个证书,可以使用X509 Certificate 2类读取,如下所示:
X509证书2证书=新的X509证书2(@“证书.pem”);
但是我还有一个EC私钥。这是它的文件内容。
-----BEGIN EC PRIVATE KEY-----
MHcCAQEEIKpAuZ/Wwp7FTSCNJ56fFM4Y/rf8ltXp3xnrooPxNc1UoAoGCCqGSM49
AwEHoUQDQgAEqiRaEw3ItPsRAqdDjJCyqxhfm8y3tVrxLBAGhPM0pVhHuqmPoQFA
zR5FA3IJZaWcopieEX5uZ4KMtDhLFu/FHw==
-----END EC PRIVATE KEY-----
如何将此私钥“馈送”到证书并最终馈送到我的HttpClient,以便它可以用作客户端证书?
这是我的代码的其余部分:
X509Certificate2 certificate = new X509Certificate2(@"certificate.pem");
//certificate.PrivateKey = something;
httpClientHandler.ClientCertificates.Clear();
httpClientHandler.ClientCertificates.Add(certificate);
httpClientHandler.SslProtocols = SslProtocols.Tls12;
httpClientHandler.ClientCertificateOptions = ClientCertificateOption.Manual;
HttpClient httpClient = new HttpClient(httpClientHandler);
HttpResponseMessage result = httpClient.GetAsync("https://server.cryptomix.com/secure/").Result;
string str = result.Content.ReadAsStringAsync().Result;
3条答案
按热度按时间5anewei61#
我想我找到了...这个用的是弹跳城堡巧克力包。
诀窍似乎是将cert和key组合到一个pkcs12容器中,然后一次性将其输入
X509Certificate2
。shstlldc2#
将证书和密钥与openssl结合起来,并将其输入x509certificate类的工作原理是:
然后使用此函数获取一个具有指定私钥的类:
然后我问题中的代码就起作用了。
mrzz3bfm3#
您可以简单地使用方法X509Certificate2.CreateFromPemFile。
其中certificateFile和privateKeyFile是PEM文件的文件路径,