このプロジェクトについて
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、設定可能なエンドポイントによるS3互換オブジェクトストレージ(Hetzner、Contabo、OVHcloud、Scaleway、Exoscale、Wasabi、MinIO、AWS)。バックエンド間の移行がサポートされています。
- 通知と自動化:メール(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)はターミナルからライフサイクルをカバー:ヘルス、証明書作成/一覧/情報、監査検証。これはcertmate-sdk(同じREST API用のhttpxベースのPythonクライアント)の薄いラッパーです。
- mcp/ディレクトリ(Node.js >= 20)のファーストパーティModel Context Protocolサーバーは、インベントリ、ライフサイクル操作、配信のための16ツールを公開し、MCP対応アシスタントが同じ認証と監査証跡でAPIを駆動できます。READMEでは、エージェントアクションがactor.kind="agent"として記録されるように、is_agent: trueで作成されたスコープ付きキーを推奨しています。
- ワンURL証明書ダウンロードと個別コンポーネントダウンロード(証明書、キー、チェーン、フルチェーン)をPEMまたはZIP形式で提供。Python、Bash、Ansible、Terraform用のSDK例も含まれます。
アーキテクチャに関する注意
CertMateは単一インスタンスとして実行されます:更新スケジューラーはWebプロセス内に存在するため、2番目のレプリカは同じストアに対して発行する2番目のスケジューラーを意味し、重複するACME注文とCAの重複証明書レート制限を引き起こします。Helmチャートは1つ以上のレプリカのレンダリングを拒否します。スケールアップは可能ですがスケールアウトはできません;可用性はアクティブ/スタンバイと共有ストレージのフェイルオーバーで処理されます。
エコシステムの関連プロジェクトには、certmate-tools(ブラウザベースのTLS/ACME診断)、certmate-agent(REST APIにマッピングされドキュメントに対するRAGを持つローカルLLMアシスタント)、nis2-public(NIS2態勢管理)があります。ソース利用可能なエンタープライズ版(CertMate-ng、BSL 1.1)は、マルチテナント、mTLS、ホワイトラベル、NIS2準拠のデプロイをカバーします。
クイックスタートはDocker Composeを使用:リポジトリをクローンし、.env.exampleを.envにコピーし、API_BEARER_TOKENを設定し(インスタンスを公開する前に推奨。未設定のインスタンスは到達可能な誰にでも初回セットアップバイパスを提供するため)、Cloudflareを使用する場合はCLOUDFLARE_TOKENを設定し、スタックを起動します。他のDNSプロバイダーは環境変数ではなくWeb UIまたはAPIで設定します。プロジェクトはMITライセンスで、Python 3.12で書かれています。
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.