简体   繁体   English

如何在 C# 中将客户端证书添加到 Rest API

[英]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"

I think I've got it... This uses the BouncyCastle NuGet package.我想我明白了...这使用了 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.

相关问题 如何在Https请求中添加RestSharp添加客户端证书? (C#) - How to RestSharp add client certificate in Https request? (C#) 如何在客户端C#应用程序中使用Outlook REST API处理OAuth? - How to handle OAuth with Outlook REST API in client c# app? C#.Net Azure 管理 REST ZDB974238714CA8DE634A7CE1D083A14ResponseFManage Not - C# .Net Azure Management REST API - Add App Service Managed Certificate - Response = Not Found Rest Client C#的Web.config中的SSl证书详细信息 - SSl certificate details in Web.config of Rest Client C# 在客户端C#上调用rest api - calling rest api on client side c# 如何使用 C# 向 REST api 添加参数? - How to add parameters to a REST api using C#? 如何使用C#将产品添加到Magento 2 REST API? - How to Add a Product to Magento 2 REST API using C#? C#中的Universal Rest Client,用于不同的REST API - Universal Rest Client in C# for different REST API's How do I use SharePoint Rest API in C# .NET Framework using Client ID and Client Secret? - How do I use SharePoint Rest API in C# .NET Framework using Client ID and Client Secret? C#Web API-通过客户端证书验证用户 - C# Web API - Authenticating users by client certificate
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM