2011-04-10 3 views
2

인증서를 기반으로 양방향 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) 서버 측에서 요청과 관련된 클라이언트 인증서를 얻은 후 인증서의 유효성을 검사하려면 어떻게해야합니까? 서버에 동일한 클라이언트 인증서를 설치할 수 있다고 가정합니다.

저는 보안 지식에 익숙하지 않습니다. 누구든지 질문에 도움을 주거나 유용한 문서를 가르쳐 주시면 정말 감사하겠습니다.

답변

1

답변은 클라이언트 인증서 발급 방법에 따라 다릅니다. 어제는 procedure of validation in another question에 대해 설명했습니다. 이 절차는 매우 복잡하지만 클라이언트 인증서 발급 방법에 따라 간단하게 만들 수 있습니다.

방문자가 서버에 로그인하기 위해 인증서를 구매하지 않아도된다고 생각합니다. 즉, 클라이언트 인증서를 직접 발급 받아야합니다. 이러한 인증서를 발행하면 데이터베이스에 인증서를 넣을 수 있으며 클라이언트가 연결되면 clientCert가 데이터베이스에 있는지 확인하십시오.

인증서 자체 외에 사용자가 알 수 있도록 DB에 해지 정보를 보관하려는 경우 해당 인증서가 더 이상 유효하지 않은 경우 해당 인증서가 어떻게되었는지 알려줍니다.

인증서 생성 절차는 상당히 복잡한 주제입니다. 계속 진행하기 전에 PKI에 관한 책을 읽는 것이 좋습니다. 여기에 위대한 책은 내가 추천 할 것 같습니다 답변

  1. Rsa Security's Official Guide to Cryptography
  2. PKI: Implementing & Managing E-Security
+0

감사합니다. 예, 고객에게 인증서를 발급합니다. 유효성 검사 부분에 대해 좀 더 설명해 주시겠습니까? 클라이언트 인증서가 서버의 cert 저장소에 이미 설치되어 있다고 가정 할 때 요청의 인증서를 로컬 저장소의 인증서와 어떻게 비교할 수 있습니까? 지문을 비교해서 ... 안돼? – gigimei

+0

@gigimei 로컬 저장소에 클라이언트 인증서를 설치해야하는지는 모르지만 다른 방법이 있어야합니다. 그 이유는 상점에서 수천장의 인증서를 읽는 것이 상당히 시간이 걸리기 때문입니다. 유효성 검사 자체에 관해서는 확실히 인증서의 서명을 검사하여 무결성을 검증해야합니다. 그런 다음 "지문"을 비교할 수 있습니다. –

관련 문제