CSR을 확인하는 방법
-----BEGIN CERTIFICATE REQUEST-----부터 짝이 맞는 END 줄까지 요청을 붙여넣거나.csr/.req파일을 상자에 놓으세요.- 카드에서 주체, 주체 대체 이름 (SAN), 공개 키를 확인하세요.
- 원한다면 CSR 아래에 개인 키를 붙여넣으세요. 개인 키 카드에는 키 유형과 크기, 그리고 CSR과 비교할 수 있는 SPKI SHA-256 핀만 표시됩니다.
- CA 포털이 다른 형식의 요청을 원하면 PEM 복사나 .der 다운로드를 사용하세요.
인증서 서명 요청에 들어 있는 것
CSR(PKCS#10)은 작습니다. 주체 이름, 공개 키, 선택적인 속성, 그리고 이 모두에 대한 서명이 전부입니다. 디코더는 다음과 같이 나열합니다.
| 필드 | 참고 |
|---|---|
| 주체 | C=US, O=Example Corp, CN=app.example.com. 도메인 검증(DV) 인증서에서는 CA가 검증한 것만 남기므로 조직 필드는 보통 빠집니다. |
| 버전 | PKCS#10에서는 항상 v1입니다. |
| 공개 키 | RSA 2048이나 EC P-256 같은 유형과 크기. 이 부분은 그대로 인증서에 들어갑니다. |
| 서명 알고리즘 | 보통 sha256WithRSAEncryption이나 ecdsa-with-SHA256입니다. |
| 주체 대체 이름 (SAN), 키 사용, 확장 키 사용 | 요청하는 확장. CA는 이를 받아들이거나 고치거나 뺄 수 있습니다. |
| 속성 | 그 밖의 PKCS#9 속성. challengePassword는 설정되었다고만 표시하고 값은 숨깁니다. |
| SPKI SHA-256 핀 | 공개 키의 해시. 발급된 인증서도 같은 핀을 갖습니다. |
제출하기 전에 잡아야 할 실수
- 주체 대체 이름 없음. 브라우저는 호스트 이름을 대조할 때 CN을 무시합니다. 공인 CA는 보통 CN을 SAN에 복사해 주지만 내부 CA는 그러지 않는 경우가 많고, 그러면 이름 불일치로 실패하는 인증서가 나옵니다.
- 빠진 이름.
www.example.com과example.com은 서로 다른 항목입니다. 와일드카드*.example.com은example.com자체를 포함하지 않습니다. - 너무 작은 키. 공개적으로 신뢰받는 CA는 최소 2048비트 RSA를 요구합니다. RSA 1024 CSR은 거부됩니다.
- 잘못된 키. 다른 서버에서 만들었거나 오래된 키 파일로 만든 CSR은 서버에서 쓸 수 없는 인증서가 됩니다. 핀을 비교하세요.
- 주체의 오타. 지금 고치면 간단하지만, OV나 EV 검증이 끝난 뒤에는 비용이 큽니다.
도구는 CSR을 읽지만 자체 서명은 확인하지 않습니다. 잘렸거나 수정된 요청도 디코딩될 수 있으므로 의심스러우면 openssl req -verify를 실행하세요.
OpenSSL로 CSR 만들고 검증하기
새 RSA 키와 호스트 이름 두 개가 든 CSR을 한 번에 만드는 방법입니다(-addext는 OpenSSL 1.1.1 이상).
openssl req -new -newkey rsa:2048 -nodes -keyout app.key -out app.csr \
-subj "/CN=app.example.com" \
-addext "subjectAltName=DNS:app.example.com,DNS:www.app.example.com"
서명까지 포함해 확인하고 키와 짝이 맞는지 확인합니다.
openssl req -in app.csr -noout -text -verify
diff <(openssl req -in app.csr -noout -pubkey) <(openssl pkey -in app.key -pubout) && echo "key matches"
요청이 온전하면 -verify 줄이 Certificate request self-signature verify OK를 출력합니다. 더 많은 명령줄 예시는 OpenSSL 페이지에 있습니다.
Base64로 본 CSR의 모양
CSR은 인증서처럼 PEM으로 감싼 DER입니다. RSA-2048 요청은 DER로 대략 650–700바이트이므로 Base64가 MIIC로 시작하고, EC P-256 요청은 300바이트에 가까워 MIIB로 시작합니다. 받은 것이 MIIC로 시작하는데 헤더가 CERTIFICATE라면 인증서입니다. 대신 인증서 디코더에 붙여넣으세요. 같은 위젯이 둘 다 처리하며 무엇을 찾았는지 알려 줍니다.
자주 묻는 질문
CSR에 어떤 도메인이 들어 있는지 어떻게 확인하나요?
CSR을 붙여넣고 주체 대체 이름 (SAN) 항목을 보세요. 인증서가 포함할 호스트 이름은 이 목록이 정하며, 브라우저는 주체의 CN을 무시합니다. 이 줄이 없다면 요청에 SAN 확장이 없는 것입니다.
CSR이 내 개인 키와 짝인지 어떻게 알 수 있나요?
CSR과 개인 키를 함께 붙여넣으세요. 두 카드의 SPKI SHA-256 핀이 같으면 같은 키 쌍입니다. OpenSSL에서는 openssl req -in app.csr -noout -pubkey와 openssl pkey -in app.key -pubout의 결과를 비교하세요.
CSR에 개인 키가 들어 있나요?
아니요. CSR에는 공개 키, 요청하는 이름, 그리고 개인 키를 갖고 있음을 증명하려고 개인 키로 만든 서명이 들어 있습니다. CA에 보내도 안전하며, 개인 키는 서버에 그대로 두어야 합니다.
헤더의 NEW CERTIFICATE REQUEST는 무엇인가요?
Java keytool과 일부 Windows 도구가 쓰는 예전 레이블입니다. 내용은 같은 PKCS#10 구조이며, 디코더는 다른 CSR과 똑같이 읽습니다.