SSL 인증서 생성기

신원 정보

자가 서명 인증서는 기본적으로 브라우저에서 신뢰되지 않습니다. 로컬 개발, 테스트 또는 사설 네트워크에서만 사용하세요.

로컬 개발이나 내부 테스트용 자체 서명 인증서를 브라우저에서 바로 생성하세요. RSA 키 크기(2048, 3072, 4096비트), Common Name, Subject Alternative Names, 유효 기간, 조직 기본 정보를 선택할 수 있습니다. 인증서와 개인 키는 브라우저에서 생성되며 당사 서버로 전송되지 않고, 둘 다 Nginx나 Apache에 바로 사용할 수 있는 PEM 파일로 내려받습니다.

인증서 생성 작동 방식

  1. 1

    RSA 키 크기 선택

    대부분의 테스트에는 2048비트로 충분합니다. 3072이나 4096은 속도를 희생해 더 큰 키를 제공합니다.

  2. 2

    주체와 SAN 입력

    Common Name과 함께 인증서가 포함해야 하는 모든 호스트 이름 또는 IP를 입력합니다(최신 브라우저는 CN을 무시하고 SAN을 사용합니다).

  3. 3

    브라우저에서 생성

    자체 서명 인증서가 생성되고 해당 개인 키로 서명됩니다. 모든 과정이 브라우저에서 로컬로 이루어집니다.

  4. 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)를 추가하세요.

관련 도구