1

証明書を使用してメッセージ セキュリティを実装した WCF サービスがあります。しかし、クライアント アプリケーションから WCF サービスに接続しようとすると、次のエラーが発生します。

呼び出し元がサービスによって認証されませんでした。

私の構成設定は次のとおりです。

サービス設定:

ServiceHost host = new ServiceHost(typeof(HostService));
NetTcpBinding tcpBinding = new NetTcpBinding(SecurityMode.Message);
tcpBinding.Security.Message.ClientCredentialType = MessageCredentialType.Certificate;
host.AddServiceEndpoint(typeof(IHostService), tcpBinding, "net.tcp://192.168.39.28:8000/HostService");
host.Credentials.ServiceCertificate.SetCertificate(StoreLocation.LocalMachine, StoreName.My, X509FindType.FindBySubjectName, "server_cert");

クライアント設定:

NetTcpBinding tcpBinding = new NetTcpBinding(SecurityMode.Message);
tcpBinding.Security.Message.ClientCredentialType = MessageCredentialType.Certificate;
DuplexChannelFactory<IHostService> serviceFactory = new DuplexChannelFactory<IHostService>(new InstanceContext(MainWindow), tcpBinding, "net.tcp://192.168.39.28:8000/HostService");
serviceFactory.Credentials.ClientCertificate.SetCertificate(StoreLocation.LocalMachine, StoreName.My, X509FindType.FindBySubjectName, "client_cert");
serviceFactory.CreateChannel();

ここで、makecert コマンドを使用して server_cert および client_cert 証明書を作成しました。私が見逃したものを教えてください。

4

1 に答える 1

0

証明書関連の問題をデバッグするのは大変な作業です。wireshark を使用することを強くお勧めします。あなたの場合、クライアント側が証明書を送信していない可能性があります。クライアント証明書が別の証明書によって署名されている場合は、それをクライアントとサーバーの両方の信頼できるルートに配置してください。

于 2012-05-31T19:44:18.923 に答える