3

誰かがこの問題について私を助けてくれることを願っています。証明書を使用する以外に、WCF サービスでメッセージ レベルのセキュリティを有効にする方法を探しています。問題は、VPN を介して、それぞれが独自のドメイン コントローラーを持ち、ドメインが相互に信頼していない複数のサイトに接続するクライアントでアプリケーションが使用されることです。私は証明書にまったく慣れていませんが、多くの人がそれが進むべき道だと言っていますが、この環境で機能するかどうかわかりませんか?

助けを乞う :) よろしく Andries

4

3 に答える 3

11

実際、証明書は本当に行く方法です!証明書を使用することを強くお勧めします!それほど難しいことではありません。実際、これはあなたの問題です:「ドメインはお互いを信頼していません」。証明書を使用すると、相互に信頼するドメインを実現できます。これを行う方法のステップバイステップの説明は次のとおりです

。1)クライアントで証明書を作成する必要があります。これを行うには、[スタート]メニュー->[ファイル名を指定して実行]->[cmd]と入力し、Enterキーを押します。コンソールウィンドウで次のように入力します 。makecert.exeMakeCert -pe -ss My -sr LocalMachine -a sha1 -sky exchange -n CN = ClientCertificateName(change 「ClientCertificateName」と任意の名前)

2)サーバーで同じことを行い、証明書名を変更します。

3)手順1)および2)を実行した後、クライアントとサーバーの両方に自己署名証明書がインストールされます。次に、これらの証明書をエクスポートし、サーバーのTrustedPeopleフォルダーにクライアントの証明書をインポートし、クライアントのTrustedPeopleフォルダーにサーバーの証明書をインポートする必要があります。これを行うには->スタートメニュー->実行->「mmc」と入力してEnterキー

を押します4)証明書の保存場所を開くには、[ファイル]-> [スナップインの追加と削除]->新しいウィンドウで[証明書](左側)を選択します[追加]->[OK]をクリック->[コンピューターアカウント]を選択->[次へ]->[完了]->[OK]をクリックします
その後、証明書コンソールが開きます。証明書ノード(左側)を展開し、[個人/証明書]ノードに移動します。ここに、前の手順で作成したばかりの証明書があります。証明書を右クリックして、秘密鍵を含めてエクスポートします。エクスポートした証明書をファイルに保存します。次に、このファイルを他のマシンにコピーして、「Trusted People/Certificates」ノードの下にインポートします。

5)他のマシンについても手順4)を繰り返します。最終的な目標は、クライアントの証明書をホストのマシンにインポートすることです。その逆も同様
です。証明書を設定したら、サービスにそれらを使用するように指示する必要があります。これを行うには、アプリのweb.config(app.config)ファイルを使用するか、コードを記述します。

<security mode="Message">
    <message clientCredentialType="Certificate" />
</security>

クライアントとサーバーの両方の構成ファイルにセキュリティノードを追加した後、バインディングに次の動作を追加する必要があります。

    <behaviors >
    <endpointBehaviors>
        <behavior name="your_binding_behavior">
            <clientCredentials>
                <clientCertificate findValue="[The name of the client certificate here]"
                                   storeLocation="LocalMachine"
                                   storeName="My"
                                   x509FindType="FindBySubjectName"/>
                <serviceCertificate>
                    <defaultCertificate findValue="[The name of the server certificate here]"
                                        storeLocation="LocalMachine"
                                        storeName="TrustedPeople"
                                        x509FindType="FindBySubjectName"/>
                    <authentication certificateValidationMode="PeerOrChainTrust"/>
                </serviceCertificate>
            </clientCredentials>
        </behavior>
    </endpointBehaviors>
</behaviors>


以上です!あなたは行ってもいいです!これについての詳細は、この記事を読むことができます。そして、ここにさらに詳細なものがあります。

HTH

于 2009-01-29T13:01:25.137 に答える
0

また、証明書ベースのメッセージ レベル セキュリティが最善の方法だと思います。メッセージ レベル セキュリティと同様に、クライアントとサーバーはメッセージを暗号化する必要があります。http://msdn.microsoft.com/en-us/library/ms731172.aspx - または、MixedModesecurity を試すこともできます - ここにいくつかの優れたガイダンスがあります - http://blogs.msdn.com/govindr/archive/tags/WCF/default.aspx

http://blogs.msdn.com/jmeier/archive/2008/03/27/patterns-and-practices-wcf-security-guidance-now-available.aspx およびhttp://www.codeplex.com/WCFSecurity は、優れたガイダンスのための他のリソース。

于 2009-01-29T15:14:19.050 に答える