
오픈소스 TPM device-attest-01 CA 서버
attezt는 원격 증명(remote attestation) 도구 모음입니다.
Linux 시스템이 device-attest-01 ACME 챌린지를 통해 하드웨어 기반 장치 인증서를 가질 수 있도록 하는 여러 구성 요소를 제공합니다. 이는 mTLS 설정에 사용되는 x509 인증서와 같이 강력한 장치 신원 주장이 필요한 환경에 유용합니다.
현재 smallstep을 지원하지만, 장치 인증서를 관리하기 위한 자체 클라이언트 구현도 가지고 있습니다.
atteztd는 증명 인증 기관(Attestation Certificate Authority)을 제공합니다. 장치 인벤토리를 위해 CMDB 설정을 쿼리하고 장치를 검증할 수 있는 백엔드 인벤토리 API를 가지고 있습니다.
attezt-agent는 PKCS11 에이전트를 통해 TPM 인증서를 제공할 수 있는 클라이언트 에이전트를 제공합니다. 이 에이전트는 브라우저를 통한 mTLS와 같이 진위성을 인증하는 데 사용할 수 있습니다.
attezt는 attezt-agent와 atteztd 배포를 관리하는 프로그램입니다. 장치의 등록 상태를 확인하고, 인증서를 프로비저닝할 수 있습니다. 또는 증명 인증 기관을 관리할 수 있습니다.
이 전체 프로젝트는 WIP(작업 진행 중)이며, 얼마나 기능이 완성될지는 불확실합니다.
attezt는 작은 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
브라우저에서 이것을 볼 수 있게 하려면 nss 데이터베이스에 p11-kit-client.so를 추가하고 도메인에 대한 브라우저 정책을 만들어야 합니다.
λ » 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