2008-11-11 3 views
6

내 WCF 서비스는 클라이언트와 서비스간에 데이터 세트 (CSV 형식) 데이터를 전송하는 작업을 포함합니다. 이 데이터 세트는 데이터를 가로 채지 못하도록 암호화되어야합니다. 내가있는 wsHttpBinding를 사용하여 Web.config의에서 다음 설정을 사용하여 메시지를 암호화하기 위해 노력하고있어 :WCF - 메시지를 어떻게 암호화합니까?

<wsHttpBinding> 
    <binding name="wsHttp"> 
    <reliableSession enabled="true" /> 
    <security mode="Message"> 
     <message clientCredentialType="UserName" algorithmSuite="TripleDes" /> 
    </security> 
    </binding> 
</wsHttpBinding> 

나는 시도하고 완전히 때문에 읽을 수없는 내가 긴 오류 메시지 박스를 얻을 클라이언트 프록시를 (생성 화면 하단에서 사라집니다.). 오류 메시지는 "제공되지 않는 서비스 인증서"에 대해 언급합니다.

어떻게 메시지를 암호화합니까? 인증서가 필요합니까? 이 서비스는 다른 도메인의 인터넷을 통해 사용되므로 "사용자 이름"보안을 사용하는 것이 가장 좋은 옵션인지 궁금합니다 (?)

기본적으로 혼란 스러워요!

답변

4

예, 암호화 키를 안전하게 교환 할 수 있도록 인증서가 필요합니다. makecert.exe를 사용하여 테스트 서비스 인증 인증서를 만들 수 있습니다. 자세한 내용은 this entry in my blog을 참조하십시오.

또한 서비스가 실행되고있는 계정이 인증서의 개인 키 파일을 읽을 수 있는지 확인해야합니다. Windows Vista 이상인 경우 인증서 MMC 스냅인을 사용하여 해당 개인 키의 사용 권한을 제어 할 수 있지만 이전 버전의 Windows에서는 약간 어려워집니다. 필자는 WSE3과 함께 제공된 유틸리티를 사용 했었지만 다른 누군가가보다 직접적인 방법을 제안 할 수있었습니다. 서비스가 관리자로 실행되지 않는 한 이러한 권한을 조정해야 할 가능성이 큽니다.

업데이트 : 모든 좋은 점과 마찬가지로, 내 블로그가 끝났습니다. 나를 생각 나게하는 makerofthings7에게 감사드립니다. 당신이 서비스 인증 인증서가이 같은 것입니다 생성해야 할 makecert 명령 ...

makecert -sr LocalMachine -ss My -pe -n CN=subject-name -eku 1.3.6.1.5.5.7.3.1 -sky exchange 

은 ... 단순히 서비스에 대한 의미가있는 인증서 이름으로 주제 이름를 교체하십시오.

+0

링크가 더 이상 유효하지 않습니다. ... – LamonteCristo

+0

@ makerofthings7 감사합니다! 내 대답을 업데이트했습니다. – Martin

+0

링크를 변경 했으므로 archive.org에서 블로그의 실제 버전을 가리 킵니다. – svick

4

@ Martin이 맞습니다. 서버에 인증서가 필요합니다. This link에는 메시지 기반 보안을위한 통신 흐름에 대한 개요가 있으며 샘플 코드가 있습니다. This link에는 인증서 작업에 대한 개요가 있습니다.

인증 요구 사항에 대해서는 this link에서 다양한 옵션을 검토하십시오. WCF를 처음 접하는 분이라면 WCF 학습 : Michele Bustamante의 Hands-on Guide는 훌륭한 책이며 메시지 기반 보안을 다룹니다.

1

나는 아직도이 문제를 해결하려고 노력 중이다. 나는 그것을 가지고 있지만 xml에 서명하는 것. 여전히 IIS가 WinXP에서 실행중인 사용자를 찾으려면 시작> 내 컴퓨터> 관리> 서비스 및 응용 프로그램> 서비스> IIS Admin을 마우스 오른쪽 단추로 클릭 한 다음 로그온 탭에서 대개 로컬 시스템을 말합니다.

편집

OK, 이것은 내 문제를 해결하는 방법입니다. 나는 이것을 사용하여 인증서를 만들었습니다. article . 프로젝트가 C 폴더에 저장된 ASPWebSite 인 경우이 문제가 발생하지 않을 수 있습니다. 하지만 IIS에 HTTP 프로젝트로 저장하면 문제가 발생합니다.

수 주간 조사한 후 해결 방법은 그리 어렵지 않습니다.Microsoft는 귀하가 가장 최근에 다운로드 할 웹 서비스 향상이라고하는 항목이 있지만 최신 서비스 팩과 함께 두 번째 서비스를 사용하고 있습니다. 내가 설치했을 때 나는 모든 것을 가능하게했다.

인증서는 실제 파일에있을 수 있지만 인증서 관리 저장소에는 일반적으로 WSE 2.0의 도구 X509 인증서 도구를 사용합니다. 인증서를 찾을 때까지 다른 섹션에서 인증서를 찾으십시오. 그런 다음 열면 맨 아래에 개인 키보기가 표시되고 보안 탭에 LOCALHOST \ ASPNET을 추가하십시오. 그러면 웹 사이트에서 인증서를 읽을 수 있어야합니다.

간단히 말해서 공용 키와 개인 키를 만들 때 개인 키가 제대로 표시되지만 실제로는 파일 시스템에서 Timbuktu로 보내고 ASPNET 계정을 추가하려면 해당 키를 찾아야합니다 읽기 액세스 용. 나는 Vista보다 읽기가 훨씬 쉽지만 XP를 사용하고 있습니다.