클라이언트 인증서 생성

클라이언트 인증서 생성

제3자 인증 기관으로부터 SSL 인증서를 받았습니다. 파일 입니다 .cer. 인증서가 IIS7에 설치되어 제대로 작동합니다.

인증서에는 의도된 목적이 서버 인증, 클라이언트 인증으로 표시됩니다.

사이트에는 클라이언트 인증서를 통한 인증이 필요합니다. 이었다~ 아니다클라이언트 인증서 매핑을 사용하지만 단순히 클라이언트 인증서를 인증 수단으로 사용합니다. 클라이언트 인증서가 있으면 인증됩니다.

  • 클라이언트 인증서를 어떻게 만들 수 있나요?
  • CA가 다른 CSR을 포함하여 이 작업을 수행해야 합니까?
  • 다른 도구를 사용하여 직접 수행할 수 있는 작업입니까? (OpenSSL 또는 기타)
  • 클라이언트 인증서에는 어떤 형식이 필요합니까?

답변1

IIS(또는 대부분의 HTTPD)의 클라이언트 인증서 인증은 다소 복잡합니다. 사용자를 인증서에 매핑해야 합니다. 인증서 자체는 서버가 신뢰하는 CA에서 발급할 수 있습니다. 당신은 할 수AD CS 인스턴스 설정인증서를 발급하거나 로컬 사본을 사용하려면OpenSSL원하는 경우 인증서를 만들 수 있습니다.

에 관한 기사가 있습니다.IIS.net묘사하는클라이언트 인증서 매핑; 이를 활성화하고 프로그래밍 방식으로 인증서를 사용자와 연결하는 방법에 대한 정보가 포함되어 있습니다.

편집하다:
OpenSSL을 사용하여 클라이언트 인증서를 발급하는 매우 짧은 버전입니다.

  1. openssl genrsa -des3 -out my_ca.key 4096
  2. openssl req -new -key my_ca.key -out my_ca.csr
  3. openssl x509 -req -days 365 -in my_ca.csr -signkey my_ca.key -out my_ca.crt
    이제 CA 인증서와 키가 생겼습니다.
  4. 생성할 각 클라이언트 인증서에 대해 인증서 서명 요청이 필요합니다. 원하는 경우 모든 사용자에게 동일한 인증서를 사용할 수 있지만 이는 특별히 좋은 생각은 아니며 다른 형태의 인증(예: 비밀번호)도 반드시 요구해야 합니다. 클라이언트가 CSR을 직접 생성하거나 openssl을 다시 사용할 수 있습니다(각 CSR에는 먼저 개인 키가 필요합니다).
    openssl genrsa -des3 -out client1.key 1024
    openssl req -new -key client1.key -out client1.csr
  5. openssl.cnf 파일을 편집하고 관련 CA 부분을 입력하세요. 그들은:

    [ ca ]
    default_ca      = CA_default            # The default ca section
    
    [ CA_default ]
    dir            = ./                    # top dir
    database       = $dir/my_ca.index      # index file.
    new_certs_dir  = $dir/newcerts         # new certs dir
    certificate    = $dir/my_ca.crt        # The CA cert
    serial         = $dir/my_ca.srl        # serial no file
    private_key    = $dir/my_ca.key        # CA private key
    RANDFILE       = $dir/rand             # random number file
    default_days   = 365                   # how long to certify for
    default_crl_days= 30                   # how long before next CRL
    default_md     = md5                   # md to use
    policy         = policy_any            # default policy
    email_in_dn    = no                    # Don't add the email into cert DN
    name_opt       = ca_default            # Subject name display option
    cert_opt       = ca_default            # Certificate display option
    copy_extensions = none                 # Don't copy extensions from request
    
    [ policy_any ]
    countryName            = supplied
    stateOrProvinceName    = optional
    organizationName       = optional
    organizationalUnitName = optional
    commonName             = supplied
    emailAddress           = optional
    
  6. CA 인증서를 사용하여 키에 서명
    openssl ca -in client1.csr -out client1.crt

  7. 클라이언트용 키와 CSR을 생성한 경우 이를 내보내야 합니다. 클라이언트가 가져올 수 있도록 인증서 쌍을 PKCS12 파일로 내보냅니다.
    openssl pkcs12 -export -in client1.crt -inkey client1.key -out client1.p12
  8. #7을 완료한 경우 생성한 PKCS12 파일을 클라이언트에 보냅니다. 그렇지 않으면 #6의 인증서를 보내세요.

이는 CSR이 지정한 모든 유형의 인증서를 단순히 부여하기 때문에 서명된 인증서를 발급하는 좋지 않은 방법입니다. 당신이 하고 있는 일에 주의를 기울이십시오. 많은 인증서를 발급하려면 보다 안전한 설정에 시간을 투자해야 합니다.

관련 정보