2009-04-15 5 views
2


하나의 VS 솔루션에는 클라이언트 (wpf app)와 wcf 서비스 lib라는 두 개의 프로젝트가 있습니다.
저는 메시지 보안과 사용자 정의 AspNetMembershipPrivider를 사용하여 사용자 이름을 확인하고 패스합니다.
저는 Windows 보안을 사용하지 않기 때문에 서버에서 인증서를 사용하여 보안 채널을 설정해야했습니다.
- 내 로컬 IIS 관리자를 열고 likemy dev machine이라는 자체 서명 된 인증서를 추가했습니다.
-이 인증서가 개인 인증서
아래의 인증서 스냅인에 표시되었는지 확인 - 해당 인증서를 가리 키도록 wcf .config를 구성했습니다.
- 내 클라이언트 응용 프로그램을 VS에서 시작했습니다. (VS도 내 wcf lib 용 wcfhost 응용 프로그램을 시작했습니다.)
wcfhost가 정상적으로 작동하고 재부팅 할 때까지 서비스가 제대로 작동했습니다.wcf 인증서 재부팅 후 Keyset이 ​​존재하지 않습니다.

 
The certificate 'CN=xxx' must have a private key that is capable 
of key exchange. The process must have access rights for the private 
key. ---> 
System.Security.Cryptography.CryptographicException: Keyset does not exist 

만 건 helpes 내 인증서를 다시 무엇, 다시 재부팅 때까지 재부팅 wcfhost는 불평을 언급 한 후. 위에서 언급 한 것처럼 내 서비스는 내 사용자 계정 (로컬 관리자)에서 실행되므로 내 c : \ Users \ xxx \ AppData \ Roaming \ Microsoft \ Crypto \ RSA \ 파일에 대한 사용 권한이 문제라고 생각하지 않습니다.

iis 관리자를 사용하여 인증되지 않은 인증서를 만드는 이유는 내가 갖고있는 공유 된 계정에 대해 모든 작업이 진행되기를 원하기 때문입니다. (자체 서명 생성을위한 호스팅 패널에 옵션이 있습니다. 인증서).

아무도 도와 드릴 수 있습니까? 감사합니다

답변

1

나는이 문제를 해결했다.
저는 UAC를 사용하여 개발 상자에 Vista를 실행하고 있습니다. 일주일 정도 전에 비주얼 스튜디오를 시작한 방법을 바꾸었고 분명히 "관리자 권한으로 실행"옵션없이 시작된 VS에서 작업하고 있다는 사실을 알지 못했습니다. WcfHost가 VS에 의해 막힌 이유도 제한된 권리를 가지고 있습니다. 내 잘못, 나는 거의 VS를 다시 시작하지 않는다. 예를 들어 unreal3가 simultaniosly로 점심을 먹은 상태로 1 ~ 2 주간 VS를 실행하는 것은 일반적인 관행이다.

누구나 내가 메시지 보안이있는 공유 호스팅 (IIS7)의 인증서에 대한 액세스 권한에 문제가 있다고 말할 수 있습니까? 또는 운송 보안을 대상으로해야합니다.

+0

아, 한 번에 내 집 PC (비스타)에서 "관리자 권한으로 실행"을 실행했습니다. 프로세스가 실행중인 서비스 계정이 인증서에 대한 액세스 권한을 가지고있는 한 IIS7 및 메시지 보안에 어려움이있을 것이라고는 생각하지 않습니다. 어느 쪽이든, 당신은 전송 보안 인증서와 같은 문제가있을거야. CodePlex - http://www.codeplex.com/WCFSecurityGuide에는 필요한 모든 것을 다루는 데 도움이되는 다양한 시나리오에 대한 유용한 정보와 체크리스트가 있습니다. – Tanner

2

인증서는 내 경험으로는 꽤 어렵습니다. (다른 사람들이 그것을 통해 산책을했음을 확신합니다.) 사용할 수와 IIS6.0 resource kit의 일환으로 -

  • 사용 SelfSSL.exe : 당신은 거의 다처럼 당신이 작업 한 것으로보고, 그렇게 내 권장 방법은 주위에 다른 방법으로 인증서 표시를 설정 중심으로 돌고 보인다 다음 명령 : SelfSSL.exe/T/N : CN = localhost/V : 999/Q (localhost를 servername으로 바꿀 수 있음). 이렇게하면 인증서가 만들어지고 999 일 동안 유효한 IIS에 설치됩니다. winHTTPCertCfg.exe -g -c LOCAL_MACHINE 나의 -s localhost를 -a SERVICEACCOUNT (replaceing localhost를 따라 SERVICEACCOUNT) 서비스 계정을 제공하기 위해 실행중인 \ : 다음 명령을 Microsoft에서 사용할 수 -
  • 사용 winHttpCertCfg 그것은 certs 개인 키에 대한 액세스 권한하에 있습니다.

행운을 빕니다!

+0

iis 키트에 대한 조언을 주셔서 감사합니다. 인증서를 배포하는 좋은 예가 있습니다 (IISCertDeploy.vbs). –

1

관리자 권한으로 실행하면 작동하는 인증서에 대한 보호가 압도됩니다. 그러나 해결 방법은 서버가 실행중인 사용자 이름에 인증서를 부여하는 것입니다. 스냅인에서 인증서를 마우스 오른쪽 단추로 클릭하고 모든 작업 -> 개인 키 관리 -> 그룹 또는 사용자 이름 추가를 선택합니다. IIS의 경우 로컬 컴퓨터로 위치를 변경하고 사용자 이름은 "IIS AppPool/xxxxx"여야합니다. 여기서 xxxxx는 인증서를 사용하려는 응용 프로그램이 실행되는 IIS 응용 프로그램 풀의 이름입니다. 너가 그것을 맞으면 '체크'단추는 너에게 이렇게 말할 것이다. 나는 또한 IIS Express에서 그것을 통해 더듬었지만, 내가 한 일을 분명히 기억하지 못한다! IIS Express를 실행하고 작업 관리자에서 찾은 다음 세부 정보 열을 사용하여 사용자 이름이 무엇인지 확인해야했습니다. 희망이 도움이됩니다. 나를 위해 일했다.

관련 문제