SSL/TLS 인증서 관리
자동화된 인증서 관리 기능을 통해 보안을 강화합니다.
Let's Encrypt 자동화
자동 발급
- ACME v2 프로토콜 지원
- DNS-01 챌린지를 통한 와일드카드 인증서 발급
- 다중 도메인 (SAN) 인증서 지원
자동 갱신
- 갱신 시점: 만료 30일 전 자동 갱신
- 체크 간격: 6시간마다 만료 확인
- 갱신 이력: 모든 갱신 시도 기록
스테이징 모드
Let's Encrypt Rate Limit을 피하기 위한 테스트 환경 지원
# .env 설정
ACME_STAGING=true # 스테이징 (테스트)
ACME_STAGING=false # 프로덕션
DNS Provider 지원
DNS-01 챌린지를 위한 다양한 DNS Provider를 지원합니다.
지원 Provider
| Provider | 설정 필드 |
|---|---|
| Cloudflare | API Token 또는 Global API Key |
| Route53 (AWS) | Access Key, Secret Key, Region |
| Google Cloud DNS | Service Account JSON |
| DigitalOcean | API Token |
| Vultr | API Key |
| Linode | Personal Access Token |
Provider 설정
- DNS Provider 생성
- API 자격 증명 입력
- 자격 증명 테스트
- 기본 Provider 설정 (선택)
자격 증명 테스트
Provider 설정 전 연결을 테스트하여 올바른 설정을 확인합니다.
커스텀 인증서
인증서 업로드
기존 인증서를 업로드하여 사용할 수 있습니다.
- 인증서 (cert.pem): 서버 인증서
- 개인 키 (key.pem): 개인 키 파일
- 체인 인증서 (chain.pem): 중간 인증서 (선택)
자체 서명 인증서
테스트 환경을 위한 자체 서명 인증서를 생성합니다.
- 도메인 지정
- 유효 기간 설정
- 즉시 생성
HTTP/3 (QUIC) 지원
프로토콜 지원
| 프로토콜 | 상태 | 특징 |
|---|---|---|
| HTTP/1.1 | 지원 | 기본 호환성 |
| HTTP/2 | 기본 활성화 | 멀티플렉싱, 헤더 압축 |
| HTTP/3 | 지원 | UDP 기반, 빠른 연결 |
HTTP/3 설정
HTTP/3는 UDP 443 포트를 사용합니다.
# docker-compose.yml
ports:
- "443:443/tcp" # HTTP/1.1, HTTP/2
- "443:443/udp" # HTTP/3 (QUIC)
인증서 모니터링
만료 예정 확인
- 만료 30일 이전 인증서 조회
- 대시보드 알림
- 이메일 알림 (설정 시)
인증서 상태
| 상태 | 설명 |
|---|---|
| 유효 | 정상 동작 중 |
| 만료 임박 | 30일 이내 만료 예정 |
| 만료됨 | 인증서 만료 |
| 갱신 실패 | 자동 갱신 실패 |
갱신 이력
모든 인증서 발급 및 갱신 이력이 기록됩니다.
- 발급/갱신 시간
- 성공/실패 여부
- 오류 메시지 (실패 시)
TLS 보안 설정
프로토콜 버전
- TLS 1.2 이상만 허용
- TLS 1.0/1.1 비활성화 (보안 취약)
암호화 스위트
강력한 암호화 알고리즘만 허용합니다.
ECDHE-ECDSA-AES128-GCM-SHA256
ECDHE-RSA-AES128-GCM-SHA256
ECDHE-ECDSA-AES256-GCM-SHA384
ECDHE-RSA-AES256-GCM-SHA384
OCSP Stapling
- 인증서 상태 확인 최적화
- 클라이언트 지연 감소
- 기본 활성화
HSTS (HTTP Strict Transport Security)
HTTPS 사용을 강제합니다.
| 설정 | 설명 |
|---|---|
| max-age | HSTS 유효 기간 (초) |
| includeSubDomains | 서브도메인 포함 |
| preload | HSTS Preload List 등록 |
문제 해결
인증서 발급 실패
-
DNS 설정 확인
- 도메인이 서버 IP를 가리키는지 확인
- DNS 전파 대기 (최대 48시간)
-
DNS Provider 자격 증명 확인
- API 토큰 권한 확인
- Zone 편집 권한 필요
-
Rate Limit 확인
- Let's Encrypt Rate Limit에 도달했는지 확인
- 스테이징 모드로 먼저 테스트
-
로그 확인
docker logs npg-api | grep -i cert
갱신 실패
- DNS Provider 연결 상태 확인
- API 토큰 만료 여부 확인
- 도메인 소유권 확인
SSL 오류
- ERR_CERT_INVALID: 인증서 유효성 확인
- ERR_SSL_VERSION_OR_CIPHER_MISMATCH: TLS 설정 확인
- ERR_CERT_DATE_INVALID: 인증서 만료 확인