[英]c# HttpClient with https gets 400 Bad Request - but http works
[英]400 Bad Request HttpClient Mtls Certificate C#
我從端點收到 400 個錯誤請求。 我可以看到在 httpClientHandler 中加載的證書,然后在 httpclient 中加載,但它不起作用。
公共 HttpClientHandler generateCert() {
var SignatureCertificateThumbprint = "8f375e9024722edca43913dc267956b00ed36f2b";
X509Store store = new X509Store(StoreName.CertificateAuthority, StoreLocation.LocalMachine);
string certThumb = SignatureCertificateThumbprint.ToUpperInvariant();
store.Open(OpenFlags.ReadOnly);
IEnumerable<X509Certificate2> certificates = store.Certificates.OfType<X509Certificate2>();
X509Certificate currentCert = certificates.FirstOrDefault(x => x.Thumbprint == certThumb);
HttpClientHandler httpClientHandler = new HttpClientHandler();
httpClientHandler.ClientCertificates.Add(currentCert);
httpClientHandler.ClientCertificateOptions = ClientCertificateOption.Automatic;
httpClientHandler.ServerCertificateCustomValidationCallback = (a, b, c, d) => { return true; };
store.Close();
return httpClientHandler;
}
public async Task<object> PostEndPoint(object dataObject, string url)
{
EndPointBearerTokenResponse onAuth = (EndPointBearerTokenResponse)GetAuthorizeToken().Result;
var json = JsonConvert.SerializeObject(dataObject);
StringContent data = new StringContent(json, Encoding.UTF8, "application/json");
ServicePointManager.Expect100Continue = true;
//ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
ServicePointManager.ServerCertificateValidationCallback = (a, b, c, d) => { return true; };
HttpClient client = new HttpClient(generateCert());
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.CacheControl = new CacheControlHeaderValue() { NoCache = true };
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", onAuth.access_token);
var response = await client.PostAsync(url, data);}
我可以使用 PostMan 的端點,但不能使用應用程序。 尋求幫助。 問候
我必須將私鑰添加到證書中,生成一個帶有 .cert 和 .key 的新文件
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.