8

WCF サービスのクライアントの証明書の失効を無効にするにはどうすればよいですか? クライアント プロキシは wsdl.exe によって生成され、SoapHttpClientProtocol を継承します。

4

2 に答える 2

9

あなたが探していると思いますServicePointManager.ServerCertificateValidationCallback

http://msdn.microsoft.com/en-gb/library/system.net.servicepointmanager.servercertificatevalidationcallback.aspx

RemoteCertificateValidationCallbackデリゲートを取る:

http://msdn.microsoft.com/en-gb/library/system.net.security.remotecertificatevalidationcallback.aspx

私は以前に失効した証明書を扱ったことはありません (期限切れの SSL などの他の問題を処理する手があります) が、次のようなことをするだけだと思います:

class Program
{
    static void Main(string[] args)
    {
        ServicePointManager.ServerCertificateValidationCallback +=
            new RemoteCertificateValidationCallback(ValidateCertificate);

        // Do WCF calls...
    }

    public static bool ValidateCertificate(object sender, X509Certificate cert, 
                              X509Chain chain, SslPolicyErrors sslPolicyErrors)
    {
        if(sslPolicyErrors == SslPolicyErrors.RemoteCertificateChainErrors)
        {
            foreach(X509ChainStatus chainStatus in chain.ChainStatus)
            {
                if(chainStatus.Status == X509ChainStatusFlags.Revoked)
                {
                    return true;
                }
            }
        }
        
        /* 
         WARNING!
     
         You should perform other cert validation checks here and not blindly 
         override your cert validation by returning true.

         Otherwise the secure channel between your client and service
         may not be secure.

        */

        return false;
    }
}
于 2008-10-15T09:57:59.087 に答える
1

アプリケーションの構成ファイルで、証明書の検証と失効のオプションを設定できます。

http://www.request-response.com/blog/PermaLink,guid,e9bb929b-d0b4-4626-b302-1d2715fc344a.aspx

于 2008-10-15T14:23:21.123 に答える