
Открытый CA-сервер для TPM device-attest-01
attezt — это набор инструментов для удалённой аттестации.
Он предоставляет несколько компонентов, которые позволяют Linux-системам иметь аппаратно подтверждённые сертификаты устройств через ACME-задачу device-attest-01. Это полезно в средах, где требуется строгое подтверждение идентичности устройства, например для x509-сертификатов, используемых в конфигурациях mTLS.
В настоящее время поддерживается smallstep, но также имеется собственная клиентская реализация для управления сертификатами устройств.
atteztd предоставляет удостоверяющий центр аттестации (Attestation Certificate Authority). Он имеет серверный API инвентаризации, который способен запрашивать CMDB для инвентаризации устройств и проверять устройства.
attezt-agent предоставляет клиентский агент, который может предоставлять сертификат TPM через агент PKCS11. Этот агент можно использовать, например, для mTLS через браузеры для подтверждения подлинности.
attezt — это программа для управления развёртываниями attezt-agent и atteztd. Она позволяет проверять регистрацию устройства, выдавать сертификаты. Или администрировать удостоверяющий центр аттестации.
Весь этот проект находится в стадии разработки, неизвестно, насколько полно он будет реализован.
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