SIGN-EFI-SIG-LIST(1) User Commands SIGN-EFI-SIG-LIST(1)

sign-efi-sig-list - ابزار امضای متغیرهای امن به صورت فهرست‌های امضای EFI

sign-efi-sig-list [-r] [-m] [-a] [-g <guid>] [-o] [-t <timestamp>] [-i <infile>] [-c <crt file>] [-k <key file>] [-e <engine>] <var> <efi sig list file> <output file>

تولید یک فایل خروجی همراه با هدر احراز هویت جهت به‌روزرسانی مستقیم متغیرهای امن (secure variables). این خروجی می‌تواند مستقیماً با کلیدهای معمول امضا شود یا برای امضای خارجی با استفاده از گزینه‌های -o و -i تفکیک گردد.

گواهی به جای x509 از نوع rsa2048 است [پیاده‌سازی نشده]
استفاده از شمارش یکنواخت (monotonic count) به جای برچسب زمانی [پیاده‌سازی نشده]
آماده‌سازی متغیر برای APPEND_WRITE به جای جایگزینی کامل
امضا نکردن، بلکه خروجی دادن فایلی از بسته دقیقی که باید امضا شود
استفاده از <timestamp> به عنوان برچسب زمانی به‌روزرسانی زمان‌دار متغیر. در صورت عدم تعیین، برچسب زمانی از ساعت سیستم گرفته خواهد شد. توجه داشته باشید که هنگام انجام امضای مجزا (detached signing) باید الزاماً از این گزینه استفاده کنید؛ در غیر این صورت به دلیل عدم تطابق برچسب‌های زمانی، امضا نامعتبر خواهد بود.
دریافت یک امضای مجزا (در قالب PEM) از بسته تولیدشده توسط گزینه -o و تکمیل ساخت فایل به‌روزرسانی
استفاده از <guid> به عنوان شناسه یکتای مالک امضا (GUID)
فایل <crt> حاوی گواهی امضا در قالب PEM است
فایل <key> حاوی کلید اختصاصی برای <crt> در قالب PEM است
استفاده از موتور openssl با نام <engine> برای کلید خصوصی

برای امضای یک به‌روزرسانی افزایشی ساده روی db که به عنوان یک فهرست امضای EFI در DB.esl آماده شده است و تولید خروجی نتیجه همراه با هدر احراز هویت در DB.auth:

sign-efi-sig-list -a -c KEK.crt -k KEK.key db DB.esl DB.auth

برای انجام امضای مجزا به همان روش:

sign-efi-sig-list -a -t 'Jul 21 09:39:37 BST 2012' -o db DB.esl DB.forsig

اکنون فایل DB.forsig را با روش استاندارد openssl امضا کنید. توجه داشته باشید که استانداردها به الگوریتم امضای sha256 نیاز دارند:

openssl smime -sign -binary -in DB.forsig -out DB.signed -signer KEK.crt -inkey KEK.key -outform DER -md sha256

این دستور یک امضای مجزای PKCS7 در DB.signed تولید می‌کند. حال این فایل را با یادآوری حفظ همان برچسب زمانی (و سوییچ -a) مجدداً به برنامه بدهید:

sign-efi-sig-list -a -i DB.signed -t 'Jul 21 09:39:37 BST 2012' db DB.auth

برای حذف یک کلید، کافی است یک فایل فهرست امضای EFI خالی را امضا کنید؛ بنابراین برای تولید یک به‌روزرسانی متغیر که PK را حذف می‌کند:

> null.esl

و سپس آن را به روش استاندارد امضا کنید (نباید یک به‌روزرسانی از نوع نوشتن افزایشی باشد):

sign-efi-sig-list -c PK.crt -k PK.key PK null.esl PK.auth

هنگامی که فایل .auth به پلتفرم UEFI منتقل شد، می‌توانید از برنامه UpdateVars.efi برای اعمال آن استفاده کنید:

UpdateVars [-a] db DB.auth

که در آن در صورتی که فایل DB.auth به عنوان یک به‌روزرسانی نوشتن افزایشی (append write) ایجاد شده باشد سوییچ -a باید درج شود، و اگر متغیر جایگزین می‌شود باید حذف گردد.

برای جزئیات مربوط به نحوه تولید فهرست‌های امضای EFI، به cert-to-efi-sig-list(1) مراجعه کنید.

January 2026 sign-efi-sig-list 1.9.2