
オープンソースのTPM device-attest-01 CAサーバー
attezt はリモート認証ツール群です。
Linux システムが device-attest-01 ACME チャレンジを通じてハードウェアに裏付けられたデバイス証明書を持てるようにする、いくつかのコンポーネントを提供します。これは、mTLS 構成で使用する x509 証明書など、強力なデバイス ID の主張が必要な環境で役立ちます。
現在 smallstep をサポートしていますが、デバイス証明書を管理するための独自のクライアント実装も持っています。
atteztd は認証局 (Attestation Certificate Authority) を提供します。デバイスインベントリのために CMDB 構成を照会し、デバイスを検証できるバックエンドインベントリ API を備えています。
attezt-agent は、TPM 証明書を PKCS11 エージェント経由で提供できるクライアントエージェントを提供します。このエージェントは、ブラウザ経由の mTLS などで真正性を証明するために使用できます。
attezt は attezt-agent と atteztd のデプロイを管理するプログラムです。デバイスの登録状況の確認、証明書のプロビジョニング、または認証局の管理を行うことができます。
このプロジェクト全体は WIP であり、どこまで機能が完成するかは不明です。
attezt には small CA チェーンが必要です。これは attezt で作成します。
λ » attezt ca create
atteztd は認証サーバーを実行します。これはチャレンジを解決できる証明書に署名することに注意してください。
λ » atteztd
2025/12/22 23:13:31 HTTP server listening on :8080
プロバイダーを step-ca に追加します。
λ ~ » curl -O http://127.0.0.1:8080/root.pem
λ ~ » step ca provisioner add acme-da \
--type ACME \
--challenge device-attest-01 \
--attestation-format tpm \
--attestation-roots ./root.pem
step ca でデバイス証明書を発行するこのサービスを step ca certificate で使用するには、以下と同様のコマンドを実行します。
# Device certificate attested by ak
λ » step ca certificate \
--attestation-ca-url 'http://127.0.0.1:8080' \
--attestation-uri 'tpmkms:name=device' \
--provisioner acme-da $(hostname) device.crt device.crt
デバイス証明書を更新することもできます。
λ » step ca renew --force --kms "tpmkms" ./device.crt 'tpmkms:name=device'
attezt-agent でデバイス証明書を発行するattezt-agent を実行します。
λ » sudo attezt-agent
2026/03/15 16:33:55 p11kit-server is running
2026/03/15 16:33:55 export P11_KIT_SERVER_ADDRESS=unix:path=/run/attezt/p11kit.socket
2026/03/15 16:33:55 varlink service is running
2026/03/15 16:33:55 Running at: /run/attezt/dev.attezt.Agent
enroll は登録手続きを実行し、デバイス証明書を取得します。
λ » attezt status
Status:
Endorsement Key: 2ea8888a4a935bfd418e6a700785655b0d2711abc52e71f1dbeeee03e9650396
Enrollment status: false
λ » attezt enroll --acme "https://ca.home.arpa/acme/acme-da" --attestation "http://attezt.local:8080"
λ » attezt status
Status:
Endorsement Key: 2ea8888a4a935bfd418e6a700785655b0d2711abc52e71f1dbeeee03e9650396
Enrollment status: true
ACME Server: https://ca.home.arpa/acme/acme-da
Attestation Server: http://attezt.local:8080
Certificate chain:
X.509v3 TLS Certificate (RSA 2048) [Serial: 1433...6348]
Subject: framework
Issuer: Linderud Internal CA Intermediate CA
Provisioner: acme-da
Valid from: 2026-03-15T15:35:31Z
to: 2026-03-16T15:35:31Z
X.509v3 Intermediate CA Certificate (ECDSA P-256) [Serial: 3050...3071]
Subject: Linderud Internal CA Intermediate CA
Issuer: Linderud Internal CA Root CA
Valid from: 2026-01-03T15:15:45Z
to: 2036-01-01T15:15:45Z
これをブラウザから見えるようにするには、p11-kit-client.so を nss データベースに追加し、そのドメイン用のブラウザポリシーを作成する必要があります。
λ » modutil -dbdir ~/.pki/nssdb -add attezt -libfile /usr/lib/pkcs11/p11-kit-client.so
λ » export P11_KIT_SERVER_ADDRESS=unix:path=/run/attezt/p11kit.sock
ポリシーの例。
# cat /etc/chromium/policies/managed/mtls.json
{
"AutoSelectCertificateForUrls": [
"{\"pattern\":\"https://example.com\",\"filter\":{\"ISSUER\":{\"O\":\"My Internal CA\"}}}"
]
}
chromium を起動して、新しいクライアント証明書を楽しんでください。
λ » chromium