Automate Certificates ドキュメント

ターゲット、エージェント、Webhook

ターゲットとは、証明書をインストールする場所のことです。Automate Certificates は、未管理の証明書をスキャンしたり、イベントを独自のツールに送信したりすることもできます。

ターゲットの種類

Business と MSP プランは21種類すべてのターゲットに対応します。Team は5ターゲットまで対応します。

カスタム API ターゲット

エンドポイントは https:// の URL である必要があります。リクエストに秘密鍵が含まれるため、http:// のエンドポイントは拒否されます。

Linux エージェント

エージェントは、Linux ホスト用の小さな Python 3 サービスです。Automate Certificates は、https のみで、エージェントキーを使って証明書を送ります。ファイルの保存先とサービスのリロード方法は、インストール時にホストで設定され、リクエストから取得されることはありません。インストーラーには systemd が必要です。

  1. 長いランダムなキーを作成します。例:openssl rand -hex 32。32文字以上である必要があります。
  2. ホスト上で root としてインストーラーをダウンロードして実行します。キーと、サービス用のパスを指定します。
  3. Automate Certificates で、エージェントの URL(https://<host>:8443)と同じキーを指定してターゲットを作成します。
curl -fsSL https://api.automate-certificates.com/v1/agent/install/linux -o install-agent.sh
sudo CERTAI_AGENT_KEY="$(openssl rand -hex 32)" \
     CERTAI_CERT_PATH=/etc/nginx/tls/site.crt \
     CERTAI_KEY_PATH=/etc/nginx/tls/site.key \
     CERTAI_RELOAD_COMMAND="systemctl reload nginx" \
     bash install-agent.sh

キーを一度だけ表示して保存してください。ターゲットには同じ値が必要です。インストーラーは root のみが読める設定ファイルを /etc/automate-certificates/agent.json に書き込み、systemd ユニット automate-certificates-agent を起動します。エージェントは https のみで応答し、正しいキーのないリクエストには 401 を返します。エージェントは CERTAI_CERT_PATH(または CERTAI_TLS_CERT と CERTAI_TLS_KEY)の証明書を使って https を提供するため、インストール前にそのファイルが存在している必要があります。デフォルトのポートは 8443(CERTAI_PORT)です。

Windows エージェント

Windows エージェントは、Windows ホスト用の PowerShell サービスです。Automate Certificates は、https のみで、エージェントキーを使って証明書を送ります。ファイルの保存先とその後に実行される処理は、インストール時にホストで設定され、リクエストから取得されることはありません。インストーラーには PowerShell 7.4 以降(pwsh)が必要で、管理者として実行する必要があります。

  1. 32文字以上のキーを作成します。例:下のブロックにある PowerShell コマンドを使います。
  2. インストーラーをダウンロードし、管理者として実行します。キーと、サービス用のパスを指定します。
  3. Windows ファイアウォールで、Automate Certificates からの受信 TCP ポート 8443 を許可します。インストーラーはこのポートを開きません。
  4. Automate Certificates で、エージェントの URL(https://<host>:8443)と同じキーを指定してターゲットを作成します。
Invoke-WebRequest https://api.automate-certificates.com/v1/agent/install/windows -OutFile install-agent.ps1
$env:CERTAI_AGENT_KEY = [Convert]::ToHexString([Security.Cryptography.RandomNumberGenerator]::GetBytes(32))
$env:CERTAI_CERT_PATH = 'C:\certs\site.crt'; $env:CERTAI_KEY_PATH = 'C:\certs\site.key'
$env:CERTAI_CERT_STORE = 'My'; $env:CERTAI_RELOAD_COMMAND = '& C:\scripts\bind-certificate.ps1'
pwsh -NoProfile -ExecutionPolicy Bypass -File install-agent.ps1

キーを保存してください。ターゲットには同じ値が必要です。インストーラーは、エージェントを AutomateCertificatesAgent という名前のスケジュールされたタスクとして登録し、SYSTEM として実行します。設定は C:\ProgramData\AutomateCertificates に保存されます。エージェントは https のみで応答し、正しいキーのないリクエストには 401 を返します。インストーラーの設定は次のとおりです。

設定内容
CERTAI_AGENT_KEY必須。32文字以上。ターゲットには同じキーが必要です。
CERTAI_CERT_PATH, CERTAI_KEY_PATHデプロイされた各証明書とキーを PEM 形式で書き込む場所。デフォルトのフォルダーは C:\ProgramData\AutomateCertificates\certs です。
CERTAI_CERT_STOREMy などの LocalMachine 証明書ストア。各証明書はここにもインポートされます。
CERTAI_RELOAD_COMMANDデプロイのたびに実行される PowerShell。CERTAI_CERT_PATH、CERTAI_KEY_PATH、CERTAI_THUMBPRINT が設定されます。例:新しい証明書を IIS にバインドする場合。終了コードが 0 以外の場合、デプロイは失敗します。
CERTAI_PORTエージェントが待ち受けるポート。デフォルトは 8443 です。
CERTAI_TLS_CERT, CERTAI_TLS_KEYエージェント自身の https 証明書。デフォルトでは、エージェントが管理する証明書とキーを使います。これらは PEM 形式で既に存在し、マシンのホスト名に対して有効である必要があります。キーも含む証明書ファイルには、キーファイルは不要です。

キーファイルは、デプロイのたびに、SYSTEM と管理者のみが読み取れる状態になります。キーを読み取る必要があるサービスには、リロードコマンドでアクセス権を付与します。例:

icacls "C:\certs\mongo.pem" /grant "NT SERVICE\MongoDB:R"; Restart-Service MongoDB

管理される証明書の有効期限が切れると、Automate Certificates はエージェントに接続できなくなります。これを避けるには、CERTAI_TLS_CERT と CERTAI_TLS_KEY を、別の有効期間の長い証明書に向けます。ポートを開くには、インストーラーが表示する次のルールを実行します。

New-NetFirewallRule -DisplayName 'Automate Certificates agent' -Direction Inbound -Protocol TCP -LocalPort 8443 -Action Allow

ディスカバリー

スキャンは、インベントリにない証明書を見つけます。対象は、Azure テナントのスキャン、AWS と GCP のスキャン、公開ドメインのネットワークスキャンです。スキャンはプランの1日あたりのスキャン上限に含まれ、開始には管理者権限が必要です。

Webhook

アラートページで Webhook を追加すると、イベントを独自のツールに送信できます。イベントには cert.issued、cert.expiring、cert.issue_failed、cert.renew_failed、cert.renewal_dns_required、deployment.success、deployment.failed があります。各リクエストには署名が付きます。ヘッダー X-Automate-Certificates-Signature には、sha256= と、Webhook の作成時に一度だけ表示されるシークレットで作成した本文の HMAC が入ります。

MCP

MCP ツールはまだ製品からインストールできないため、現時点では製品の一部ではありません。