CSR 생성기
TLS 인증서를 받으려면 인증 기관(CA)에 인증서 서명 요청(CSR)을 제출해야 합니다: 도메인, 공개 키, 그리고 그에 대응하는 개인 키를 보유하고 있다는 증명입니다. 이 생성기는 지정한 필드와 키 크기로 PEM 형식의 CSR과 RSA 개인 키를 브라우저에서 생성합니다. 개인 키는 페이지를 벗어나지 않지만, 서버에는 아무것도 저장되지 않으므로 탭을 닫기 전에 반드시 다운로드하세요.
CSR 생성 방법
-
1
common name(CN) 입력
인증서가 보호할 기본 호스트 이름, 예: `www.example.com`. `*.example.com` 같은 와일드카드도 허용됩니다.
-
2
조직 필드 입력(선택)
O(조직), OU, L(도시), ST(주), C(국가 코드)와 선택적 이메일 주소. 도메인 검증 인증서는 대부분 무시하지만 OV/EV 인증서는 필요로 합니다.
-
3
키 크기 선택
RSA 2048(기본값, 범용 호환) 또는 더 강력한 RSA 3072와 RSA 4096.
-
4
두 파일 모두 다운로드
`.csr`은 CA에 제출하고 `.key`는 서버에 보관합니다. 키를 안전하게 보관하세요: 잃어버리면 처음부터 다시 해야 합니다.
생성되는 것
두 개의 PEM 파일:
example.csr(공개, CA에 제출):
-----BEGIN CERTIFICATE REQUEST-----
MIIC...
-----END CERTIFICATE REQUEST-----
example.key(비공개, 서버에 보관):
-----BEGIN PRIVATE KEY-----
MIIE...
-----END PRIVATE KEY-----
CSR은 소유 증명으로 개인 키로 서명됩니다. CA가 인증서를 발급하면 인증서의 공개 키는 CSR의 키와 일치하고, 그 키는 서버의 개인 키와 일치합니다.
이 생성기는 입력한 common name만 포함하고 SAN(주체 대체 이름) 확장이 없는 CSR을 만듭니다. 인증서가 여러 호스트 이름을 커버해야 한다면 CA의 도구를 사용하세요: Let’s Encrypt 같은 ACME 클라이언트가 요청을 만들어 주고, 대부분의 CA 웹 양식은 제출 시 추가 이름을 덧붙여 줍니다.
인증서 유형별 필드 요구 사항
| 필드 | DV 인증서 필요? | OV/EV 인증서 필요? |
|---|---|---|
| common name(CN) | 예 | 예 |
| 조직(O) | 아니요 | 예, 확인됨 |
| 조직 단위(OU) | 선택 | 선택 |
| 지역(도시) | 선택 | 예, 확인됨 |
| 주/도 | 선택 | 예, 확인됨 |
| 국가(2자리) | 권장 | 예, 확인됨 |
| 이메일 주소 | 선택 | 선택 |
Let’s Encrypt와 대부분의 자동 DV 발급자는 common name만 확인합니다. OV/EV 인증서를 발급하는 기업용 CA는 조직 정보를 사업자 등록 정보와 대조해 확인합니다.
키 크기 선택
| 키 크기 | 장점 | 단점 |
|---|---|---|
| RSA 2048 | 범용 호환, 빠름 | 보안 여유가 작음 |
| RSA 3072 | 더 강력, 여전히 범용 | 생성과 핸드셰이크가 느림 |
| RSA 4096 | 가장 강력, 여전히 범용 | 가장 느리고 가장 큼 |
공개 웹 서버에는 RSA 2048이 안전한 기본값입니다. 더 큰 보안 여유를 원하고 느린 키 생성, 핸드셰이크, 더 큰 인증서를 받아들일 수 있다면 3072 또는 4096비트를 선택하세요.
CSR이 틀리기 쉬운 부분
- 인증서가 호스트 이름을 커버하지 않음: 인증서가 방문한 정확한 이름을 커버하지 않으면 브라우저에 “NET::ERR_CERT_COMMON_NAME_INVALID” 오류가 표시됩니다. common name은
www를 사용한다면 그것을 포함한 전체 호스트 이름과 일치해야 합니다. 이 생성기는 CN 하나만 담은 요청을 만들므로 추가 이름이 필요하면 CA의 도구를 사용하세요. - 와일드카드 제한: 와일드카드
*.example.com은 서브도메인 한 단계만 일치합니다.api.v2.example.com에는 일치하지 않습니다. - 에이펙스와 와일드카드는 다른 이름:
*.example.com은example.com자체를 커버하지 않습니다. 인증서에 둘을 별도의 이름으로 넣어야 합니다. - IP 주소: 대부분의 공개 CA는 더 이상 IP 주소용 인증서를 발급하지 않으므로 호스트 이름을 사용해야 합니다.
생성 후
- 개인 키를 안전하게 보관하세요. 권한 0600, 웹 서버 사용자 소유.
- CSR을 CA의 웹 양식이나 CLI 도구에 붙여넣으세요(ACME를 통한 Let’s Encrypt는 보통 자동으로 처리합니다).
- 서명된 인증서(및 중간 체인)를 받으세요.
- 인증서 체인과 개인 키를 모두 서버에 설치하세요.
- SSL 검사기로 확인하세요.
자주 묻는 질문
아니요. 키 생성은 전적으로 브라우저에서 이루어집니다. 페이지는 키를 서버에 저장하지 않습니다. 키 파일을 즉시 다운로드하세요. 탭을 닫으면 사라집니다.
대부분의 공개 웹사이트에는 RSA 2048이 안전한 범용 기본값이며 생성도 빠릅니다. 더 큰 보안 여유를 원하고 키 생성과 핸드셰이크가 느려져도 된다면 3072 또는 4096비트를 선택하세요.
네. common name에 *.example.com을 사용하세요. 와일드카드는 서브도메인 한 단계만 일치하며, 대부분의 DV 발급자는 와일드카드 인증서에 (HTTP가 아닌) DNS 검증을 요구한다는 점을 기억하세요.
CSR은 요청입니다. “이 호스트 이름들에 대해 이 공개 키에 서명해 주세요”라는 뜻입니다. 인증서는 서명 후 CA가 돌려주는 것입니다. CSR은 수명이 짧고 서버에 설치되지 않으며, 실제로 TLS를 제공하는 것은 인증서입니다.
관련 도구
Base85 인코더 및 디코더
PostScript와 PDF 파일 안에서 쓰는 Adobe Ascii85 방식으로 Base85를 인코딩하고 디코딩하세요. 이진 데이터에서는 Base64보다 더 작습니다.
Base64 파일 인코더
모든 파일(PDF, ZIP, 이미지, 실행 파일)을 Base64 텍스트로 인코딩해 JSON, 이메일, YAML, data URI에 삽입하세요. 브라우저에서 로컬로 실행되며 업로드가 없습니다.
A1Z26 암호 인코더
A1Z26 암호(A=1, B=2, ... Z=26)로 텍스트를 인코딩하거나 숫자열을 다시 글자로 디코딩합니다. 구분자도 사용자 지정할 수 있습니다.
Base32 인코더 및 디코더
RFC 4648 알파벳으로 Base32 문자열을 인코딩하고 디코딩하세요. TOTP 시크릿, 대소문자를 구분하지 않는 토큰, 사람이 입력하는 식별자에 유용합니다.
AES 암호화 / 복호화
OpenSSL의 AES cipher로 낮은 위험의 텍스트를 암호화하고 복호화합니다. passphrase는 SHA-256으로 해시되며 Base64 출력은 IV와 암호문을 담습니다.
카이사르 암호 인코더
카이사르 암호로 텍스트를 암호화하고 복호화하세요. 1-25 사이의 모든 이동값을 지원하고, 특수한 경우인 ROT13을 처리하며, 문장 부호와 대소문자를 그대로 유지합니다.