2012-10-03 5 views
1

클라이언트 인증을 사용하여 https를 통해 WCF 서비스를 사용하고 있습니다.WCF 클라이언트에서 사용자 지정 SslStream 사용

var webHttpBinding = new WebHttpBinding(WebHttpSecurityMode.Transport); 
webHttpBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate; 
var webChannelFactory = new WebChannelFactory<MyService>(webHttpBinding, serviceUri); 
webChannelFactory.Credentials.ClientCertificate.Certificate = clientCertificate; 
webChannelFactory.Credentials.ServiceCertificate.Authentication.CertificateValidationMode = X509CertificateValidationMode.None; 

var service = webChannelFactory.CreateChannel(); 

service.SomeMethod(); 

아래 내가 (A PFX 파일에서) 일부 클라이언트 인증서를 사용할 때마다이 가진 문제는 .NET SslStream가 서명자를 기대하고 루트 인증서는 Windows 인증서 저장소에 있어야처럼 코드가 보인다. 인증서가 없으면 TLS 핸드 셰이크 중에 클라이언트 인증서를 보내지 않아 인증 실패가 발생합니다.

이것은 SslStream의 동작이며 변경할 수 없다고 가정합니다. 위의 WCF 클라이언트 코드에서 사용자 정의 SslStream을 사용하는 방법이 있다면 사실입니까? 예를 들어 OpenSSL.NET은이 제한이없는 SslStream 클래스를 제공합니다.

미리 도움을 주셔서 감사합니다.

답변

0

클라이언트 인증서X509Certificate? 내 테스트에서 유형 인증서 X509Certificate2을 만들면 인증서를 Windows 저장소에 설치하지 않고 인증서를 사용할 수 있습니다.

+0

** clientCertificate **는 X509Certificate2 유형입니다. 개체를 생성하는 동안 X509Certificate2 생성자에 pfx 파일 이름을 전달하고 있습니다. – Sivachandran

관련 문제