2017-06-12 9 views
0

私は最近、サイトからリソースを取得しようとしているところで問題に遭遇しました。サイトは自己署名証明書に関連付けられています。 WebRequestを介してリソースをリクエストすると、次のエラーがスローされます。自己署名入り証明書を処理する最良の方法

Could not establish trust relationship for the SSL/TLS secure channel

私は解決策を探しました。私は証明書のチェックを完全に無効にしたくありません。要するに、私は説得力のある答えを見つけることができませんでした。自己署名証明書を処理する最善の方法を教えてください。

+0

このエラーは、基になるTCPクライアントがサーバーの信頼性を検証できなかったことを意味します。このエラーは、HttpWebRequestインスタンスにのみ強制的に設定されます。これには、証明書のプロビジョニングを含むさまざまな方法があります。たとえば、Peer Trustの検証を使用するために、自己署名証明書を個人ストアにロードします。 – Biscuits

+0

もう少し説明していただけますか? – Sasu

+0

一般的なシナリオでは、TLSを有効にすると、サーバーはセキュリティで保護された接続を確立する前にハンドシェイク処理中にクライアントに証明書を提示します。証明書により、クライアントは、クライアントが接続を受け入れて潜在的に機密情報をサーバーに送信する前に、サーバーが本物である(スプーフィングを防止する)ことを暗号で検証できます。クライアントのこのサーバー検証は、あなたの裁量でスキップすることができます(推奨されません)。 – Biscuits

答えて

0

まず、重要なことは、この例外により、サイト証明書の信頼を確認して、可能な偽のWebサーバーにアクセスできなくなっていることです。

自己署名証明書を信頼することができますが、あなたはそれがシステム信頼されたCAストアへのルートCAのインストールを持っています。

それはあなたが信頼できるCAストアに、ルートCAのインストールせずに、自己署名証明書によって署名されたサーバーを信頼することを主張、あなたはこれで何を信頼するチェック機構を強制することができます。

ServicePointManager.ServerCertificateValidationCallback = delegate { return true; }; 

または、より良いアプローチを

+0

私はASP .NET 4.0を使用しています。私はこれをすることができないと思う。 request.ServerCertificateValidationCallback = delegate {trueを返します。 }; – Sasu

関連する問題