문제

C# 응용 프로그램에서 httplistener 클래스를 사용하여 SSL을 통해 미니 웹 서버 컨텐츠를 제공합니다. 이를 위해서는 HTTPCFG 도구를 사용해야합니다. 공개 및 개인 키 쌍이있는 .pfx 파일이 있습니다. MMC를 사용 하여이 키 쌍을 수동으로 로컬 머신 스토어로 가져 오면 모든 것이 잘 작동합니다. 그러나 x509store 클래스를 사용 하여이 키 쌍을 프로그래밍 방식으로 가져 오면 미니 웹 서버에 연결할 수 없습니다. 두 가지 방법 모두에서 Cert는 LocalMachine의 My Store로 가져오고 있습니다. 이상하게도, 프로그래밍 방식으로 가져 오면 MMC에서 인증서를 볼 수 있으며 볼 때 UI는이 인증서에 개인 키도 사용할 수 있음을 나타냅니다.

조금 더 깊이 파고 들어 키 쌍을 수동으로 가져 오면 새 파일이 나타나는 것을 볼 수 있습니다. C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys, 그러나 프로그래밍 방식으로 가져 오면 나타나지 않습니다. 관련 메모에서 수동으로 가져온 인증서를 삭제하면 이전에 언급 된 디렉토리에서 해당 개인 키 파일을 제거하지 않습니다.

궁극적으로, 내 질문은 이것입니다. 프로그래밍 방식으로 인증서를 매장에 추가 할 때 개인 키는 어디에 저장되고 왜 Httplistener 클래스 (httpapi)에 액세스 할 수없는 이유는 무엇입니까?

이 질문은 약간 관련이 있지만 동일한 Windows 사용자로 수행되기 때문에 권한이 문제라고 생각하지 않습니다..NET에서 X.509 인증서의 개인 키 파일에 대한 읽기 권한을 설정하는 방법

도움이 되었습니까?

해결책

좋아, 나는 그것을 알아 냈다. 인증서 객체의 주요 스토리지 매개 변수와 관련이있었습니다. 이 문제를 해결하는 다른 사람을 위해 X509Certificate2 당신이 X509KeyStorageFlags.PersistKeySet 그리고 X509KeyStorageFlags.MachineKeySet 깃발. 이로 인해 개인 키가 기계 키 세트 위치에서 지속되도록 강요합니다. HttpApi (HttpListener 이걸 랩 랩).

다른 팁

이것은 2 웨이 SSL입니까? 그렇다면 컴퓨터에서 생성 된 SSL 인증서 요청 파일을 보내셨습니까? 이 인증서 요청 파일은 SSL을 작성하는 데 사용되며 함께 공개 개인 키 쌍을 형성합니다.

또한 웹 앱을 실행하는 데 사용되는 사용자 계정에 대한 인증 권한을 할당해 보셨습니까? Microsoft WSE 3.0 도구를 사용하여이를 수행 할 수 있습니다.

귀하의 질문에 대한 답이 아니라 여기 에서이 길을 따라가는 다른 사람들을 참조하십시오.

여기 HTTPCFG가 수행하는 작업을 수행 할 수있는 샘플 C# 코드를 제공하는 MS Chat에 대한 링크입니다. 따라서 배포시 도구가 필요하지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top