프로젝트 소개
CertMate는 자체 호스팅 인증서 수명주기 관리 플랫폼입니다. ACME를 통해 TLS 인증서를 발급하고 갱신하며, 자체적으로 발급하지 않은 인증서도 발견하고, 인프라 전반에 존재하는 인증서(어디서 제공되는지, 발급자, 만료일, 사용 암호화)를 단일 인벤토리로 유지하며, 갱신된 인증서를 필요한 곳에 배포합니다. 29개 DNS 제공업체를 지원하고, 내부 이름용 프라이빗 CA를 자체 운영하며, 변조 방지 감사 추적을 유지하고, 모든 기능을 REST API로 노출합니다.
핵심 기능
- 인증서 관리: 여러 CA 제공업체(Let's Encrypt 스테이징 포함, ZeroSSL, Google Trust Services, Actalis, EAB 지원 DigiCert ACME, Sectigo, SSL.com, 프라이빗 CA), 와일드카드 및 다중 도메인 SAN 인증서, CNAME 위임을 통한 DNS 별칭, 만료 30일 전 자동 갱신, 인증서별 CA 선택, 실시간 검증, 관리 대상 이름이 여전히 해석되고 응답하는지 확인하는 멀티스레드 좀비 인증서 스캐너를 포함합니다.
- DNS 제공업체: Cloudflare, AWS Route53, Azure DNS, Google Cloud DNS, DigitalOcean, PowerDNS, EfficientIP SOLIDserver, RFC2136, Linode, Akamai Edge DNS, Gandi, OVH, Namecheap, Vultr, DNS Made Easy, NS1, Hetzner(레거시 및 Cloud), Porkbun, GoDaddy, Hurricane Electric, Dynu, ArvanCloud, Infomaniak, ACME-DNS, Scaleway, deSEC, DuckDNS 및 사용자 정의 스크립트 훅. 주요 제공업체는 다중 계정 지원이 있습니다. README는 가용성 등급을 문서화합니다: 안정(requirements.txt에 고정), 확장 이미지, 별도 설치, 사용 불가(Namecheap은 PyPI 플러그인이 Python 2.7-3.8만 대상으로 하며 Python 3.12의 certbot 2.x와 호환되지 않음).
- 엔터프라이즈 기능: 3계층 RBAC(뷰어, 운영자, 관리자), 키별 역할 및 선택적 만료가 있는 범위 지정 API 키, 다중 계정 관리, Swagger/OpenAPI 문서가 있는 REST API, Tailwind/Alpine 웹 대시보드, 안내 설정 마법사, SSE 실시간 업데이트, Docker 및 Kubernetes 지원, 상태 확인, Prometheus 메트릭 및 구조화된 JSON 로깅.
- 스토리지 백엔드: 로컬 파일시스템(600/700 권한), Azure Key Vault, AWS Secrets Manager, HashiCorp Vault, Infisical, 구성 가능한 엔드포인트(Hetzner, Contabo, OVHcloud, Scaleway, Exoscale, Wasabi, MinIO, AWS)를 통한 S3 호환 객체 스토리지. 백엔드 간 마이그레이션 지원.
- 알림 및 자동화: 이메일(SMTP), Slack, Discord, Google Chat, Telegram, ntfy, Gotify 및 SHA-256 HMAC 서명이 있는 일반 웹훅; 발급 후 셸 명령을 실행하는 배포 훅; 14/7/3/1일 만료 경고 및 60/30/14/7/1일 도메인 만료 경고; 주간 요약 이메일.
- 백업 및 복구: 설정 및 인증서의 원자적 스냅샷, 변경 시 자동 백업, UI 또는 API를 통한 수동 백업, 유형별 최근 50개 아카이브 보관 및 30일보다 오래된 항목 삭제, 다운로드/내보내기 및 복원.
- 보안: 베어러 토큰 인증, 파일 권한, 타임라인 보기가 있는 감사 로깅, 환경 변수 자격 증명 관리, 속도 제한 인식, 민감한 매개변수, 개인 키 및 API 토큰을 삭제하는 로그 정리기.
인터페이스
- certmate-cli(pip install certmate-cli)는 터미널에서 수명주기를 다룹니다: 상태, 인증서 생성/목록/정보, 감사 확인. 이는 동일한 REST API용 httpx 기반 Python 클라이언트인 certmate-sdk 위의 얇은 계층입니다.
- mcp/ 디렉토리의 자사 Model Context Protocol 서버(Node.js >= 20)는 인벤토리, 수명주기 작업 및 배포를 위한 16개 도구를 노출하므로 MCP 지원 어시스턴트가 동일한 인증 및 감사 추적으로 API를 구동할 수 있습니다. README는 is_agent: true로 생성된 범위 키를 권장하여 에이전트 작업이 actor.kind="agent"로 기록되도록 합니다.
- 단일 URL 인증서 다운로드 및 개별 구성 요소 다운로드(인증서, 키, 체인, 전체 체인)를 PEM 또는 ZIP 형식으로 제공하며, Python, Bash, Ansible 및 Terraform용 SDK 예제도 포함합니다.
아키텍처 참고
CertMate는 단일 인스턴스로 실행됩니다: 갱신 스케줄러가 웹 프로세스 내부에 있으므로 두 번째 복제본은 동일한 저장소에 대해 발급하는 두 번째 스케줄러를 의미하여 중복 ACME 주문 및 CA 중복 인증서 속도 제한을 초래합니다. Helm 차트는 둘 이상의 복제본 렌더링을 거부합니다. 수평 확장이 아닌 수직 확장을 하며, 가용성은 활성/대기 및 공유 스토리지 장애 조치로 처리됩니다.
생태계의 관련 프로젝트로는 certmate-tools(브라우저 기반 TLS/ACME 진단), certmate-agent(문서에 대한 RAG로 REST API에 매핑된 로컬 LLM 어시스턴트), nis2-public(NIS2 자세 관리)이 있습니다. 소스 제공 엔터프라이즈 에디션(CertMate-ng, BSL 1.1)은 멀티 테넌트, mTLS, 화이트 라벨 및 NIS2 정렬 배포를 다룹니다.
빠른 시작은 Docker Compose를 통합니다: 저장소를 클론하고, .env.example을 .env로 복사하고, API_BEARER_TOKEN을 설정하고(인스턴스를 노출하기 전에 권장, 구성되지 않은 인스턴스는 도달할 수 있는 모든 사람에게 첫 실행 설정 우회를 제공하므로), Cloudflare를 사용하는 경우 CLOUDFLARE_TOKEN을 구성하고 스택을 시작합니다. 다른 DNS 제공업체는 환경 변수가 아닌 웹 UI 또는 API에서 구성됩니다. 프로젝트는 MIT 라이선스이며 Python 3.12로 작성되었습니다.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.