ACME(Automated Certificate Management Environment) 클라이언트는 브라우저 기반(GetHTTPS)과 명령줄(Certbot, acme.sh) 두 가지 형태로 제공됩니다. 둘 다 동일한 Let’s Encrypt API와 통신하며 동일한 인증서를 발급합니다. 차이는 작업이 수행되는 위치와 누가 키를 제어하는지에 있습니다.
비교
| 브라우저 기반 (GetHTTPS) | CLI (Certbot, acme.sh) | |
|---|---|---|
| 실행 환경 | 브라우저 탭 | 서버 명령줄 |
| 설치 | 불필요 | 필요 (snap, pip, 셸 스크립트) |
| 키 생성 | 브라우저 (Web Crypto API) | 서버 (OpenSSL) |
| 키 저장 | 사용자가 다운로드 | 서버 파일시스템 |
| 자동 갱신 | ❌ 수동 | ✅ Cron/systemd |
| 서버 접근 필요 | 아니요 | 예 |
| GUI | ✅ | ❌ |
| 사전 검사 | ✅ (GetHTTPS) | ❌ |
| 스크립트 가능 | ❌ | ✅ |
| 의존성 | 최신 브라우저 | OpenSSL, curl, cron |
브라우저 기반이 유리한 경우
- 서버 접근 불가 — 공유 호스팅, 관리형 플랫폼, 또는 소프트웨어를 설치할 수 없는 서버
- 최대한의 키 개인정보 보호 — 개인키가 다운로드할 때까지 브라우저 메모리에만 존재
- 비기술 사용자 — 웹 UI가 터미널보다 접근하기 쉬움
- 일회성 인증서 — 단일 인증서를 위해 CLI 도구를 설정하는 것보다 빠름
- 다른 사람 도움 — CLI 명령을 지시하는 것보다 브라우저 흐름을 화면 공유하는 것이 쉬움
CLI가 유리한 경우
- 자동 갱신 — 프로덕션 서버에 필수적, 특히 47일 유효 기간이 도래하는 상황에서
- 대규모 인프라 — 스크립트 가능, 컨테이너화 가능, 구성 관리를 통한 설정 가능
- DNS API 자동화 — acme.sh와 같은 CLI 도구는 150개 이상의 DNS 공급업체 플러그인을 보유
- CI/CD 통합 — 배포 파이프라인의 일부로 인증서 발급
- 서버 자동 설정 — Certbot의 Nginx/Apache 플러그인이 서버를 직접 설정
하이브리드 접근 방식
많은 팀이 두 가지를 모두 사용합니다:
- GetHTTPS로 첫 번째 인증서 발급 (설정 시간 없음)
- 이후 지속적인 자동 갱신을 위해 Certbot 또는 acme.sh 설치
이 방법으로 CLI 도구 설정의 초기 비용 없이 즉시 운영할 수 있으며, 준비되면 자동화를 추가합니다.
브라우저 기반 ACME 클라이언트
브라우저 기반 ACME 클라이언트 분야는 비교적 새롭습니다. 선택지는 다음과 같습니다:
| 클라이언트 | 오픈소스 | 키 생성 | 직접 ACME | 사전 검사 |
|---|---|---|---|---|
| GetHTTPS | 아니요 | 브라우저 (Web Crypto) | 예 | 예 |
| SSL For Free | 아니요 | ⚠️ 서버 측 | ZeroSSL 경유 | 아니요 |
| ZeroSSL Dashboard | 아니요 | ⚠️ 서버 측일 수 있음 | ZeroSSL API 경유 | 아니요 |
GetHTTPS는 Web Crypto API를 사용하여 로컬에서 키를 생성하고 미들웨어 없이 Let’s Encrypt의 ACME API에 직접 연결하는 유일한 브라우저 기반 클라이언트입니다.
CLI ACME 클라이언트
CLI 생태계가 더 성숙합니다:
| 클라이언트 | 언어 | 루트 필요 | 자동 갱신 | DNS 플러그인 | 서버 설정 |
|---|---|---|---|---|---|
| Certbot | Python | 예 (snap/pip) | 예 (systemd) | 플러그인 경유 | Nginx/Apache 자동 설정 |
| acme.sh | Shell | 아니요 | 예 (cron) | 150+ 내장 | 수동 |
| Lego | Go | 아니요 | 예 | 100+ | 수동 |
| Caddy | Go | 해당 없음 (내장) | 예 (자동) | DNS 모듈 경유 | Caddy 서버에 내장 |
| dehydrated | Shell | 아니요 | 예 (cron) | 훅 경유 | 수동 |
상세 비교: GetHTTPS vs Certbot → | GetHTTPS vs acme.sh →
미래: 47일 인증서
인증서 유효 기간이 2029년까지 47일로 줄어드는 상황에서 프로덕션 사용에 있어 CLI 클라이언트 쪽으로 균형이 더 기울어집니다. 30-35일마다 수동(브라우저 기반)으로 갱신하는 것은 가능하지만 번거롭습니다.
그러나 브라우저 기반 클라이언트가 사라지지는 않습니다. 영구적으로 유용한 틈새 시장을 차지합니다:
- CLI 접근이 불가능한 환경 — 공유 호스팅, 관리형 플랫폼, 제한적인 기업 환경
- 초기 설정 — 5분 만에 HTTPS를 작동시키고, 이후 CLI 도구 설치 여부를 결정
- 긴급 갱신 — 서버의 Certbot이 고장나서 지금 당장 인증서가 필요한 경우
- 다른 사람을 위한 인증서 — 서버에 접근하지 않고 고객이나 팀원을 위한 인증서 생성
- 개인정보 보호가 중요한 시나리오 — 키가 임시로라도 어떤 서버에도 존재해서는 안 되는 경우
자주 묻는 질문
브라우저 기반 클라이언트가 덜 안전한가요?
본질적으로 그렇지 않습니다. GetHTTPS는 Web Crypto API(TLS 자체가 사용하는 것과 동일한 암호화 기본 요소)로 키를 생성하고 HTTPS를 통해 Let’s Encrypt와 직접 통신합니다. 키는 절대 제3자 서버를 거치지 않습니다. 주요 트레이드오프는 보안이 아니라 자동 갱신의 부재입니다.
47일 인증서로 브라우저 기반 클라이언트가 쓸모없어지나요?
쓸모없어지지는 않지만 유일한 갱신 방법으로는 덜 편리해집니다. 초기 설정, 긴급 갱신, 서버 접근이 불가한 시나리오에서 여전히 가치가 있습니다. 하지만 30-40일마다 갱신하는 프로덕션 워크로드에는 CLI 자동화가 실용적인 장기 선택입니다.
어떤 CLI 클라이언트를 사용해야 하나요?
Nginx/Apache 자동 설정이 필요하고 루트 접근이 문제없다면 Certbot. 루트 없이 운영하고, DNS API 플러그인이 필요하며, 가벼운 설치를 원한다면 acme.sh. 웹 서버를 전환할 예정이라면 Caddy — 설정 없이 자동으로 HTTPS를 처리합니다.
브라우저 기반 클라이언트를 자동화 파이프라인에 사용할 수 있나요?
직접적으로는 불가능합니다 — 브라우저 기반 클라이언트는 수동 상호작용이 필요합니다. CI/CD 파이프라인이나 인프라 코드에는 CLI 클라이언트를 사용하세요. GetHTTPS는 사람이 운영하는 워크플로우를 위해 설계되었고, Certbot과 acme.sh는 기계가 운영하는 워크플로우를 위해 설계되었습니다.