簡體   English   中英

在DotNet核心服務堆棧上繞過SSL證書驗證

[英]Bypassing SSL Certificate Validation on DotNet Core Service Stack

我知道.Net Core中不再存在ServicePointManager.ServerCertificateValidationCallback ,而是替換為:

using(var handler = new System.Net.Http.HttpClientHandler())
{
    using (var httpClient = new System.Net.Http.HttpClient(handler))
    {
        handler.ServerCertificateCustomValidationCallback = (request, cert, chain, errors) =>
        {
            return true;
        };

    }
}

但是,我們目前正在使用ServiceStack.Core庫,據我所知,它不會暴露像這樣的屬性或處理程序本身。

我如何告訴ServiceStack客戶端在此代碼中繞過ssl驗證?

using(var client = new JsonServiceClient("https://www.google.com"))
{
    var response = client.Get("/results");
}

如果有辦法,Windows和Linux上的工作方式是否相同?

JsonServiceClient是基於.NET HttpWebRequest構建的,它已經在.NET Core中重寫為HttpClient包裝器,因此我們通常建議.NET Core避免這種開銷(比.NET 4.5慢得多)並切換到使用JsonHttpClient ServiceStack.HttpClient,因為它直接使用HttpClient ,您可以在其中注入自己的HttpClientHandler

var client = new JsonHttpClient(baseUrl)
{
    HttpMessageHandler = new HttpClientHandler
    {
        UseCookies = true,
        AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate,
        ServerCertificateCustomValidationCallback = (req,cert,chain,errors) => true
    }
};

請注意,建議重用HttpClient實例,以便盡可能重用HttpClient實例並避免丟棄它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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