本文へスキップ
ecdsa.com

SSH 証明書

OpenSSH 独自の署名付きステートメント(X.509 ではありません)で、認証局の鍵がユーザーまたはホストの公開鍵をプリンシパル、有効期間、オプションに結び付けます。これにより、個々の鍵を配布する必要がなくなります。
別表記OpenSSH certificateSSH CATrustedUserCAKeyscert-authority

OpenSSH の PROTOCOL.certkeys で定義されています。ssh-ed25519-cert-v01@openssh.com などの鍵タイプは、公開鍵、シリアル番号、ユーザーまたはホストの種別、鍵 ID、有効なプリンシパル(ユーザー名またはホスト名)、valid after と valid before の時刻、クリティカルオプション(force-command、source-address)、拡張(permit-pty、permit-port-forwarding)を保持します。証明書は ssh-keygen -s ca_key -I id -n alice -V +8h user_key.pub で発行できます。

サーバーは TrustedUserCAKeys でユーザー証明書を信頼し(必要に応じて AuthorizedPrincipalsFile でプリンシパルを対応付けます)、クライアントは known_hosts の @cert-authority 行でホスト証明書を信頼します。失効には鍵失効リスト(RevokedKeys)を使いますが、step-ca、Teleport、Vault のように、SSO と統合した CA が短い有効期間(数時間)の証明書を発行する設計が一般的です。

X.509 と異なりチェーンはなく、各証明書は CA の鍵で直接署名されます。そのため CA の鍵は、ルートと同じように保護しなければなりません。

規格と参考文献

すべての用語