인증서를 기반으로 양방향 https 인증이 필요한 .net 프로젝트에서 작업 중입니다. 즉, 클라이언트가 자체 인증서와 요청을 연결해야하며 https 서버가 인증서를 인증 할 수 있어야합니다. 인증서에 기반한 클라이언트. 나는 거친 흐름을 파악하지만, 그것을 할 수있는 올바른 방법입니다 확실하지 : 클라이언트 측에인증서를 기반으로하는 https 상호 인증을 수행하는 올바른 방법
:
의 HttpWebRequest 요청 = (HttpWebRequest를)이 WebRequest.Create ("요청 URI"는);는 :
//는 CERT의 CertStore로부터 X509Certificate2 인스턴스 또는 인증서 파일
request.ClientCertificates.Add (CERT)이고; ; 서버 측
// REQ는 HttpListenerRequest 인스턴스
경우 (req.ClientCertificateError == 0)
{
X509Certificate2 clientCert = req.GetCli entCertificate;
// 유효성 검사 클라이언트 인증서
}
내 질문 은 다음과 같습니다
1)이 그것을 할 올바른 방법인가?
2) 서버 측에서 요청과 관련된 클라이언트 인증서를 얻은 후 인증서의 유효성을 검사하려면 어떻게해야합니까? 서버에 동일한 클라이언트 인증서를 설치할 수 있다고 가정합니다.
저는 보안 지식에 익숙하지 않습니다. 누구든지 질문에 도움을 주거나 유용한 문서를 가르쳐 주시면 정말 감사하겠습니다.
감사합니다. 예, 고객에게 인증서를 발급합니다. 유효성 검사 부분에 대해 좀 더 설명해 주시겠습니까? 클라이언트 인증서가 서버의 cert 저장소에 이미 설치되어 있다고 가정 할 때 요청의 인증서를 로컬 저장소의 인증서와 어떻게 비교할 수 있습니까? 지문을 비교해서 ... 안돼? – gigimei
@gigimei 로컬 저장소에 클라이언트 인증서를 설치해야하는지는 모르지만 다른 방법이 있어야합니다. 그 이유는 상점에서 수천장의 인증서를 읽는 것이 상당히 시간이 걸리기 때문입니다. 유효성 검사 자체에 관해서는 확실히 인증서의 서명을 검사하여 무결성을 검증해야합니다. 그런 다음 "지문"을 비교할 수 있습니다. –