SSL 인증서 생성기
신원 정보
인증서
개인 키(비밀로 유지!)
자가 서명 인증서는 기본적으로 브라우저에서 신뢰되지 않습니다. 로컬 개발, 테스트 또는 사설 네트워크에서만 사용하세요.
로컬 개발이나 내부 테스트용 자체 서명 인증서를 브라우저에서 바로 생성하세요. RSA 키 크기(2048, 3072, 4096비트), Common Name, Subject Alternative Names, 유효 기간, 조직 기본 정보를 선택할 수 있습니다. 인증서와 개인 키는 브라우저에서 생성되며 당사 서버로 전송되지 않고, 둘 다 Nginx나 Apache에 바로 사용할 수 있는 PEM 파일로 내려받습니다.
인증서 생성 작동 방식
-
1
RSA 키 크기 선택
대부분의 테스트에는 2048비트로 충분합니다. 3072이나 4096은 속도를 희생해 더 큰 키를 제공합니다.
-
2
주체와 SAN 입력
Common Name과 함께 인증서가 포함해야 하는 모든 호스트 이름 또는 IP를 입력합니다(최신 브라우저는 CN을 무시하고 SAN을 사용합니다).
-
3
브라우저에서 생성
자체 서명 인증서가 생성되고 해당 개인 키로 서명됩니다. 모든 과정이 브라우저에서 로컬로 이루어집니다.
-
4
결과 다운로드
PEM으로 인코딩된 인증서(`cert.pem`)와 PEM 형식의 개인 키(`key.pem`)로, 설치할 준비가 되어 있습니다.
모든 것이 브라우저에서 이루어집니다
이 생성기는 전적으로 브라우저에서 동작합니다. RSA 키 쌍은 JavaScript 암호화 라이브러리로 로컬에서 만들어지고, 인증서는 사용자 기기에서 서명되며, 개인 키도 인증서도 당사 서버로 업로드되지 않습니다. 그래도 개인 키는 비밀로 다루세요. 그것을 가진 사람은 누구나 그 인증서를 사칭할 수 있습니다.
자체 서명이란 무엇인가
당신이 발급자이자 주체입니다. 인증서는 자신의 개인 키로 서명되므로 어떤 공개 인증 기관(CA)도 이를 보증하지 않습니다. 그래서 브라우저가 경고를 표시합니다. 테스트, 로컬 개발(localhost, dev.local), 그리고 신뢰해야 하는 클라이언트에 인증서를 배포할 수 있는 내부 서버에는 적합합니다.
공개 인터넷이 신뢰하는 인증서가 필요하다면 이 도구는 적절한 단계가 아닙니다. CA가 서명한 인증서(예: Let’s Encrypt 또는 유료 CA)가 필요하며, 이는 인증서 서명 요청(CSR)과 도메인 검증을 요구하는데, 이 브라우저 도구는 그것을 수행하지 않습니다.
인증서에 담기는 내용
| 필드 | 참고 |
|---|---|
| 주체 (CN, O, C) | Common Name, 조직, 국가 |
| Subject Alternative Names | 포함되는 각 도메인 또는 IP(매우 중요!) |
| 공개 키 | RSA, 생성된 개인 키에서 파생 |
| 발급자 | 자체 서명이므로 주체와 동일 |
| 유효 기간 | Not Before / Not After(지정한 유효 일수) |
| Key Usage | digitalSignature, keyEncipherment |
| Extended Key Usage | serverAuth, clientAuth |
| Basic Constraints | CA:FALSE(CA가 아닌 리프 인증서) |
출력 파일
key.pem, 개인 키(보호하세요, 모드 0600)cert.pem, 자체 서명 인증서(공개, 배포 가능)
Nginx의 경우
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/ssl/certs/cert.pem;
ssl_certificate_key /etc/ssl/private/key.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
}
Apache 2.4 이상의 경우
<VirtualHost *:443>
ServerName example.com
SSLEngine on
SSLCertificateFile /etc/ssl/certs/cert.pem
SSLCertificateKeyFile /etc/ssl/private/key.pem
</VirtualHost>
자신의 기기에서 인증서 신뢰하기
관리하는 기기에서 브라우저 경고를 없애려면 cert.pem을 해당 시스템이나 브라우저의 신뢰 저장소에 가져오세요. 직접 생성한 인증서에 한해, 본인 소유의 기기에서만 하세요. mkcert 같은 도구는 여러 서비스를 위한 로컬 CA를 자동화합니다. 이 생성기는 한 번에 하나의 자체 서명 인증서를 만듭니다.
자체 서명이 적합하지 않은 경우
- 공개 웹사이트. 사용자는 경고를 보게 되고 상당수가 이탈합니다.
- 서드파티 API 연동. 대부분의 클라이언트는 알 수 없는 발급자를 거부합니다.
- 프로덕션. 절대 안 됩니다. 개방된 인터넷의 모든 것에는 Let’s Encrypt(무료)나 유료 CA를 사용하세요.
자주 묻는 질문
아니요. 키 쌍과 인증서는 브라우저에서 생성되어 사용자 기기에 남습니다. 아무것도 업로드되지 않습니다. 그래도 내려받은 key.pem 파일은 비공개로 유지하세요. 그것을 가진 사람은 누구나 그 인증서를 사칭할 수 있습니다.
제3자가 연결한다면 안 됩니다. 브라우저가 뚜렷한 경고를 표시합니다. 무료(Let’s Encrypt, ZeroSSL) 또는 유료 CA가 서명한 인증서를 사용하세요. 자체 서명은 양쪽 끝을 직접 관리하는 내부 네트워크의 기기 간 통신에는 적합합니다.
과거에는 CN에 기본 도메인을 넣었습니다. 최신 브라우저는 호스트 검증에서 CN을 무시하고 SAN만 사용합니다. 항상 모든 호스트 이름을 SAN에 넣으세요. CN은 읽기 쉬운 식별을 위해 기본 도메인으로만 설정합니다.
네, SAN에 *.example.com을 넣으세요. 하위 도메인 한 단계를 포함합니다. 여러 단계에는 여러 와일드카드(*.example.com과 *.dev.example.com)를 추가하세요.
관련 도구
Base85 인코더 및 디코더
PostScript와 PDF 파일 안에서 쓰는 Adobe Ascii85 방식으로 Base85를 인코딩하고 디코딩하세요. 이진 데이터에서는 Base64보다 더 작습니다.
Base32 인코더 및 디코더
RFC 4648 알파벳으로 Base32 문자열을 인코딩하고 디코딩하세요. TOTP 시크릿, 대소문자를 구분하지 않는 토큰, 사람이 입력하는 식별자에 유용합니다.
bcrypt 생성기
plaintext password에서 bcrypt hash를 생성합니다. cost factor 4부터 13까지 조정 가능하며 Laravel, Django, Node, PHP와 호환됩니다.
카이사르 암호 인코더
카이사르 암호로 텍스트를 암호화하고 복호화하세요. 1-25 사이의 모든 이동값을 지원하고, 특수한 경우인 ROT13을 처리하며, 문장 부호와 대소문자를 그대로 유지합니다.
A1Z26 암호 인코더
A1Z26 암호(A=1, B=2, ... Z=26)로 텍스트를 인코딩하거나 숫자열을 다시 글자로 디코딩합니다. 구분자도 사용자 지정할 수 있습니다.
AES 암호화 / 복호화
OpenSSL의 AES cipher로 낮은 위험의 텍스트를 암호화하고 복호화합니다. passphrase는 SHA-256으로 해시되며 Base64 출력은 IV와 암호문을 담습니다.