はい、メッセージセキュリティ(トランスポートセキュリティではなく)を使用する場合のみです。そのようなあなたのバインディング設定を定義します。その後、
<netTcpBinding>
<binding name="UserNameSecurity">
<security mode="Message">
<message clientCredentialType="UserName"/>
</security>
</binding>
</netTcpBinding>
と(サーバーおよびクライアント上の)あなたのエンドポイントでそのバインディング設定を参照:
<endpoint address="....."
binding="netTcpBinding"
bindingConfiguration="UserNameSecurity"
contract="IMyService" />
マルク・
UPDATE:
ああ、はい、サーバー側では、サービスを呼び出すクライアントに対してサービスを認証するための証明書が必要になります。また、メッセージを暗号化+署名するためにも使用されます。これはサーバ上のみです。クライアントは何もインストールする必要はありません。
構成:
<behaviors>
<serviceBehavior>
<behavior name="ServerInternet">
<serviceCredentials>
<serviceCertificate
findValue="MyServiceCertificate"
storeLocation="LocalMachine"
storeName="My"
x509FindType="FindBySubjectName" />
</serviceCredentials>
</behavior>
</serviceBehavior>
</behaviors>
<services>
<service name="MyServiceInternet"
behaviorConfiguration="ServerInternet">
....
</service>
</services>
は、あなたの設定で指定した「サブジェクト名」の下で、サーバーの「ローカルマシン」フォルダにサーバーの証明書をインストールしてください。
これは私が元々持っていたものです。しかし、サービス証明書を要求する例外が表示されます。「サービス証明書が提供されていません。ServiceCredentialsでサービス証明書を指定してください」 アイデアはありますか? –
Hmmm。それは私が疑ったものです。それを確認していただきありがとうございます。 –
このアプローチでは、本番環境で自己署名証明書を使用することに何らかの害がありますか?それがメッセージを暗号化するためにのみ使用されているが、アイデンティティを確認するためではない場合メッセージ暗号化のために自己署名証明書を使用しないのはいつですか? – Vitalik