簡體   English   中英

400 錯誤請求 HttpClient Mtls 證書 C#

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM