16

Message Security Authenticationを使用した WCF サービスがあります。

ロード バランシング用のルーティング サービスを設定したいと考えています。

何らかの理由で機能しないため、 includeExceptionDetailInFaults を有効にして例外を表示したので、クライアントで次のように表示されます。

クライアント証明書は提供されません。ClientCredentials にクライアント証明書を指定します。

ルーター→サービスから証明書が転送されていないようです。

現在、クライアント/ルーター/サービスは同じマシン上にあるため、すべての証明書を持っていますが、それらを別のマシンに展開する場合、ルーターは秘密鍵を持っている必要がありますか?

さらに、ルーターとサービスの間にセキュリティで保護されていない接続を確立する (セキュリティをオフロードする) 場合、発信者の ID をどのように提供できますか?

編集:すべてのクライアント/ルーター(サーバーとクライアントの両方)/サーバーに対して、同じように構成されたセキュリティ:

            <security mode="Message">
                <message clientCredentialType="Certificate" negotiateServiceCredential="false"
                    algorithmSuite="Default" establishSecurityContext="false" />
            </security>
4

4 に答える 4

2

Microsoft がこのシナリオをサポートしていないという記事が数多くありますが、それは事実です。

この記事では、独自のカスタム ソリューションを記述して、すべてのクライアント/ルーター/サービスにセキュリティを提供する方法について説明します。

于 2014-11-05T15:17:23.880 に答える
1

クライアント証明書は提供されません。ClientCredentials にクライアント証明書を指定します。

サービス証明書がホスト ドメイン名と一致しない場合に、このエラーが表示されます。

この問題が引き続き発生する場合は、構成エントリの一部を投稿していただけますか?

于 2012-03-13T22:39:14.430 に答える
0

1)最初に、コードでクライアント側に証明書を設定してみてください。

ChannelFactory<IService1> factory = 
             new ChannelFactory<IService1>("Service1_Endpoint");
factory.Credentials.ServiceCertificate.SetDefaultCertificate(
             System.Security.Cryptography.X509Certificates.StoreLocation.CurrentUser,
             System.Security.Cryptography.X509Certificates.StoreName.My,
             System.Security.Cryptography.X509Certificates.X509FindType.FindBySubjectName,
             "<SeriveCerificateName>");

証明書に本当に問題がある場合は、アプリケーションの起動時にすぐに例外が発生します。

2) 例外がない場合は、両側のサービス証明書の拇印を確認します。

于 2012-04-08T10:11:25.050 に答える
-1

このブログ投稿では、Microsoft がこのシナリオをサポートしていないことを説明しています。

http://blogs.microsoft.co.il/blogs/applisec/archive/2011/12/12/wcf-routing-and-message-security.aspx

于 2012-04-15T08:52:01.703 に答える