인증서 서명 요청

Certificate signing request

PKI(Public Key Infrastructure) 시스템에서 인증서 서명 요청서(CSR 또는 인증 요청서)는 디지털 ID 인증을 신청하기 위해 신청자가 공공인프라등록 기관으로 보내는 메시지다.일반적으로 인증서를 발급해야 하는 공용 키를 포함하고, 정보(예: 도메인 이름)와 무결성 보호(예: 디지털 서명)를 식별한다.CSR의 가장 일반적인 형식은 PKCS #10 사양이며, 다른 형식은 일부 웹 브라우저에서 생성된 서명된 공개 키와 챌린지 SPKAC 형식이다.

절차

CSR을 생성하기 전에 신청자는 먼저을 생성하여 개인 키의 비밀을 유지한다.CSR에는 신청자의 개인 키를 사용하여 서명해야 하는 신청자를 식별하는 정보(X.509 인증서의 경우 고유명 등)가 수록되어 있다.CSR에는 신청자가 선택한 공개키도 수록되어 있다.CSR에는 인증기관에서 요구하는 다른 자격증이나 신원증명이 첨부될 수 있으며, 인증기관에서는 신청인에게 연락하여 추가 정보를 얻을 수 있다.

CSR에 필요한 일반적인 정보(표본 X.509 인증서에서 추출한 샘플 열).고유명사(DN)에 대한 대안이 있는 경우가 많으므로 선호하는 값이 나열된다.

DN[1] 정보 설명 샘플
CN 공용 이름 보호하려는 전체 도메인 이름 *.wikipedia.org
O 조직 이름 일반적으로 회사 또는 법인의 법적 이름이며 Ltd, Inc. 또는 Corporation과 같은 접미사를 포함해야 한다. 위키미디어 재단, 주식회사
OU 조직 단위 내부조직부서/부서명 IT
L 지역성 읍·면·동 이름 등 샌프란시스코
ST 도, 지역, 군 또는 주.이것은 축약되어서는 안 된다(예: 웨스트 서섹스, 노르망디, 뉴저지 주). 캘리포니아
C 나라 조직이 위치한 국가의 2글자 ISO 코드 미국
EMAIL 이메일 주소 일반적으로 인증 관리자 또는 IT 부서의 조직 연락처

요청이 성공하면 인증기관에서 인증기관의 개인 키를 이용해 디지털 서명된 신원확인서를 다시 보내준다.

구조

인증요청은 인증요청 정보, 서명 알고리즘 식별자, 인증요청 정보에 대한 디지털 서명 등 3가지 주요 부분으로 구성된다.첫 번째 부분은 공개키를 포함한 중요한 정보를 포함하고 있다.요청자의 서명은 기업이 다른 사람의 공용 키에 대한 위조 인증서를 요청하는 것을 방지한다.[2]따라서 CSR의 일부를 생산하기 위해서는 프라이빗 키가 필요하지만, CSR의 일부는 아니다.[3]

개인 ID 인증서와 서명 인증서에 대한 CSR은 사업자 ID의 경우 ID 보유자의 이메일 주소나 조직의 이름을 가지고 있어야 한다.

첫 번째 파트인 ASN.1 타입 CertificationRequestInfo는 버전 번호(모든 알려진 버전에 대해 0, 규격 1.0, 1.5 및 1.7), 주체 이름, 공개 키(알고리즘 식별자 + 비트 문자열) 및 인증 주제에 대한 추가 정보를 제공하는 속성 모음으로 구성되어 있다.속성에는 필요한 인증서 확장자, 재구성을 제한하기 위한 [2]챌린지-암호 및 인증서 주제에 대한 추가 정보(로컬 또는 미래 유형 포함)가 포함될 수 있다.

PKCS#10 표준X.509와 함께 사용하기 위해 CSR을 인코딩하기 위한 이진 형식을 정의한다.그것은 ASN.1로 표현된다.다음은 OpenSSL을 사용하여 ASN.1 구조를 검사하는 방법의 예:

openssl asn1parse -i -in your_properties

CSR은 Base64로 인코딩된 PKCS#10으로 나타낼 수 있다. 그 예는 다음과 같다.

