
Um servidor CA TPM device-attest-01 de código aberto
attezt é um conjunto de ferramentas de atestação remota.
Ele fornece vários componentes que permitem que sistemas Linux tenham certificados de dispositivo com respaldo de hardware por meio do desafio ACME device-attest-01. Isso é útil para ambientes onde você deseja uma forte afirmação de identidade de dispositivo para coisas como certificados x509 usados em configurações de mTLS.
Atualmente, ele suporta smallstep, mas também possui sua própria implementação de cliente para administrar certificados de dispositivo.
atteztd fornece uma Autoridade de Certificação de Atestação. Ele possui uma API de inventário de backend capaz de consultar uma configuração de CMDB para inventário de dispositivos e validar dispositivos.
attezt-agent fornece um agente cliente que pode servir o certificado TPM por meio de um agente PKCS11. Este agente pode ser usado para coisas como mTLS em navegadores para certificar autenticidade.
attezt é o programa para gerenciar implantações de attezt-agent e atteztd. Ele permite verificar o registro do dispositivo, provisionar certificados. Ou administrar a autoridade de certificação de atestação.
Todo este projeto é um WIP, incerto quão completo em recursos ele será.
attezt precisa de uma cadeia de CA pequena. Crie-a com attezt.
λ » attezt ca create
atteztd executa o servidor de atestação. Observe que isso assinará quaisquer certificados capazes de resolver o desafio.
λ » atteztd
2025/12/22 23:13:31 HTTP server listening on :8080
Adicione o provedor ao 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 serviço com step ca certificate, você pode executar algo semelhante ao abaixo.
# 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
Você também pode renovar um certificado de dispositivo.
λ » step ca renew --force --kms "tpmkms" ./device.crt 'tpmkms:name=device'
attezt-agentExecute o 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 executa o procedimento de registro e adquire um 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 tornar isso visível para um navegador, você precisa adicionar o p11-kit-client.so ao banco de dados nss e criar uma política de navegador para o domínio.
λ » 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
Exemplo de política.
# cat /etc/chromium/policies/managed/mtls.json
{
"AutoSelectCertificateForUrls": [
"{\"pattern\":\"https://example.com\",\"filter\":{\"ISSUER\":{\"O\":\"My Internal CA\"}}}"
]
}
Inicie o chromium e aproveite seus novos certificados de cliente.
λ » chromium