
خادم CA مفتوح المصدر لـ TPM device-attest-01
attezt هي مجموعة من أدوات التصديق عن بُعد.
توفّر عدة مكوّنات تتيح لأنظمة Linux الحصول على شهادات أجهزة مدعومة عتاديًا عبر تحدّي ACME من نوع device-attest-01. هذا مفيد في البيئات التي تحتاج فيها إلى ادّعاء هوية جهاز قوي لأشياء مثل شهادات x509 المستخدمة في إعدادات mTLS.
وهي تدعم حاليًا smallstep، لكن لديها أيضًا تطبيق عميل خاص بها لإدارة شهادات الأجهزة.
يوفّر atteztd جهة إصدار شهادات التصديق (Attestation Certificate Authority). ولديها واجهة برمجة تطبيقات لجرد المخزون الخلفي قادرة على الاستعلام عن إعداد CMDB لجرد الأجهزة والتحقق من صحتها.
يوفّر attezt-agent وكيل عميل يمكنه تقديم شهادة TPM عبر وكيل PKCS11. يمكن استخدام هذا الوكيل لأشياء مثل 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
لجعل هذا مرئيًا للمتصفح، تحتاج إلى إضافة 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