자체 서명 인증서 만들기: localhost와 로컬 IP용
이 도구는 로컬 사이트에서 쓰는 이름으로 개발 서버에 바로 쓸 인증서와 개인 키를 만들어요. 모든 과정이 브라우저 안에서 이뤄지고, 업로드하거나 저장하는 것은 없어요. 마지막에 server.crt와 server.key를 ZIP 하나로 내려받아요.
localhost SSL 인증서, 이렇게 만들어져요
입력한 이름은 모두 Subject Alternative Name(SAN) 목록에 들어가요. 요즘 브라우저가 확인하는 것이 바로 이 목록이에요. 따로 설정하거나 붙여 넣을 것은 없어요.
키 쌍은 브라우저의 WebCrypto로 만들고, 인증서도 이 페이지 안에서 만들어 서명해요.
자체 서명 인증서 만들기 순서
- 도메인 및 IP 주소 입력란을 확인하세요. 처음에는
localhost, 127.0.0.1이 들어 있어요. 쓰는 이름으로 바꾸거나 추가하세요. 예:localhost, 127.0.0.1, 192.168.1.5 - 필요하면 설정을 열어 유효 기간(일)이나 RSA 키 크기를 바꾸세요.
- 인증서 생성을 누르세요. 잠깐 인증서를 생성하고 있어요…가 보인 뒤 인증서가 준비됐어요가 나타나요.
- ZIP 다운로드를 누르세요.
local-ssl-certificate.zip에 server.crt(인증서)와 server.key(개인 키)가 들어 있어요. - 내 컴퓨터에서 신뢰하기를 보고 server.crt를 컴퓨터의 신뢰 저장소에 추가한 다음, 두 파일로 서버를 설정하세요.
- 이름이나 설정을 바꾸려면 이름이나 설정 변경을 누르고 다시 생성하세요.
입력란에 무엇을 넣나요
항목은 쉼표, 공백, 줄 바꿈으로 구분하세요. 각 항목은 DNS 이름인지 IP인지 자동으로 나뉘어요.
localhost나dev.example.test같은 호스트 이름*.example.test같은 와일드카드(하위 도메인 한 단계에 일치해요)192.168.1.5같은 IPv4와::1같은 IPv6(대괄호가 있어도 없어도 돼요)- 악센트나 한글 같은 비라틴 문자가 든 이름(자동으로 punycode, 즉 xn-- 형태로 바뀌어요)
인증서 하나에는 이름을 최대 50개까지 넣을 수 있어요. 호스트 이름이나 주소만 입력하세요. https:// 같은 스킴이나 포트 번호가 붙은 항목은 거부되고, 오류에 올바르지 않은 항목이 정확히 표시돼요. 브라우저 주소창에 입력하는 이름은 인증서에 든 이름 중 하나여야 해요. 아니면 브라우저가 계속 경고해요.
설정: 유효 기간과 키 크기
유효 기간은 1일에서 397일까지 넣을 수 있고 처음 값은 365일이에요. 범위를 벗어난 숫자는 가장 가까운 한계값으로 바뀌어요. 인증서는 만든 순간부터 유효하고, 결과의 만료일에 끝나는 날이 표시돼요. 만료되면 새로 만드세요.
RSA 키 크기는 기본 2048비트예요. 빠르고 어디서나 받아들여져요. 더 큰 키가 필요하면 4096비트를 고르세요. 만드는 데 몇 초 걸릴 수 있어요.
결과에는 적용 대상(모든 이름), 만료일, 키, SHA-256 지문이 표시돼요. 인증서는 X.509 버전 3 자체 서명이고, 자기 키로 SHA-256 with RSA 서명을 해요. 공통 이름(common name)은 처음 입력한 항목이지만 브라우저는 SAN 목록을 읽어요. 일련번호는 무작위예요.
Windows, macOS, Linux에서 인증서 신뢰하기
신뢰 저장소에 추가하기 전에는 브라우저가 경고를 표시해요. ZIP의 압축을 풀고, 그 폴더에서 터미널을 연 다음 내 운영체제용 명령을 실행하세요. 명령은 내 컴퓨터에서 신뢰하기 아래에도 복사하기 쉬운 형태로 나와 있어요.
- macOS:
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain server.crt - Windows(관리자 권한 PowerShell):
Import-Certificate -FilePath .\server.crt -CertStoreLocation Cert:\LocalMachine\Root - Debian 및 Ubuntu:
sudo cp server.crt /usr/local/share/ca-certificates/server.crt다음에sudo update-ca-certificates - Fedora 및 RHEL:
sudo cp server.crt /etc/pki/ca-trust/source/anchors/다음에sudo update-ca-trust
Firefox는 자체 목록을 따로 관리하고, Linux의 Chrome도 마찬가지예요. 거기서 설정, 인증서, 인증 기관에서 server.crt를 가져오세요. 일부 개발 도구도 자체 목록이 있어요. 그럴 때는 도구의 설정에서 server.crt를 지정하세요. 신뢰를 추가한 뒤에는 브라우저를 다시 시작하세요.
서버에서 쓰기와 키 보관
웹 서버의 인증서 설정에는 server.crt를, 개인 키 설정에는 server.key를 지정한 다음 서버를 다시 시작하세요. nginx에서는 ssl_certificate와 ssl_certificate_key, Apache에서는 SSLCertificateFile과 SSLCertificateKeyFile이에요. 그런 다음 인증서에 든 이름 중 하나로, 앞에 https://를 붙여 사이트를 여세요.
server.key는 공개하지 마세요. 이 파일이 있으면 누구나 내 로컬 사이트인 척할 수 있어요. 공개 저장소에 커밋하지 마세요. 이 도구는 로컬 개발 전용이에요. 자체 서명 인증서를 공개 웹사이트에는 절대 쓰지 마세요.
자주 묻는 질문
localhost용 자체 서명 인증서는 어떻게 만드나요?
"도메인 및 IP 주소" 입력란에 처음부터 들어 있는 localhost, 127.0.0.1을 그대로 두고 "인증서 생성"을 누른 다음 "ZIP 다운로드"를 누르세요. server.crt와 server.key를 받아요. 로컬 웹 서버가 그 두 파일을 쓰도록 지정하고, server.crt를 컴퓨터의 신뢰 저장소에 추가하면 브라우저 경고가 사라져요.
localhost SSL 인증서를 IP 주소에도 쓸 수 있나요?
네. "도메인 및 IP 주소" 입력란에 192.168.1.5 같은 주소를 입력하세요. IPv4와 IPv6 모두 되고, [::1]처럼 대괄호로 감싼 형태도 돼요. 각 IP는 인증서에 IP 주소 항목으로 기록되고, https://192.168.1.5를 열 때 브라우저가 확인하는 것이 바로 이 항목이에요. 주소만 입력하고 https://나 포트는 붙이지 마세요.
SAN은 어떻게 넣나요?
입력한 이름은 자동으로 Subject Alternative Name이 돼요. 도메인은 DNS 이름으로, IP 주소는 IP 주소 항목으로 들어가서 따로 설정하거나 붙여 넣을 것이 없어요. 결과의 "적용 대상"에 들어간 이름이 모두 표시돼요. 공통 이름에는 처음 입력한 항목이 들어가지만 브라우저는 SAN을 읽어요.
와일드카드 인증서도 만들 수 있나요?
네. *.example.test 같은 와일드카드를 입력하면 DNS 이름으로 추가돼요. 와일드카드는 한 단계만 일치해요. *.example.test는 app.example.test에는 쓸 수 있지만 example.test 자체나 a.b.example.test에는 쓸 수 없어요. 필요하면 example.test를 따로 입력하세요.
OpenSSL이 있어야 하나요?
아니요. 키 쌍은 브라우저에 내장된 WebCrypto로 만들고 인증서도 이 페이지 안에서 만들어 서명하므로, 실행할 명령도 설치할 것도 없어요. OpenSSL은 만든 파일을 나중에 다른 형식으로 바꾸고 싶을 때만 필요해요.
Windows와 Mac에서는 어떻게 신뢰하나요?
Windows에서는 PowerShell을 관리자 권한으로 열고, 파일 압축을 푼 폴더에서 Import-Certificate -FilePath .\server.crt -CertStoreLocation Cert:\LocalMachine\Root를 실행하세요. Chrome과 Edge가 읽는 신뢰할 수 있는 루트 인증 기관 저장소에 인증서가 복사돼요. Mac에서는 server.crt가 있는 폴더에서 sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain server.crt를 실행하세요.
Ubuntu와 Firefox에서는 어떻게 신뢰하나요?
Debian과 Ubuntu에서는 server.crt를 /usr/local/share/ca-certificates/에 복사하고 sudo update-ca-certificates를 실행하세요. curl 같은 명령줄 도구는 그러면 인증서를 받아들여요. Firefox는 시스템 신뢰 저장소를 쓰지 않으므로, 설정의 인증서에서 인증 기관 탭을 열어 server.crt를 가져오고 웹사이트 식별을 신뢰하는 옵션을 체크하세요.
PFX 파일이나 CSR, Let's Encrypt 인증서도 받을 수 있나요?
아니요. 이 도구가 만드는 것은 PEM 형식의 자체 서명 인증서 하나(server.crt와 server.key)예요. 인증서 서명 요청(CSR), 인증 기관이 서명한 인증서나 공개용 인증서, 별도의 루트 CA는 만들지 않아요. PFX가 필요하면 OpenSSL의 pkcs12 명령으로 이 두 파일에서 만들 수 있어요.