하나의 ServiceHost 내의 다른 끝점에서 BasicHttpBinding과 NetTcpBinding을 모두 사용하는 WCF 서비스가 있습니다.자체 서명 된 인증서로 전송 보안을 사용하는 BasicHttpBinding
서버 :
var ServiceHost host = new ServiceHost(blah blah);
host.Credentials.ServiceCertificate.Certificate = GetCertificate(); //load a certificate from file
host.Credentials.ClientCertificate.Authentication.CertificateValidationMode = X509CertificateValidationMode.None;
var httpBinding = new BasicHttpBinding();
httpBinding.Security.Mode = BasicHttpSecurityMode.Transport;
httpBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate;
클라이언트 : NetTcp 모두 내가 사실은 BasicHttpBinding의 사용을 만들기 위해 노력하고 잘 전까지이었다, 그래서 내가 할, 파일에서로드되는 자체 서명 된 인증서를 사용
을ChannelFactory.Credentials.ServiceCertificate.Authentication.CertificateValidationMode = X509CertificateValidationMode.None;
var cer = GetCertificate();
ChannelFactory.Credentials.ClientCertificate.Certificate = cer;
var httpBinding = new BasicHttpBinding();
httpBinding.Security.Mode = BasicHttpSecurityMode.Transport;
httpBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate;
//accept any cert
System.Net.ServicePointManager.ServerCertificateValidationCallback =
((sender, certificate, chain, sslPolicyErrors) => true);
그러나 커넥트, 나는
는 예외이 오류 왔을 때 - 오류가동안 발생했습니다HTTP 요청을 https://localhost/MyService으로 변경하십시오. 이 은 서버 인증서가 HTTPS 경우에 HTTP.SYS와 제대로 구성되어 있지 않기 때문일 수 있습니다. 또한 클라이언트와 서버 간의 보안 바인딩 의 불일치로 인해 발생할 수 있습니다.
인증서가 설치되어 있지 않고 net tcp 바인딩에서 제대로 작동 했으므로 뭔가 작게 놓쳤을 것 같습니까?
내가 아는 한 가지는 net.tcp가 이중 채널이며 기본 http가 심플 (simplex)이지만 설정에 차이가 있습니까? 예를 들어 net.tcp의 양쪽 끝에서 인증서를로드해야했는데 기본 http가 어떻게됩니까? HTTPS에 대한 사전
브라우저에서 https URL을 탐색 해 보셨습니까? WCF 도움말 페이지가 표시됩니까? – Chandermani
아니요, 내 인증서가 제대로 설정되지 않았지만 어디에서 찾을 수 없습니다 :( – Yuan
비 IIS 호스팅을 사용하는 경우 http://www.codeproject.com/KB/WCF/WCFSSL.aspx를 확인하십시오. 인증서를 구성하지 않았을 수 있습니다. – Chandermani