2014-07-21 1 views
0

Windows 서비스 및 콘솔 호스트에서 호스팅되는 wcf 서비스가 있습니다. 일부 보안상의 이유로 인증서를 사용하고 있습니다.콘솔 호스트 및 Windows 서비스 호스트의 인증서 문제

인증서가 클라이언트 시스템에 올바르게 설치되었습니다. 콘솔 호스트 (테스트 용)와 Windows 서비스 호스트를 모두 사용합니다. 내 콘솔 호스트를 시작하면 모든 것이 잘되고 내 서비스가 작동합니다.

하지만 Windows 서비스를 사용할 때. 내 서비스를 시작하려고 할 때 오류가 발생하고 서비스가 실행되지 않습니다. 그 오류는 이미 내가 고쳐 놨던 것이다. 그러나 아무 이유없이 동일한 오류가 발생하기 시작했습니다.

오류 메시지 :

System.ArgumentException: It is likely that certificate 'CN=CertificateName' may not have a private key that is capable of key exchange or the process may not have access rights for the private key. Please see inner exception for detail. ---> System.Security.Cryptography.CryptographicException: Keyset does not exist 

것은 그것이 Windows 서비스와 함께 작동하지 않는 그것,이 인증서는 콘솔 호스트 응용 프로그램에서 잘 작동한다는 것입니다 그러나.

Windows 서비스를 통해이 인증서를 사용하려면 어떻게해야합니까?

+0

제목을 수정했습니다. "[제목에"태그 "가 포함되어 있어야합니까?] (http://meta.stackexchange.com/questions/19190/)"합의가 "아니오, 그렇지 않아야합니다"로 표시되어야합니다. –

+0

감사합니다. Notede @ JohnSaunders –

답변

1

관심을 가져 주신 모든 분들께 감사드립니다.

이 문제에 대한 해결책을 찾을 수있었습니다. 서비스 설치 프로그램에서 로그온 계정에 대한 네트워크 서비스를 선택했습니다. 그래서, 필자가해야 할 일은 내 인증서에 적절한 권한을 부여하는 것이었고 나의 경우 네트워크 서비스 계정이었습니다.

당신은 아래의 단계를 통해 올바른 권한을 할당 할 수 있습니다

열기 MMC는 -> 프로그램 추가/스냅인 제거 -> 인증서 -> 추가 -> 내 경우 로컬 컴퓨터에서 -> 폴더 인증서가 어디 -> 오른쪽 인증서 -> 모든 작업 -> 개인 키 관리 -> 및 나머지 권한 할당 단계를 클릭하십시오.

편집 : X509Certificate2 클래스를 사용하여 인증서를 저장소로 가져 오는 경우 알아 두어야합니다. 상황이 그런 경우 귀하의 Windows 서비스가 네트워크 서비스가이 플래그

X509KeyStorageFlags.MachineKeySet

인증서를 허용하도록 설정해야 함을 기억로 로그온 개인 네트워크 서비스 사용자를 통해 액세스 키를 누릅니다.

도움이 되었기 바랍니다.