2012-02-08 5 views
16

메시지 보안이 인 WCF 서비스가 있습니다.입니다.메시지 보안이 포함 된 WCF 라우팅

로드 균형 조정을위한 라우팅 서비스를 설정하려고합니다. 그것이 작동하지 않는 몇 가지 이유를 들어

, 나는 예외를 볼 수 includeExceptionDetailInFaults을 설정 한, 그래서 클라이언트에 나는 참조 :

클라이언트 인증서가 제공되지 않습니다. ClientCredentials에 클라이언트 인증서 을 지정하십시오.

인증서가 라우터 -> 서비스에서 전달되지 않은 것으로 보입니다.

현재 클라이언트/라우터/서비스가 동일한 컴퓨터에 있으므로 모든 인증서가 있지만 다른 컴퓨터에 배포하면 라우터에서 개인 키를 사용해야합니까?

또한 라우터와 서비스 (보안 오프로드) 사이에 보안되지 않은 연결을 설정하려면 어떻게 호출자의 ID를 제공 할 수 있습니까?

편집 : 모든 클라이언트/라우터 (서버 & 클라이언트 모두)에 대한 은/서버 보안은 동일하게 구성 :

  <security mode="Message"> 
       <message clientCredentialType="Certificate" negotiateServiceCredential="false" 
        algorithmSuite="Default" establishSecurityContext="false" /> 
      </security> 
+6

3 개의 구성 파일을 표시 할 수 있습니까? –

답변

1

클라이언트 인증서가 제공되지 않습니다. ClientCredentials에 클라이언트 인증서를 지정하십시오.

서비스 인증서가 호스트 도메인 이름과 일치하지 않는 경우이 오류가 발생했습니다.

이 문제가 여전히 표시되는 경우 구성 항목 중 일부를 게시 할 수 있습니까?

+0

인증서가 호스트 이름과 일치하지 않습니다. 나는 지금 'localhost'또는 IP를 사용한다. 하지만 여전히 작동해야합니다. 알려진 버그입니까? – Maxim

+0

[WinHttpCertCfg.exe] (http://msdn.microsoft.com/en-us/library/windows/desktop/aa384088(v=vs.85) .aspx)를 사용하여 인증서가 올바르게 설치되었는지 확인할 수 있습니다 열쇠를 사용하는 데 필요한 권한. –

+0

이것이 도움이되지 않는다고 생각합니다. 관리자 권한으로 응용 프로그램을 실행하므로 충분한 권한이 있어야합니다. – Maxim

0

1) 먼저 클라이언트 측에서 인증서로 인증서를 설정하려고합니다.

ChannelFactory<IService1> factory = 
      new ChannelFactory<IService1>("Service1_Endpoint"); 
factory.Credentials.ServiceCertificate.SetDefaultCertificate(
      System.Security.Cryptography.X509Certificates.StoreLocation.CurrentUser, 
      System.Security.Cryptography.X509Certificates.StoreName.My, 
      System.Security.Cryptography.X509Certificates.X509FindType.FindBySubjectName, 
      "<SeriveCerificateName>"); 

인증서에 문제가있는 경우 응용 프로그램 시작시 즉시 예외가 발생합니다.

2) 예외가없는 경우 양쪽에서 서비스 인증서의 지문을 확인하십시오.