ServBay에서 Let's Encrypt를 이용한 SSL 인증서 자동 신청 및 관리
최신 웹 개발에서는 실제 서비스 환경을 로컬에서도 정밀하게 재현하는 것이 매우 중요합니다. 여기에는 HTTPS 사용도 포함됩니다. ServBay는 ACME(Automated Certificate Management Environment) 프로토콜을 통합 지원하여, Let's Encrypt와 같은 인증기관(CA)으로부터 SSL/TLS 인증서를 자동으로 신청, 설치, 갱신 및 관리할 수 있습니다. 본 문서는 ServBay에서 Let's Encrypt를 활용해 인증서를 발급받고, 이를 로컬 개발 웹사이트에 적용하는 방법을 상세히 안내합니다.
Let's Encrypt 인증서를 이용하면 무료, 자동화, 글로벌 신뢰 확보와 함께, 로컬에서 실제 사이트의 HTTPS 동작, Service Worker, HSTS 등 다양한 기능을 테스트할 수 있습니다.
사전 준비사항
Let's Encrypt 인증서를 신청하기 전에 다음 조건을 충족해야 합니다.
- 공인 도메인 소유: 실제로 등록된 공인 도메인(예:
servbay.demo
또는yourdomain.com
)을 소유해야 합니다. Let's Encrypt에서는 로컬 IP 주소나.local
과 같은 비공인 도메인에는 인증서를 발급해주지 않습니다. - 도메인 DNS 레코드 관리 가능: ServBay는 DNS API 기반 검증 방식을 사용합니다. 이를 위해서는 도메인 등록 대행업체나 DNS 서비스 제공업체(Cloudflare, GoDaddy, AWS Route 53 등) 관리자 페이지 접근권한이 필요하며, 자동화 작업을 위한 API 키도 발급받아야 합니다.
- DNS API 키 확보: 사용하는 DNS 제공업체 정책에 따라 요구되는 API 키나 토큰을 발급받아야 합니다. 업체별로 API 키 발급 방법이 다릅니다. 보통 DNS 레코드 관리 권한이 있는 API 키를 생성해야 합니다. 필요한 API 키와 환경 변수 이름은
acme.sh
프로젝트의 DNS API WIKI에서 확인할 수 있습니다.
신청 절차
ServBay에서 Let's Encrypt로 SSL 인증서를 신청하는 주요 단계는 다음과 같습니다.
ServBay 관리 패널 열기: ServBay 앱을 시작한 후, 메뉴바 아이콘 클릭 → "관리 패널(Manager Panel)" 선택해 웹 관리 화면을 엽니다.
SSL 인증서 관리로 이동: 사이드바에서
SSL 인증서(SSL Certificates)
항목을 클릭합니다.새 인증서 신청 시작: 인증서 목록 페이지 오른쪽 상단의 둥근 “+” 버튼을 누릅니다. 인증서 신청을 위한 설정 창이 뜹니다.
인증서 정보 입력: “Request Certificate(인증서 신청)” 창에서 아래 사항을 입력합니다.
- Common Name(공용 이름): 인증서를 식별할 수 있는 이름을 입력하세요(예:
servbay-demo-cert
또는mydomain-wildcard-cert
등). - Usage Purpose(용도):
TLS/SSL
을 선택합니다. - Request Method(신청 방식):
ACME
를 선택합니다. - Issuer(발급 기관):
Let's Encrypt
를 선택합니다. - DNS API Provider(DNS API 공급자): 드롭다운에서 도메인이나 DNS 공급업체를 선택합니다.(예:
cloudflare
→ Cloudflare,godaddy
→ GoDaddy 등) - Algorithm(알고리즘):
ECC
(타원곡선 암호)를 권장하며, 키 길이는384
로 선택하세요. ECC 인증서는 기존 RSA 대비 더 짧은 키로 더 나은 성능과 보안을 보장합니다. - E-Mail Address(이메일 주소): 유효한 이메일을 입력하세요. 인증서 만료, 갱신 실패 등 주요 알림이 이 주소로 전송됩니다.
- DNS API Tokens(DNS API 토큰): DNS 공급자별로 요구하는 API 키/토큰 정보를 입력합니다. 이는 일반적으로 환경변수 형태입니다. 올바른 환경변수 이름 및 값은 DNS 공급자 문서나
acme.sh
의 DNS API WIKI를 참고하세요. 중요: API 정보 앞에export
를 입력하지 마세요. 예를 들어, Cloudflare의 경우CF_Key=sdfsdfsdffgfdg\[email protected]
처럼 입력하며, 서로 다른 변수는\n
으로 구분해야 합니다. - Domain(도메인): 인증서를 신청하고자 하는 도메인명을 입력하세요. 여러 도메인이나 와일드카드(예:
*.servbay.demo
) 인증서가 필요하다면 영문 쉼표(,)로 구분합니다.(예:servbay.demo, www.servbay.demo, *.servbay.demo
) 와일드카드 인증서는 반드시 DNS API 검증이 필요합니다.
스크린샷의 Common Name 예시는 Test이지만, 실제로는 더 설명적인 이름을 사용하길 권장합니다.
- Common Name(공용 이름): 인증서를 식별할 수 있는 이름을 입력하세요(예:
신청 제출: 모든 정보를 확인 후, 창 하단의 “Request(신청)” 버튼을 클릭하세요.
신청 완료 대기: ServBay는 백그라운드에서 ACME 클라이언트를 실행하고, 입력받은 DNS API 정보로 도메인 소유권을 검증한 뒤 Let's Encrypt에 인증서를 신청합니다. 이 과정은 DNS 전파 속도 및 Let's Encrypt 서버 응답에 따라 일정 시간이 소요될 수 있습니다. 완료 후 새 인증서는 SSL 인증서 목록에 자동으로 추가됩니다.
인증서 활용
신청한 인증서가 목록에 표시되면, 이를 로컬 웹사이트에 적용할 수 있습니다.
- 웹사이트 설정으로 이동: 사이드바에서
웹사이트(Websites)
항목을 선택합니다. - 사이트 설정 편집: 인증서를 적용할 사이트 오른쪽의 편집 버튼(연필 아이콘)을 클릭합니다.
- HTTPS/SSL 설정: 사이트 설정 페이지에서 SSL/HTTPS 관련 항목을 찾으세요. 보통 인증서 소스를 지정하는 옵션이 있습니다.
- ACME 인증서 선택: 인증서 소스 옵션에서
ACME
를 선택하면, 오른쪽에 방금 신청한 Common Name으로 구분되는 인증서가 드롭다운에 표시됩니다. - 설정 저장: 사이트 설정을 저장하면 ServBay가 설정을 리로드하여 새 SSL 인증서를 적용합니다. 이제 로컬 웹사이트에 HTTPS로 접속할 수 있습니다.
위 스크린샷은 사이트 설정에서 ACME 인증서를 선택하는 모습입니다.
인증서 자동 갱신
Let's Encrypt 인증서의 유효기간은 90일입니다. ServBay에는 자동 갱신 기능이 내장되어 있습니다. ACME 인증서의 만료일이 가까워지면(일반적으로 만료 30일 전 이내), ServBay가 같은 설정 정보를 사용해 자동으로 갱신 시도를 진행합니다. 별도의 수동 작업은 필요하지 않습니다. 자동 갱신이 원활하려면, DNS API 키가 항상 유효해야 합니다. 갱신 중 문제가 발생하면, Let's Encrypt에서 신청 시 입력한 이메일로 알림이 전송됩니다.
ACME 프로토콜 및 DNS API 검증 참고사항
- ACME 프로토콜: ACME는 도메인 검증과 인증서 발급 절차를 자동화하기 위한 개방형 표준입니다. Let's Encrypt 등 인증기관이 ACME 프로토콜을 통해 클라이언트 소프트웨어(예: ServBay 내장 ACME 클라이언트)와 연동하여 인증서 신청·관리를 자동으로 처리합니다.
- DNS API 검증: ACME 프로토콜에서 지원하는 도메인 소유권 검증 방식입니다. 클라이언트가 DNS API를 통해 도메인의 TXT 레코드에 지정된 값을 자동 등록하고, 인증기관 서버가 해당 값을 확인해 소유권을 검증합니다. DNS API 검증은 특히 아래 상황에서 유용합니다.
- 와일드카드 인증서 신청(예:
*.servbay.demo
) - 로컬 ServBay 인스턴스를 외부에서 직접 접근할 수 없는 경우(사내망, ISP의 80/443 포트 차단 등)
- 와일드카드 인증서 신청(예:
인증서 알고리즘 선택: ECC vs RSA
인증서 신청 시, ServBay에서는 ECC 또는 RSA 알고리즘 중 선택할 수 있습니다.
- RSA: 전통적인 공개키 암호 방식. RSA 인증서는 호환성이 매우 높아, 거의 모든 브라우저와 클라이언트가 지원합니다. 보통 2048/4096비트 키 길이를 사용합니다.
- ECC: 타원곡선 기반 암호 방식. 동일한 보안 강도에서도 ECC는 RSA보다 훨씬 짧은 키 길이(ECC 256비트 ≈ RSA 3072비트)로 더 빠른 TLS 핸드셰이크와 낮은 시스템 리소스 소모가 가능하며, 최신 브라우저와 OS에서 광범위하게 지원됩니다.
권장 사항: 새로운 인증서는 성능과 보안을 위해 ECC(384비트) 알고리즘을 권장합니다. 하지만, 구형 클라이언트 지원이 필요하다면 RSA 인증서를 선택할 수 있습니다.
유의사항
- DNS 전파 시간: 신청 후 DNS TXT 레코드 변경사항이 전 세계적으로 적용되기까지 몇 분에서 수 시간 소요될 수 있습니다. 즉시 실패 메시지가 뜨면, 잠시 후 다시 시도해보세요.
- API 키 보안: DNS API 키는 도메인 DNS 레코드 관리 권한이 있습니다. 안전하게 보관하고 외부에 노출되지 않도록 주의하세요.
- Let's Encrypt 발급 제한: Let's Encrypt는 인증서 발급 및 갱신 시도에 일정한 속도 제한이 있습니다. 같은 도메인으로 빈번히 신청할 경우 제한이 걸릴 수 있습니다. 보통 ServBay의 자동 갱신 기능을 정상적으로 사용한다면 발급 제한에 걸릴 일이 거의 없습니다.
자주 묻는 질문(FAQ)
- Q: 내 도메인이 로컬 IP로 설정되어 있어도 Let's Encrypt 인증서를 받을 수 있나요?
- A: 네, DNS API 검증 방식을 사용하면 가능합니다. Let's Encrypt는 도메인 DNS 소유권만 확인하며, 반드시 도메인이 공인 IP로 매핑될 필요는 없습니다.
- Q: 인증서 신청에 실패하면 어떻게 하나요?
- A: 입력한 DNS API 키가 올바른지, 권한이 충분한지 확인하세요. 올바른 DNS API Provider를 선택했는지도 확인하고, DNS 레코드 전파가 지연된 것이라면 잠시 뒤 재시도해보세요. ServBay 로그를 조회하면 상세 원인을 알 수 있는 경우도 많습니다.
- Q: ServBay는 인증서 만료 전 언제쯤 자동 갱신하나요?
- A: 일반적으로 인증서 만료 30일 전부터 자동 갱신을 시도합니다.
- Q: 로컬 개발용
.local
도메인에 인증서를 신청할 수 있나요?- A: 불가합니다. Let's Encrypt는 공인 등록 도메인에만 인증서를 발급합니다.
.local
이나 로컬 IP는 ServBay User CA 또는 ServBay Public CA 기능을 이용해 자가 서명 인증서나 임시 CA 인증서를 생성해서 사용할 수 있습니다.
- A: 불가합니다. Let's Encrypt는 공인 등록 도메인에만 인증서를 발급합니다.
- Q: 사용하는 DNS 제공자가 ServBay 목록에 없으면 어떻게 하나요?
- A: ServBay 내장 ACME 클라이언트는 주요 DNS 업체를 폭넓게 지원합니다. 만약 아주 생소한 업체를 사용하는 경우, 수동 설정이 필요할 수 있습니다.
acme.sh
의 DNS API WIKI에서 지원 여부와 설정법을 확인한 후, ServBay UI에 없다면 ServBay 지원팀에 문의하세요.
- A: ServBay 내장 ACME 클라이언트는 주요 DNS 업체를 폭넓게 지원합니다. 만약 아주 생소한 업체를 사용하는 경우, 수동 설정이 필요할 수 있습니다.
마무리
ServBay는 ACME 프로토콜과의 통합을 통해 로컬 개발 환경에서 Let's Encrypt SSL 인증서를 쉽고 빠르게 발급 · 관리할 수 있게 해줍니다. DNS API 기반 검증으로 공인 도메인 및 와일드카드 인증서까지 무료로 자동 갱신되는 보안 환경을 구축할 수 있어 로컬에서도 실제 운영 환경과 동일하게 HTTPS 환경을 시뮬레이션하여 개발 효율과 테스트 신뢰도를 높여줍니다. 본문에서 안내한 절차를 따르면, ServBay 웹사이트에 보안 연결(HTTPS)을 빠르고 간편하게 활성화할 수 있습니다.