
Un servidor CA TPM device-attest-01 de código abierto
attezt es un conjunto de herramientas de atestación remota.
Proporciona varios componentes que permiten a los sistemas Linux tener certificados de dispositivo respaldados por hardware mediante el desafío ACME device-attest-01. Esto es útil para entornos donde se desea una afirmación sólida de identidad del dispositivo para cosas como certificados x509 utilizados en configuraciones de mTLS.
Actualmente es compatible con smallstep, pero también tiene su propia implementación de cliente para administrar certificados de dispositivo.
atteztd proporciona una Autoridad de Certificación de Atestación. Tiene una API de inventario backend que es capaz de consultar una configuración de CMDB para el inventario de dispositivos y validar dispositivos.
attezt-agent proporciona un agente cliente que puede servir el certificado TPM a través de un agente PKCS11. Este agente puede usarse para cosas como mTLS a través de navegadores para certificar autenticidad.
attezt es el programa para gestionar despliegues de attezt-agent y atteztd. Permite verificar el enrolamiento del dispositivo, aprovisionar certificados. O administrar la autoridad de certificación de atestación.
Todo este proyecto es un WIP, no se sabe qué tan completo en funcionalidades estará.
attezt necesita una cadena de CA pequeña. Créala con attezt.
λ » attezt ca create
atteztd ejecuta el servidor de atestación. Ten en cuenta que firmará cualquier certificado que sea capaz de resolver el desafío.
λ » atteztd
2025/12/22 23:13:31 HTTP server listening on :8080
Añade el proveedor en 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 caPara usar este servicio con step ca certificate puedes ejecutar algo similar a lo siguiente.
# 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
También puedes renovar un certificado de dispositivo.
λ » step ca renew --force --kms "tpmkms" ./device.crt 'tpmkms:name=device'
attezt-agentEjecuta el 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 ejecuta el procedimiento de enrolamiento y adquiere un certificado de 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
Para hacer esto visible para un navegador, necesitas añadir el p11-kit-client.so en la base de datos nss, y crear una política de navegador para el 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
Política de ejemplo.
# cat /etc/chromium/policies/managed/mtls.json
{
"AutoSelectCertificateForUrls": [
"{\"pattern\":\"https://example.com\",\"filter\":{\"ISSUER\":{\"O\":\"My Internal CA\"}}}"
]
}
Inicia chromium y disfruta de tus nuevos certificados de cliente.
λ » chromium