89

有効なSSL証明書がまだない新しいSharePointをセットアップしています。Lists Webサービスを呼び出して、セットアップに関するメタデータを取得したいと思います。ただし、これを実行しようとすると、例外が発生します。

基になる接続が閉じられました:SSL/TLSのセキュリティで保護されたチャネルの信頼関係を確立できませんでした。

ネストされた例外には、次のエラーメッセージが含まれています。

検証手順に従って、リモート証明書が無効です。

一時的な証明書を使用しているので、これは正しいです。

私の質問は、.Net Webサービスクライアント(SoapHttpClientProtocol)にこれらのエラーを無視するように指示するにはどうすればよいですか?

4

8 に答える 8

114

または、認証エラーを無視するコールバック デリゲートを登録することもできます。

...
ServicePointManager.ServerCertificateValidationCallback = MyCertHandler;
...

static bool MyCertHandler(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors error)
{
// Ignore errors
return true;
}
于 2009-01-09T11:57:08.533 に答える
81

Jason Sの答えのように:

ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };

これを Main に入れて、そのコード行を呼び出す前 に、 my app.configand test ifを調べます。(ConfigurationManager.AppSettings["IgnoreSSLCertificates"] == "True")

于 2009-05-14T21:10:31.920 に答える
26

私はこのように解決しました:

そのエラーの原因となる SSL Web サービスを呼び出す直前に、次を呼び出します。

using System.Net;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;

/// <summary>
/// solution for exception
/// System.Net.WebException: 
/// The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel. ---> System.Security.Authentication.AuthenticationException: The remote certificate is invalid according to the validation procedure.
/// </summary>
public static void BypassCertificateError()
{
    ServicePointManager.ServerCertificateValidationCallback +=

        delegate(
            Object sender1,
            X509Certificate certificate,
            X509Chain chain,
            SslPolicyErrors sslPolicyErrors)
        {
            return true;
        };
}
于 2010-08-06T12:23:07.240 に答える
18

この問題に直面したときに使用したアプローチは、問題のコンピューターの信頼できる機関のリストに一時証明書の署名者を追加することでした。

私は通常、CACERTで作成された証明書を使用してテストを行い、それらを信頼できる機関のリストに追加することはうまくいきました。

このようにすることで、アプリケーションにカスタムコードを追加する必要がなくなり、アプリケーションがデプロイされたときに何が起こるかを適切にシミュレートできます。そのため、これはプログラムでチェックをオフにするための優れたソリューションだと思います。

于 2008-09-20T20:51:42.263 に答える
12

DownloadString を使用して同じエラーが発生していました。このページの提案により、以下のように機能させることができました

System.Net.WebClient client = new System.Net.WebClient();            
ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
string sHttpResonse = client.DownloadString(sUrl);
于 2014-02-14T14:47:29.860 に答える
3
ServicePointManager.ServerCertificateValidationCallback +=
            (mender, certificate, chain, sslPolicyErrors) => true;

invald ssl をバイパスします。これを Web サービス コンストラクターに書き込みます。

于 2015-02-02T08:47:16.937 に答える
1

初心者の場合は、部分的なサービス クラスを別の cs ファイルで拡張し、「imanabidi」が提供するコードを追加して統合することができます。

于 2013-12-16T18:12:40.623 に答える