TCP 서버의 SSLStream은 RemoteCertificatenotAvailable로 클라이언트 인증서를 유효성
-
03-07-2019 - |
문제
이 질문은 모두 해결에 관한 것입니다 SslPolicyError.RemoteCertificateNotAvailable
오류.
SSLStream과 다른 쪽 끝을 위해 TCP 서버를 개발했습니다.
서버를 다음과 같이 인증합니다.
sslStream.BeginAuthenticateAsServer
클라이언트를 다음과 같이 인증합니다.
sslStream.BeginAuthenticateAsClient
고객 인증서를로드하고 있습니다 Trusted Publishers - Local Machine
.
둘 다 같은 기계에서 실행 중입니다.
신뢰할 수있는 Publishers Store가 아닌 .cer 및 .pfx 파일에서 클라이언트 인증서를로드하려고 시도했습니다. 그러나 서버의 클라이언트 (원격) 인증서 유효성 검사기 콜백은 SslPolicyErrors
a RemoteCertificateNotAvailable
오류.
해결책
링크는 통과하지 못했지만 그 진술과 함께 발견 할 수있는 문제가 있습니다.
"신뢰할 수있는 게시자로부터 내 고객 인증서를로드했습니다."
클라이언트 인증서는 일반적으로 사용자 계정의 개인 상점에 거주합니다. 서버 인증서와 동일합니다 (그러나 "클라이언트 인증"대 "서버 인증"과 관련된 다른 의도 된 목적 OID가있을 수 있습니다). The Trusted Publishers Store에서 개인 키가있는 인증서를 보유하는 것은 이상합니다.
certmgr.msc에서 클라이언트 또는 서버 인증서를 두 번 클릭하면 "이 인증서에는 개인 키가있는"메시지가 하단에 표시됩니다.
그렇지 않은 경우 키 쌍의 절반 만 있습니다. 암호화 및 인증에는 개인 키가 필요합니다. 서버 인증은 서버 끝에 개인 키가 필요하며 클라이언트 인증서에는 클라이언트 엔드에서 개인 키가 필요합니다.