2011-11-12 10 views
0

マシンにホストされているセキュリティ保護されたWCFサービス(https:// MachineName:sslport/services)があります。同じサービスの異なるインスタンスが異なるマシンに配置されます。クライアントアプリケーションからは、同じエンドポイントアドレスでChannelFactory()を使用して、コードを介してこれらのサービスに接続することができます。しかし、マシン名をマシンのipaddressに置き換えて(https:// ipaddress:sslport/services)エンドポイントアドレスを使用してサービスにアクセスしようとすると、「cannotは信頼関係を確立できません」というエラーが表示されます。私はこれが信頼関係を確立することができなかったSSL証明書によって引き起こされるエラーであることを知っています。サービスがホストされているホストマシンのIPを使用してWCFサービスに接続する方法

これを行うには設定や方法がありますか?もし誰かがこれを知っていれば案内してください。

答えて

1

SSL証明書は名前に基づいています。つまり、SSL証明書の検証は、名前ではなくIPアドレスで試してみると失敗します。

これは設定が成功するように変更することができます - これは設定ではなく、約1〜5行のコードです...しかし、これは絶対にSSL証明書の目的を破ったので絶対に行かないことですすべてのSSL証明書(偽造、自己署名など)が罰金として受け入れられるため、最初の場所です。

もしあなたがこれをしたいと思うと言うなら、おそらくもっと良い選択肢があります。私は接続する直前に

...私は、デフォルトの認証をバイパスできるようにするには、次を使用し

0

、私はこのコールバックをフックアップ。

System.Net.ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(ValidateRemoteCertificate); 

続い内の 'ValidatRemoteCertificate'

private static bool ValidateRemoteCertificate(object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors policyErrors) 
    { 
     if (policyErrors == SslPolicyErrors.None) return true; 
     if (cert.Subject == "CN=whatever.address.com") return true; 
     return false; 
    } 

あなたが好きなようにあなたはできるだけ多くのアドレスを含めることができます。

希望すると便利です。

+0

これは決して生産で使用すべきではありません! – Yahia

+0

Yahia、私が上で示唆したコードは、 'whatever.address.com'という単一の名前を許可しています。私は彼がすべてのアドレスに対して「true」を返すことを示唆していません。証明書の状態にかかわらず、ドメインが有効であることが分かっている場合は、(何かが見つからない限り)それを受け入れることは間違いありません。 –

関連する問題