0

APS.NETコア(System.Net.HttpWebRequest)を使用してREST APIリクエスト(SSLベースのもの:https://)から応答を取得する方法を実装しました。ASP.NETコアを使用してWebリクエストにSSL証明書を検証する方法

WebResponseの取得中に発生した証明書のエラーを無視する必要があります。私は多くのブログを呼ばれ、ServicePointManagerを使用して溶液を得て、これ以下のコード

ServicePointManager.ServerCertificateValidationCallback += (sender, certificate, chain, sslPolicyErrors) => true; 

を使用しかし、ASP.NETコアにServicePointManagerはサポートされていません。ですので、HttpClientを使用してではなく、HttpWebRequestによってのみこの問題を解決するのを手伝ってください。

答えて

2

.NET Coreは、ServerCertificateCustomValidationCallback代理人をオーバーライドできるようにします。例:

var handler = new HttpClientHandler(); 
handler.ServerCertificateCustomValidationCallback = delegate { return true; }; 
var http = new HttpClient(handler); 
Console.WriteLine(http.GetAsync("https://expired.badssl.com/").GetAwaiter().GetResult()); 

が出力:.NET 1.0.0-preview2-1-003177でのUbuntu 16.04でテスト

StatusCode: 200, ReasonPhrase: 'OK', Version: 1.1, Content: System.Net.Http.StreamContent, Headers: 
{ 
    Server: nginx/1.10.0 
    Server: (Ubuntu) 
    Date: Mon, 06 Mar 2017 05:56:52 GMT 
    Transfer-Encoding: chunked 
    Connection: keep-alive 
    ETag: W/"58924b62-1d5" 
    Cache-Control: no-store 
    Content-Type: text/html 
    Last-Modified: Wed, 01 Feb 2017 20:56:02 GMT 
} 

。これに関連するopen issueがあります。MacOSでも同じです。

+0

ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(validarCertificado); 

...そして、この機能が含まれます。しかし、私はHttpWebRequestクラスのためにこれを実装する方法を知りたいです。 例: 'code' string url =" https:// XXXXXXXX:XXXX "; HttpWebRequest httpRequest =(HttpWebRequest)WebRequest.Create(url); httpRequest.Method = "取得"; httpRequest.ContentType = "application/json"; 使用(VAR結果=(HttpWebResponseの)(のawaitタスク .Factory.FromAsync(httpRequest.BeginGetResponse、httpRequest.EndGetResponse、NULL))){ のStreamReaderのStreamReader =新しいStreamReaderを(result.GetResponseStream())。 応答= streamReader.ReadToEnd(); } –

+0

これは.NET Core 2.0(https://github.com/dotnet/corefx/issues/16181)で可能なようです。 – Scovetta

-1
要求を呼び出す前に

:私はすでにこれを言及していた

protected bool validarCertificado(Object sender, 
           X509Certificate certificado, 
           X509Chain cadena, 
           SslPolicyErrors sslErrores) 
{ 
    return true; 
} 
関連する問題