
Un server CA TPM device-attest-01 open source
attezt è una suite di strumenti per l'attestazione remota.
Fornisce diversi componenti che consentono ai sistemi Linux di disporre di certificati di dispositivo con supporto hardware tramite la challenge ACME device-attest-01. Questo è utile per ambienti in cui si desidera una forte attestazione dell'identità del dispositivo per cose come i certificati x509 utilizzati per configurazioni mTLS.
Attualmente supporta smallstep, ma dispone anche di una propria implementazione client per amministrare i certificati di dispositivo.
atteztd fornisce un'Autorità di Certificazione per l'Attestazione. Dispone di un'API di inventario backend in grado di interrogare una configurazione CMDB per l'inventario dei dispositivi e convalidare i dispositivi.
attezt-agent fornisce un agente client che può servire il certificato TPM tramite un agente PKCS11. Questo agente può essere utilizzato per cose come mTLS tramite browser per certificare l'autenticità.
attezt è il programma per gestire i deployment di attezt-agent e atteztd. Consente di verificare l'enrollment del dispositivo, effettuare il provisioning dei certificati. Oppure amministrare l'autorità di certificazione per l'attestazione.
L'intero progetto è un WIP, non è chiaro quanto sarà completo in termini di funzionalità.
attezt necessita di una catena CA small. Creala con attezt.
λ » attezt ca create
atteztd esegue il server di attestazione. Nota che firmerà qualsiasi certificato in grado di risolvere la challenge.
λ » atteztd
2025/12/22 23:13:31 HTTP server listening on :8080
Aggiungi il provider in 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 caPer utilizzare questo servizio con step ca certificate puoi eseguire qualcosa di simile a quanto segue.
# 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
Puoi anche rinnovare un certificato di dispositivo.
λ » step ca renew --force --kms "tpmkms" ./device.crt 'tpmkms:name=device'
attezt-agentEsegui 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 esegue la procedura di enrollment e acquisisce un certificato di dispositivo.
λ » 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
Per renderlo visibile a un browser, devi aggiungere p11-kit-client.so nel database nss e creare una policy del browser per il dominio.
λ » 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
Policy di esempio.
# cat /etc/chromium/policies/managed/mtls.json
{
"AutoSelectCertificateForUrls": [
"{\"pattern\":\"https://example.com\",\"filter\":{\"ISSUER\":{\"O\":\"My Internal CA\"}}}"
]
}
Avvia chromium e goditi i tuoi nuovi certificati client.
λ » chromium