![](/img/trans.png)
[英]How to RestSharp add client certificate in Https request? (C#)
[英]How to add client certificate to Rest API in C#
如何基于以下 curl 将证书添加到 C# 中的 Rest API:
/drives/c/TempD/OpensslD curl --cacert <Server_CA_chain_file_name> --cert <Client_cert_file> --key <Client_key_file> -v -X POST --header 'Content-Type: application/json' --header 'Accept:application/json' -d '{"Info":{"functionRequesterIdentifier": "string","functionCallIdentifier":"string"},"profileType": " UMN_07.00"}' "https:/<Domain_Name>:12012/gsmak/rsp2/es/downloadOrder"
我想我明白了...这使用了 BouncyCastle NuGet 包。
using Org.BouncyCastle.Crypto;
using Org.BouncyCastle.OpenSsl;
using Org.BouncyCastle.Pkcs;
using Org.BouncyCastle.Security;
using System.Security.Cryptography.X509Certificates;
using System;
using System.IO;
string pemKey = @"-----BEGIN EC PRIVATE KEY-----
MHcCAQEEIKpAuZ/Wwp7FTSCNJ56fFM4Y/rf8ltXp3xnrooPxNc1UoAoGCCqGSM49
AwEHoUQDQgAEqiRaEw3ItPsRAqdDjJCyqxhfm8y3tVrxLBAGhPM0pVhHuqmPoQFA
zR5FA3IJZaWcopieEX5uZ4KMtDhLFu/FHw==
-----END EC PRIVATE KEY-----";
string pemCert = @"-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----";
var keyPair = (AsymmetricCipherKeyPair)new PemReader(new StringReader(pemKey)).ReadObject();
var cert = (Org.BouncyCastle.X509.X509Certificate)new PemReader(new StringReader(pemCert)).ReadObject();
var builder = new Pkcs12StoreBuilder();
builder.SetUseDerEncoding(true);
var store = builder.Build();
var certEntry = new X509CertificateEntry(cert);
store.SetCertificateEntry("", certEntry);
store.SetKeyEntry("", new AsymmetricKeyEntry(keyPair.Private), new[] { certEntry });
byte[] data;
using (var ms = new MemoryStream())
{
store.Save(ms, Array.Empty<char>(), new SecureRandom());
data = ms.ToArray();
}
var x509Cert = new X509Certificate2(data);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.