----BEGIN 인증서 요청--- MIICzDCCAbQCAQAwgyYxCzAjBGNvBayTAkVomQ0wCwYDVQIDARub25lMQ0wCwYD VQQHDARub25lmriweAYDVQQDAlXaWtpcGCKAWExDTALBGNvBAsMBG5vbmUxGDAW BgNvBAMMDyoud2lraXBlZZLlhLm9yZzEcMboGCSqSIb3DQEJARYNbm9uZUBub25l LmNvbTCCASIWDQYJKoZIhvcNAQEBQADgGEPADCCAQoCgEBAMP/U8RlcCD6E8AL PT8LLUR9ygyg.PCaSmIEC8zXGJung3ykElXFRz/Jc/bu0hxCxi2YDz5IjxBBOBB/ kieG83HsSmZTR+drZIQ6vOsr/ucvpnB9z4XzKuabNGZ5ZiTSQ9L7Mx8FzvUTq5y /ArIuM+FBuno/IV8zvwae/VRa8i0QjFXT9vBBP35aeatdnJ2ds50yKCsHHcjvtr 9/8zPvqqmhl2XFS3Qdqlsprzbgksom67OobJGjaV+fNNQ0o/rzP//Pl3i7vvaEG 7Fff8tQhEwR9nJUR1T6Z7ln7S6Cor23YozgWVKEJ/dSr6LAopb+cZ88FzW5NszU6i 57HA7ECAWEAAAMA0GCSQGSIb3DQEBBAUAA4IBAQBn8OCVOIx+n0AS6WbMemYDR SspR9xOwOwYfamB+2Bpmt82R01zJ/kaqzUtZjaGvAaz5lUwoMdaO0X7I5Xfl sllMFDaYoGD4Rru4s8gz2qG/QHWA8uPXJVAJ6X0olbIdLTEqtksnBj4Zr1AJCNY /YcG4ouLJ140o26MhwBPOCRPPjAgdYMH60BYFnc4/DILxMvqR9xqK1s98d6Ob/+ 3WHFK+S7BRWrJQXCM8VeAexXuk9lHQ+FgFD0eSYGz0kyP26Qa2pLTwumjt+nBPl rfJxaLHWTQ/1988G0H35ED0f9Md5fzoKi5evU1wG5WRxdUPyt3QUXdQ69i0C+7 ----끝 인증서 요청---- 

위의 인증서 서명 요청의 ASN.1 구조(openssl로 구문 분석)는 다음과 같이 나타나며, 여기서 첫 번째 번호는 현재 유형의 바이트 오프셋, d=깊이, hl=header 길이, l=내용 길이:

0:d=0  hl=4 l= 716 cons: SEQUENCE               4:d=1  hl=4 l= 436 cons:  SEQUENCE               8:d=2  hl=2 l=   1 prim:   INTEGER           :00    11:d=2  hl=3 l= 134 cons:   SEQUENCE              14:d=3  hl=2 l=  11 cons:    SET                   16:d=4  hl=2 l=   9 cons:     SEQUENCE              18:d=5  hl=2 l=   3 prim:      OBJECT:countryName    23:d=5  hl=2 l=   2 prim:      PRINTABLESTRING   :EN    27:d=3  hl=2 l=  13 cons:    SET                   29:d=4  hl=2 l=  11 cons:     SEQUENCE              31:d=5  hl=2 l=   3 prim:      OBJECT            :stateOrProvinceName    36:d=5  hl=2 l=   4 prim:      UTF8STRING        :none    42:d=3  hl=2 l=  13 cons:    SET44:d=4  hl=2 l=  11 cons:     SEQUENCE              46:d=5  hl=2 l=   3 prim:      OBJECT            :localityName    51:d=5  hl=2 l=   4 prim:      UTF8STRING        :none    57:d=3  hl=2 l=  18 cons:    SET                   59:d=4  hl=2 l=  16 cons:     SEQUENCE              61:d=5  hl=2 l=   3 prim:      OBJECT            :organizationName    66:d=5  hl=2 l=   9 prim:      UTF8STRING        :Wikipedia    77:d=3  hl=2 l=  13 cons:    SET                   79:d=4  hl=2 l=  11 cons:     SEQUENCE              81:d=5  hl=2 l=   3 prim:      OBJECT            :organizationalUnitName    86:d=5  hl=2 l=   4 prim:      UTF8STRING        :none    92:d=3  hl=2 l=  24 cons:    SET94:d=4  hl=2 l=  22 cons:     SEQUENCE              96:d=5  hl=2 l=   3 prim:      OBJECT            :commonName   101:d=5  hl=2 l=  15 prim:      UTF8STRING        :*.wikipedia.org   118:d=3  hl=2 l=  28 cons:    SET                  120:d=4  hl=2 l=  26 cons:     SEQUENCE             122:d=5  hl=2 l=   9 prim:      OBJECT            :e-메일 주소 133:d=5 hl=2 l=13 prim:IA5STRING         :none@none.com   148:d=2  hl=4 l= 290 cons:   SEQUENCE             152:d=3  hl=2 l=  13 cons:    SEQUENCE             154:d=4  hl=2 l=   9 prim:     OBJECT            :rsaEncryption   165:d=4  hl=2 l=   0 prim:     NULL                 167:d=3  hl=4 l= 271 prim:    BIT STRING           442:d=2  hl=2 l=   0 cons:   cont [ 0 ]444:d=1 hl=2 l=13 conces:SRUE 446:d=2 hl=2 l=9 prim:OBLE :md5WithRSAncryption 457:d=2 hl=2 l=0 prim:NULL 459:d=1 hl=4 l=4=257 prim:BIT RINGLE.

이것은 base64 인코딩을 명령어에 공급하여 생성되었다.openssl asn1parse -in your_request -inform PEM -i여기서 PEM은 Privacy-Enhanced Mail을 의미하며 base64의 ASN.1 고유 인코딩 규칙의 인코딩을 설명한다.

참고 항목

참조

  1. ^ "Distinguished Names". WebSphere MQ Security Concepts and mechanisms. IBM. 2019-11-05. Retrieved 2020-01-16.
  2. ^ a b RFC 2986 - PKCS #10: 인증 요청 구문 사양 버전 1.7
  3. ^ Nikos Mavrogiannopoulos (2020-01-09). "PKCS #10 certificate requests". GnuTLS. Retrieved 2020-01-16.