자체 서명 인증서 생성기
openssl 주문을 외우지 않고도 내부 서비스용 인증서와 그 개인 키를 만들 수 있습니다. 일반 이름을 입력하고, 인증서가 커버해야 할 모든 이름과 IP를 나열하고, 유효 기간과 키 크기를 선택한 뒤, 두 PEM 파일을 모두 다운로드하세요. 키는 브라우저에서 로컬로 생성되며 절대 업로드되지 않습니다 — 이 페이지는 네트워크 요청을 전혀 하지 않으며, 키는 저장하기 전까지 이 탭 안에만 존재합니다.
키가 클수록 생성 속도가 느립니다. 4096비트는 평범한 컴퓨터에서 시간이 걸릴 수 있습니다. 작업은 당신의 컴퓨터, 이 탭에서 이루어집니다 — 열어 둔 채로 끝나도록 두세요.
자체 서명: 주체와 발급자가 일치하므로 이 인증서 뒤에는 어떤 공적 기관도 서 있지 않습니다. 이를 사용하는 컴퓨터의 신뢰 저장소에 추가될 때까지 브라우저는 계속 경고합니다.
- 커버되는 이름(SAN)
- 유효 시작
- 유효 종료
- SHA-256 지문
인증서(PEM)
개인 키(PEM) — 비밀로 유지하세요
두 파일을 모두 서버에 설치하고(인증서와 키는 한 쌍입니다), 키 파일의 권한을 서비스 계정으로 제한하고, 만료 날짜를 눈에 띄는 곳에 적어 두세요 — 내부 인증서가 조용히 만료되는 것은 전형적인 자초한 장애입니다. 인증서 파서는 생성된 인증서를 다시 읽어 배포한 내용을 다시 확인할 수 있게 하고, 인증서 및 키 매처는 다운로드한 쌍이 함께 속한다는 것을 증명합니다 — 공유 공개 키로 파일을 그룹화하므로, 오래된 쌍에서 남은 키가 눈치채지 못하게 배포에 끼어들 수 없습니다.
자체 서명 인증서는 무엇을 위한 것인가
자체 서명 인증서는 발급자와 주체가 같은 인증서입니다. 스스로를 보증하는 셈입니다. 결함처럼 들리고, 공개 웹에서는 실제로 결함입니다 — 방문자의 브라우저는 낯선 사람의 말을 믿을 이유가 없습니다. 그러나 TLS의 상당 부분은 결코 대중과 마주하지 않습니다. 내부 대시보드, 랩과 스테이징 환경, 홈 랩 서비스, 네트워크 장비의 관리 인터페이스, 그리고 한 조직 안에서의 서비스 간 대화가 그렇습니다. 그런 경우 청중은 당신이 통제하는 컴퓨터이며, 신뢰라는 질문에는 다른 답이 있습니다. 인증서(또는 당신 소유의 작은 CA)를 당신이 관리하는 신뢰 저장소에 한 번, 신중하게 설치하는 것입니다. 그 대가로 공적 CA가 당신의 내부 호스트 이름 — 그 자체로 당신의 인프라 지도인 이름들 — 을 결코 알지 못한 채, 당신 자신의 벽 안에서 암호화와 신원을 얻습니다.
생성 의례는 예전에는 아무도 기억하지 못하고 모두가 복사해 붙여 넣던 openssl 명령이었고, SAN은 구버전에는 그 플래그가 존재하지 않았기 때문에 설정 파일을 통해 볼트로 고정하듯 붙였습니다. 이 페이지는 인증서의 형태를 대신 눈에 보이게 하기 위해 존재합니다. 이름은 읽을 수 있는 목록이고, 유효 기간은 만료될 것을 알면서 선택하는 일수이며, 키 크기는 알아채지 못했던 기본값이 아니라 하나의 결정입니다. 이 페이지가 의도적으로 하지 않는 것은 CA인 척하는 것입니다. 체인도, 중간 인증서도, 해지할 것도 없습니다. 서비스 하나, 인증서 하나, 챙겨야 할 만료 날짜 하나입니다.
클라이언트가 이를 받아들이게 하기
인증서를 생성하는 것은 쉬운 절반이고, 신뢰가 배포입니다. 당신 소유의 컴퓨터 몇 대에서는 인증서를 운영체제(또는 브라우저)의 신뢰 저장소에 추가하면 경고가 영원히 끝납니다. 그리고 curl과 git 같은 도구는 검증을 끄는 위험한 습관 대신 명령별 --cacert 지정자를 받아들입니다 — -k 플래그는 실제 공격을 잡아야 할 바로 그 경고를 무시하도록 모두를 훈련시킵니다. 청중이 컴퓨터 몇 대를 넘어서면, 단일 자체 서명 인증서에서 작은 프라이빗 CA로 졸업하세요. 그것으로 서비스 인증서에 서명하고, CA 인증서만 배포하면, 교체는 모든 클라이언트를 도는 순회 공연이 아니게 됩니다. 그리고 어떤 서비스가 결국 대중과 마주하게 되면, 인증서를 공적으로 신뢰받는 것으로 교체하세요 — SSL 검사기는 서버가 라이브가 된 뒤 실제로 제시하는 것을 검증하는데, 그 순간이 자체 서명이 더 이상 선택이 아니게 되는 순간입니다.
관련 도구: SSL 인증서 파서로 어떤 인증서든 다시 읽거나, SSL 검사기로 라이브 서버가 제시하는 것을 확인하세요.
더 읽어보기: 하나의 신뢰성 루틴 — 내부 인증서와 그 만료 날짜가 교체 및 백업과 같은 계획 페이지에 속하는 이유.
인증서 생성은 node-forge를 사용합니다. BSD-3-Clause 라이선스에 따라 사용되며, 생성을 누를 때만 로드됩니다. 이 도구의 어느 부분도 네트워크 요청을 하지 않습니다.
자주 묻는 질문
자체 서명 인증서는 어디에 사용해야 하나요?
당신과 당신 자신의 시스템만 이야기하는 것들에 사용하세요. 내부 대시보드, 랩과 스테이징 환경, 홈 랩 서비스, 기기 관리 페이지, 그리고 실제 인증서가 발급되기 전에 서버가 시작할 수 있게 해 주는 자리 표시자입니다. 규칙은 도달 범위입니다. 낯선 사람의 브라우저가 언젠가 그것을 보게 된다면, 대신 공적으로 신뢰받는 인증서가 필요합니다 — 그런 인증서는 Let’s Encrypt에서 무료입니다.
브라우저는 왜 자체 서명 인증서에 대해 경고하나요?
“자체 서명”이란 인증서를 보증하는 유일한 존재가 인증서 자체라는 뜻이기 때문입니다. 암호화는 작동합니다 — 연결은 비공개입니다 — 하지만 서버가 주장하는 바로 그 존재라는 것을 증명하는 것은 아무것도 없으며, 그것이 보통 인증 기관이 제공하는 TLS의 절반입니다. 그래서 인증서(또는 당신이 통제하는 CA)가 이를 사용하는 컴퓨터의 신뢰 저장소에 추가될 때까지 브라우저는 경고합니다.
일반 이름이 SAN 목록에도 나타나는 이유는 무엇인가요?
최신 브라우저는 일반 이름 필드를 완전히 무시하고 대신 주체 대체 이름 목록을 확인하기 때문입니다. 주 이름이 자체 SAN 목록에 없는 인증서는 그것이 만들어진 바로 그 이름에서 실패합니다 — 가장 흔한 자체 서명 실수입니다 — 그래서 이 페이지는 일반 이름을 항상 SAN에 추가합니다.
2048비트 RSA로 충분한가요, 아니면 4096을 선택해야 하나요?
2048비트 RSA는 현재 기준선이며 내부 서비스에는 충분합니다. 대부분의 공개 인증서가 아직 사용하는 것입니다. 4096비트는 생성이 느려지고 핸드셰이크가 약간 느려지는 대가로 미래의 암호 해독에 대한 여유를 삽니다. 수명이 긴 내부 CA나 쉽게 재발급할 수 없는 서비스에 의미가 있습니다. 어느 경우든 생성은 당신 자신의 컴퓨터에서 일어납니다 — 4096비트는 시간이 걸릴 수 있고, 탭은 멈춘 것이 아니라 작업 중입니다.
웹 페이지에서 개인 키를 생성해도 안전한가요?
이 페이지에서는 그렇습니다. 만들어진 방식 때문입니다. 키 쌍은 node-forge 라이브러리를 이용해 브라우저에서 로컬로 생성되고, 이 페이지는 네트워크 요청을 전혀 하지 않으며, 생성한 어떤 것도 업로드, 기록, 저장되지 않습니다. 그래도 일반적인 습관은 지킬 가치가 있습니다. 신뢰하는 페이지(와 컴퓨터)에서만 키를 생성하고, 개인 키 파일을 존재하는 순간부터 비밀로 취급하세요.