2011-10-04 2 views
0

우리는 외부 웹 서비스를 호출하는 wcf 클라이언트를 가지고 있습니다. 이 서비스는 SSL을 통해 액세스됩니다. 인증서는 자체 서명 된 인증서가 아닙니다. Verisign에서 발행합니다.WCF 클라이언트는 IE로 URL에 액세스 한 후에 만 ​​작동합니다.

클라이언트는 IIS 6에서 호스팅되며 응용 프로그램 풀의 ID는 도메인 서비스 사용자입니다.

우리는 우리의 클라이언트가 우리는 다음과 같은 잘 알려진 예외 얻을 원격 서비스에 액세스 할 때마다 "authority-와 SSL/TLS 보안 채널에 대한 트러스트 관계를 설정할 수 없습니다 .."그것은 밝혀졌다

을, 같은 서버에서 IE를 사용하여 URL에 액세스하면 WCF 클라이언트가 예상대로 작동하고 인증서가 승인됩니다!

내 결론은 IE에서 액세스 한 URL이 서버를 수정하여 WCF 클라이언트가 이후에 유효성 검사를 수행 할 수 있다는 것입니다. WCF 클라이언트가 누락되었습니다. 설명 된대로 상황을 고려

(내가 하나가 ServerCertificateValidationCallback에서 진정한 반환하여 인증서 확인을 회피 할 수 있음을 알고 있어요, 그러나 이것은 생산을위한 옵션이 없습니다.)

+0

ServerCertificateValidationCallback을 사용하지 않는 특별한 이유가 있습니까? – alykhalid

+0

IE에서 서비스 URL을 탐색 할 때 인증서 검증 오류가 발생합니까? – RoccoC5

답변

1

, 당신의 IIS 호스팅 클라이언트가 의심 Verisign 루트 인증서를로드 할 수 없습니다. 그리고 IIS 기반 클라이언트가 인증서 저장소에 액세스하려고 시도 할 때 항상 내게 불분명합니다. 도메인 서비스 계정 사용자 일 수도 있고 ASP.NET 사용자 일 수도 있으며 다른 시스템 정의 계정 일 수도 있습니다. 이로 인해 종종 오류가 발생합니다.

IE를 사용하여 서비스를 탐색 할 때 사용자 (자신의 자격 증명)가 Verisign 루트 인증서를로드하고 트러스트 관계를 올바르게 해결할 수 있다는 것에 의심의 여지가 없습니다.

하십시오

  1. 확인
  2. 는 클라이언트의 당신의 app.config가 올바른 루트 인증서를 참조 가지고 신뢰할 수있는 루트 기관이 로컬 컴퓨터 계정으로 저장에서의 베리사인 루트 인증서 올바른 상점에서로드하십시오.
  3. ProcessMonitor를 실행하여 어떤 사용자가 저장소에서 인증서를로드하려고하는지 확인할 수 있습니다.
관련 문제