CSR 디코더
인증기관(CA)이 TLS 인증서에 서명하기 전에, 인증서에 넣을 주체 정보와 공개 키, 그리고 해당 비공개 키를 보유하고 있음을 증명하는 서명이 담긴 base64 데이터 블록인 인증서 서명 요청(CSR)을 제출합니다. 이 디코더는 PEM 형식의 CSR을 받아 주체의 각 필드와 공개 키 매개변수를 표시하므로, CA에 제출하기 전에 공통 이름, 조직, 키 크기를 확인할 수 있습니다.
CSR 디코딩 방법
-
1
CSR 붙여넣기
`-----BEGIN CERTIFICATE REQUEST-----`와 `-----END CERTIFICATE REQUEST-----` 마커를 포함하세요. 공백은 허용됩니다.
-
2
디코더 실행
요청이 구문 분석되고 주체의 각 필드와 공개 키가 읽힙니다.
-
3
출력 확인
공통 이름, 조직 같은 주체 필드와 키 알고리즘 및 크기를 확인하세요.
-
4
결과에 따라 조치
주체나 키가 잘못된 것 같으면 CA에 제출하기 전에 CSR을 다시 생성하세요.
디코더가 표시하는 내용
CSR은 세 개의 상위 구성 요소로 이루어진 ASN.1 구조(PKCS #10)입니다. 디코더는 여기서 두 가지를 읽습니다:
- 주체(subject): 요청된 식별 이름(Distinguished Name) 필드로, 보통 국가(C), 조직(O), 조직 단위(OU), 지역(L), 주(ST), 공통 이름(CN)입니다.
- 공개 키: 알고리즘(RSA, EC, DSA)과 비트 단위 키 크기입니다.
CSR 안의 서명은 제출자가 해당 사설 키를 보유하고 있음을 CA에 증명하는 역할을 합니다. 이 디코더는 서명을 표시하지 않으며, 검증은 CA가 요청을 처리할 때 수행합니다.
출력 예시
일반적인 도메인 인증서 요청의 경우 출력은 다음과 같습니다:
Subject: commonName=www.example.com, organizationName=Example Inc., countryName=US
Key bits: 2048
Key type: RSA
주체의 정확한 속성 이름은 요청 생성 방식에 따라 다릅니다.
확인용 필드
- 공통 이름(CN): 주요 호스트 이름이어야 합니다. 현대 브라우저는 CN를 무시하고 오직 SAN만을 확인하지만, 많은 인증기관(CA)은 여전히 유효한 CN을 요구합니다.
- 주체 대체 이름(SAN): 인증서가 보호할 모든 호스트 이름과 와일드카드를 나열합니다. 브라우저는 CN이 아닌 SAN을 기준으로 매칭합니다.
- 국가(C): 전체 이름이 아닌 2자리 ISO 코드(US, GB, DE). 공인 기관(CA)은 잘못된 코드를 거부합니다.
- 키 길이: RSA 2048은 최소 요구 길이이며, 보안 수준을 높이려면 3072 또는 4096을 사용할 수 있습니다. ECDSA P-256는 우수한 현대적 대안으로서 더 작은 인증서를 생성합니다.
- 서명 알고리즘: SHA-256 이상을 사용해야 합니다. SHA-1은 이미 오래전에 사용이 중단되었으며, 사용하지 않도록 권장됩니다.
주체 대체 이름(SAN)에 대하여
디코더는 요청의 주체를 표시하지만 SAN 확장은 표시하지 않습니다. 브라우저는 CN이 아닌 SAN을 기준으로 인증서를 매칭하므로, 인증서에 추가 호스트 이름이 필요하면 요청 생성 시 포함하세요. 예:
openssl req -new -newkey rsa:2048 -nodes -keyout example.key -out example.csr -addext "subjectAltName=DNS:example.com,DNS:www.example.com"
디코더가 CSR을 구문 분석하지 못하는 경우
가장 흔한 원인은 잘렸거나 손상된 PEM 블록입니다:
- 텍스트가 잘린 경우: 두 마커를 포함한 전체 블록을 다시 붙여넣으세요.
- 줄 바꿈이 삽입된 경우: 생성된 그대로의 블록을 붙여넣으세요.
- 내용이 다른 경우: 실수로 공개 키, 인증서 또는 사설 키를 붙여넣으면 CSR로 구문 분석되지 않습니다.
일치하는 키 생성
CSR은 항상 사설 키와 함께 생성됩니다. 일반적인 명령어는 다음과 같습니다:
openssl req -new -newkey rsa:2048 -nodes -keyout example.key -out example.csr
또는 ECDSA의 경우:
openssl req -new -newkey ec:<(openssl ecparam -name prime256v1) -nodes -keyout example.key -out example.csr
개인 키를 철저히 보호해야 합니다. 개인 키가 유출될 경우 인증서는 반드시 취소되어야 합니다.
자주 묻는 질문
CSR에는 공개 정보(공개 키, 대상, SAN)와 서명만 포함되므로 CA와 공유하거나 디코더에 붙여넣는 데 있어 안전합니다. 비밀로 유지해야 할 것은 일치하는 사설 키입니다.
아니요. 이 디코더는 BEGIN/END CERTIFICATE REQUEST 마커가 있는 텍스트 PEM 형식을 대상으로 합니다. 이진 DER 요청을 사용하려면 먼저 PEM으로 변환하세요. 예: openssl req -in request.der -inform DER -out request.pem.
아니요. 대부분의 공용 인증기관(Let’s Encrypt, DigiCert, Sectigo)은 도메인 검증 인증서의 경우 CN 및 SAN만을 요구하며, O, OU, L, ST, C는 무시합니다. 조직 검증 인증서와 확장 검증 인증서는 이러한 필드들을 별도로 확인합니다.
대부분은 붙여넣은 텍스트가 잘렸거나 줄 바꿈이 삽입되었거나, CSR 대신 키나 인증서를 붙여넣었기 때문입니다. 두 마커 사이의 전체 블록을 다시 붙여넣으세요.
관련 도구
ASCII 표 참조
NUL, LF, DEL 같은 제어 문자를 포함해 모든 문자에 대한 10진수, 16진수, 8진수, 2진수, HTML 숫자 문자 참조를 담은 0부터 127까지의 전체 ASCII 표.
키보드 단축키 참고표
macOS, Windows, Linux에서 VS Code, Chrome, GNU Readline을 쓰는 Bash의 문서화된 기본 단축키를 검색합니다.
HTML 문자 참조
HTML 엔티티의 검색 가능한 목록, 각 엔티티의 이름 및 숫자 코드, 그리고 특수 문자 및 기호에 대한 1클릭 복사 기능을 제공합니다.
보색 찾기
어떤 입력에 대해서도 보색을 찾습니다. HSL 반대 색, 분할 보색 쌍, 그리고 접근성 있는 조합 제안을 반환합니다.
랜덤 영어 글자 생성기
A-Z 영어 글자를 무작위로 생성합니다. 개수와 대문자, 소문자, 혼합 대소문자를 선택해 게임, 과제, 수업 활동에 활용하세요.
랜덤 색상 팔레트 생성기
2~15개의 색상으로 랜덤 팔레트를 만들고, 비비드, 파스텔, muted, dark 스타일을 선택한 뒤 HEX 코드나 CSS 변수를 복사하세요.