2016-07-01 13 views
22

私はhttpsサイトに接続する必要のあるプロジェクトに取り組んでいます。私が接続するたびに、そのサイトの証明書が信頼されていないサイトから来たので、私のコードは例外をスローします。証明書チェックをバイパスする方法はありますか.net core http?.netコアの無効なSSL証明書を迂回します

このコードは以前のバージョンの.NETにあります。私はちょうどこのようなものが必要だと思う。

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

[HttpClientで信頼できないSSL証明書を許可する](URL:http://stackoverflow.com/questions/12553277/allowing-untrusted-ssl-certificates-with-httpclient) – Matyas

答えて

11

ServicePointManager.ServerCertificateValidationCallbackは.Net Coreではサポートされていません。

現在の状況が、それは今後の4.1 新しいServerCertificateCustomValidationCallback方法になるということです。* System.Net.Http契約(HttpClientを)。 .NET Coreチームは今4.1契約を締結しています。あなたは、あなたがここで直接CoreFxまたはMYGETフィードのソースを使用してSystem.Net.Http 4.1のプレリリース版を試してみることができますhere on github

にこのことについて読むことができます: https://dotnet.myget.org/gallery/dotnet-core

現在WinHttpHandler.ServerCertificateCustomValidationCallback定義をGithubで

+2

これはWindowsのみで動作します。あなたはLinuxのための解決策を持っていますか?ありがとう。 – Vladimir

-28

あなたのアプリをハッカーまで開いてください。優れたアイデア。任意のサイト(MacOS Xの組み込み機能を備え、おそらくWindowsとLinuxでも同様の形式で利用可能)で偽の証明書を作成するのに約2分かかります。サイトをリダイレクトすると、ハッカーが少し長くなりますが、問題はありません。

サイトに壊れているか古い証明書がある場合は、サイト管理者に行き、彼に良い蹴りを与え、彼のサイトを修正するように指示します。いかなる場合でも、壊れた証明書でhttpsを使用することを検討する必要があります。

+0

これが有効な唯一のソリューションです。決してセキュリティ証明書の検証をバイパスしないでください。期間。 – Crypt32

+9

実際には、開発中にバイパス検証が必要な場合があります。たとえば、自己署名証明書がある場合などです。 – Set

+0

同意できません。たとえば、顧客の内部開発チームは、ネットワーク内で信頼される特別な開発CAを使用します。これは、余分なCERT検証コードの検証にも役立ちます。 – Crypt32

4

ここでは同じ問題の答えを探していますが、私はWCF for .NET Coreを使用しています。あなたは同じ船に乗っている場合は、使用:

client.ClientCredentials.ServiceCertificate.SslCertificateAuthentication = 
    new X509ServiceCertificateAuthentication() 
    { 
     CertificateValidationMode = X509CertificateValidationMode.None, 
     RevocationMode = X509RevocationMode.NoCheck 
    }; 
+0

すべての証明書とAppDomainのグローバル? – Kiquenet

+0

@Kiquenet:私はそう信じています。更新された回答が他の場所にあるかどうかを確認してください。それは1年です。私は、他に何もないなら、オーセンティケータをサブクラス化できると思います。そして、いいえ、私が知っているHttpClientのネイティブなファクトリはありません。さらに機能が必要な場合は、RestClientをご覧ください。 –

12

あなたはまた、私が使用することをお勧めこの

using (var httpClientHandler = new HttpClientHandler()) 
{ 
    httpClientHandler.ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => { return true; }; 
    using (var client = new HttpClient(httpClientHandler)) 
    { 
     // Make your request... 
    } 
} 

のような匿名のコールバック関数でHTTP呼び出しのSSL証明書のチェックを無効にすることができますファクトリパターンはHttpClientのため、すぐに破棄されない可能性がある共有オブジェクトであるため、connections will stay openです。

+1

私は.Net Core 1.0を使用しています。これは私のために働いていました。頭の中では、.Net Core 2.0は 'DangerousAcceptAnyServerCertificateValidator'という' HttpClient'プロパティを追加しました。これはMacOSXでこの作業を行う方法を提供します。詳細はこちら - https://github.com/dotnet/corefx/pull/19908 –

+0

AWS Lambdaでこれを使用すると、.NET Core 1.0はカスタムルートCA証明書を使用して内部HTTPSに接続できない原因を修正しました。 – QuickNull

+0

'HttpClient'の' factory pattern'は何ですか? – Kiquenet

関連する問題