모든 가이드 가이드

GetHTTPS 작동 원리

GetHTTPS는 서버 측 구성 요소 없이 Let’s Encrypt에서 무료 HTTPS 인증서를 발급하는 브라우저 기반 ACME 클라이언트입니다.

아키텍처

certbot이나 acme.sh와 같은 전통적인 ACME 클라이언트는 서버에서 실행됩니다. 셸 액세스, 루트 권한, 그리고 인증서 갱신을 위한 크론 작업이 필요한 경우가 많습니다.

GetHTTPS는 다른 접근 방식을 취합니다: 모든 것이 브라우저 탭에서 실행됩니다. 개인키는 Web Crypto API로 로컬에서 생성되며 페이지를 벗어나지 않습니다.

작동 흐름

  1. 계정 키 생성crypto.subtle.generateKey()를 사용하여 브라우저에서 P-256 ECDSA 키 쌍이 생성됩니다. 이 키가 ACME 계정을 식별합니다.

  2. 계정 등록 — 공개키가 Let’s Encrypt의 ACME API에 등록됩니다. 각 요청은 JWS(JSON Web Signature)로 서명됩니다.

  3. 주문 생성 — 인증서가 커버할 호스트명을 지정합니다. Let’s Encrypt가 일련의 챌린지를 반환합니다.

  4. 챌린지 완료 — 각 호스트명에 대해 HTTP-01 챌린지(서버에 파일 배치) 또는 DNS-01 챌린지(TXT 레코드 추가)를 완료합니다.

  5. 사전 검사 확인 — Let’s Encrypt에 제출하기 전에 GetHTTPS가 공개 인터넷에서 챌린지 구성을 확인합니다. 이를 통해 요청 제한 시도를 소비하기 전에 오타를 잡을 수 있습니다.

  6. 인증서 발급 — 챌린지가 통과되면 별도의 인증서 키 쌍이 생성되고, 인증서 서명 요청(CSR)이 작성되며, 주문이 완료됩니다. Let’s Encrypt가 서명된 인증서 체인을 반환합니다.

  7. 다운로드privkey.pem, cert.pem, chain.pem, fullchain.pem을 다운로드하여 서버에 배포합니다.

보안 모델

GetHTTPS는 저희조차도 여러분의 개인키에 접근할 수 없도록 설계되었습니다.

개인키는 절대 브라우저를 떠나지 않습니다

계정 키와 인증서 키 모두 브라우저의 Web Crypto API(crypto.subtle.generateKey())를 사용하여 생성됩니다. 키 자료는 탭 내의 JavaScript 메모리에만 존재합니다. 디스크에 기록되거나, 네트워크를 통해 전송되거나, gethttps.com에서 접근할 수 없습니다.

“다운로드”를 클릭하면 PEM 파일이 URL.createObjectURL()로 클라이언트 측에서 생성되어 다운로드로 전달됩니다. 파일은 메모리에서 파일시스템으로 이동합니다 - 절대 저희 서버를 거치지 않습니다.

백엔드 없음, 프록시 없음

전통적인 인증서 도구는 서버 측 프로세스를 실행합니다. 이는 여러분이 제어하지 못할 수도 있는 서버에 개인키가 존재한다는 뜻입니다.

GetHTTPS는 백엔드가 없습니다. 사이트는 정적 HTML, CSS, JavaScript입니다. 브라우저가 acme-v02.api.letsencrypt.org로 직접 ACME 요청을 보냅니다. 이러한 요청을 프록시하거나, 검사하거나, 로그하지 않습니다.

저희가 볼 수 있는 것과 볼 수 없는 것

저희가 보는 것저희가 보지 못하는 것
여러분의 개인키✓ (브라우저에만 존재)
여러분의 도메인✓ (Let’s Encrypt에 직접 전송)
ACME 요청✓ (브라우저 → Let’s Encrypt)
챌린지 토큰✓ (브라우저에서 생성)
여러분의 이메일✓ (Let’s Encrypt에만 전송)

DNS 사전 검사

챌린지 확인을 위해 GetHTTPS는 공개 DNS 리졸버(Google의 DNS-over-HTTPS API를 통해)를 쿼리합니다. 이 쿼리에는 도메인 이름과 예상 TXT 레코드만 포함됩니다 - 개인 데이터는 없습니다.

위협 모델

보호하는 대상:

  • 서버 침해를 통한 키 도난 (침해할 서버가 없음)
  • 키 자료에 대한 중간자 공격 (키가 탭을 떠나지 않음)
  • 데이터 수집 (기본적으로 분석 없음, 백엔드 로깅 없음)

보호하지 못하는 대상:

  • 침해된 브라우저 (브라우저가 침해되면 모든 보장이 무효)
  • 침해된 DNS 공급업체 (공격자가 DNS를 제어하면 DNS-01을 통해 인증서를 발급할 수 있음)
  • 페이지 메모리를 읽을 수 있는 브라우저 확장 프로그램

갱신은 어떻게 하나요?

Let’s Encrypt 인증서는 90일 동안 유효합니다. 갱신하려면 다시 방문하여 동일한 절차를 거치면 됩니다. 계정 키를 저장해 두었다면 인식되므로 재등록할 필요가 없습니다.

자동 갱신이 필요하면 certbot과 같은 서버 측 클라이언트를 고려하세요. GetHTTPS는 완전한 제어와 투명성이 필요한 수동, 일회성 발급을 위해 설계되었습니다.

브라우저에서 무료 SSL 인증서 받기
설치 불필요, 계정 불필요. 개인키는 항상 기기에 남습니다.
인증서 발급