| OPENSSL-TS(1ssl) | OpenSSL | OPENSSL-TS(1ssl) |
نام (NAME)
openssl-ts - دستور مرجع برچسبگذاری زمانی (TSA)
خلاصه دستور (SYNOPSIS)
openssl ts -help
openssl ts -query [-config configfile] [-data file_to_hash] [-digest digest_bytes] [-digest] [-tspolicy object_id] [-no_nonce] [-cert] [-in request.tsq] [-out request.tsq] [-text] [-rand files] [-writerand file] [-provider name] [-provider-path path] [-provparam [name:]key=value] [-propquery propq]
openssl ts -reply [-config configfile] [-section tsa_section] [-queryfile request.tsq] [-passin password_src] [-signer tsa_cert.pem] [-inkey filename|uri] [-digest] [-chain certs_file.pem] [-tspolicy object_id] [-in response.tsr] [-token_in] [-out response.tsr] [-token_out] [-text] [-engine id] [-provider name] [-provider-path path] [-provparam [name:]key=value] [-propquery propq]
openssl ts -verify [-data file_to_hash] [-digest digest_bytes] [-queryfile request.tsq] [-in response.tsr] [-token_in] [-untrusted files|uris] [-CAfile file] [-CApath dir] [-CAstore uri] [-allow_proxy_certs] [-attime timestamp] [-no_check_time] [-check_ss_sig] [-crl_check] [-crl_check_all] [-explicit_policy] [-extended_crl] [-ignore_critical] [-inhibit_any] [-inhibit_map] [-partial_chain] [-policy arg] [-policy_check] [-policy_print] [-purpose purpose] [-suiteB_128] [-suiteB_128_only] [-suiteB_192] [-trusted_first] [-no_alt_chains] [-use_deltas] [-auth_level num] [-verify_depth num] [-verify_email email] [-verify_hostname hostname] [-verify_ip ip] [-verify_name name] [-x509_strict] [-issuer_checks] [-provider name] [-provider-path path] [-provparam [name:]key=value] [-propquery propq]
توضیحات (DESCRIPTION)
این دستور یک برنامهٔ کارخواه (کلاینت) و سرور پایهای مرجع برچسبگذاری زمانی (Time Stamping Authority یا TSA) طبق استاندارد RFC 3161 (پروتکل برچسب زمانی، TSP) است. یک TSA میتواند بخشی از یک زیرساخت کلید عمومی (PKI) باشد و نقش آن ارائهٔ اثبات بلندمدت برای وجود یک دادهٔ مشخص پیش از زمانی معین است. در ادامه شرح مختصری از این پروتکل آمده است:
- 1.
- کارخواه TSA یک مقدار هش یکطرفه را برای یک فایل داده محاسبه کرده و هش را به TSA ارسال میکند.
- 2.
- مرجع TSA تاریخ و زمان جاری را به مقدار هش دریافتشده ضمیمه کرده، آنها را امضا میکند و توکن برچسب زمانی (Timestamp Token) را به کارخواه بازمیگرداند. با ایجاد این توکن، TSA وجود فایل دادهٔ اصلی را در زمان ایجاد پاسخ گواهی میکند.
- 3.
- کارخواه TSA توکن برچسب زمانی را دریافت کرده و امضای روی آن را اعتبارسنجی میکند. همچنین بررسی میکند که آیا توکن حاوی همان مقدار هشی است که به TSA ارسال کرده بود یا خیر.
یک واحد دادهٔ پروتکل (PDU) با کدگذاری DER برای انتقال یک درخواست برچسب زمانی به TSA و یکی دیگر برای ارسال پاسخ برچسب زمانی به کارخواه تعریف شده است. این دستور سه عملکرد اصلی دارد: ایجاد یک درخواست برچسب زمانی بر اساس یک فایل داده، ایجاد یک پاسخ برچسب زمانی بر اساس یک درخواست، و اعتبارسنجی اینکه آیا یک پاسخ با یک درخواست مشخص یا یک فایل داده مطابقت دارد یا خیر.
هنوز بر خلاف پیشنهاد RFC 3161، هیچ پشتیبانیای برای ارسال خودکار درخواستها/پاسخها از طریق HTTP یا TCP وجود ندارد. کاربران باید درخواستها را از طریق ftp یا ایمیل ارسال کنند.
گزینهها (OPTIONS)
- -help
- نمایش پیام راهنمای نحوهٔ استفاده از دستور.
- -query
- تولید یک درخواست برچسب زمانی (TS query). برای جزئیات به بخش «تولید درخواست برچسب زمانی» مراجعه کنید.
- -reply
- تولید یک پاسخ برچسب زمانی (TS reply). برای جزئیات به بخش «تولید پاسخ برچسب زمانی» مراجعه کنید.
- -verify
- اعتبارسنجی یک پاسخ برچسب زمانی (TS response). برای جزئیات به بخش «اعتبارسنجی پاسخ برچسب زمانی» مراجعه کنید.
تولید درخواست برچسب زمانی (Timestamp Request generation)
دستور -query میتواند برای ایجاد و چاپ یک درخواست برچسب زمانی با گزینههای زیر استفاده شود:
- -config configfile
- فایل پیکربندی مورد استفاده. اختیاری؛ برای شرح مقدار پیشفرض، به بخش «COMMAND SUMMARY» در openssl(1) مراجعه کنید.
- -data file_to_hash
- فایل دادهای که باید درخواست برچسب زمانی برای آن ایجاد شود. اگر نه پارامتر -data و نه -digest مشخص نشده باشد، ورودی استاندارد (stdin) پیشفرض است. (اختیاری)
- -digest digest_bytes
- امکان مشخص کردن صریح اثر پیام (Message Imprint) بدون ارائهٔ فایل داده وجود دارد. اثر پیام باید در قالب هگزادسیمال، دو نویسه به ازای هر بایت، و بهصورت اختیاری با جداسازی بایتها توسط دونقطه (مانند 1A:F6:01:... یا 1AF601...) مشخص شود. تعداد بایتها باید با الگوریتم خلاصه پیام مورد استفاده مطابقت داشته باشد. (اختیاری)
- -digest
- خلاصهٔ پیامی که باید روی فایل داده اعمال شود. هر خلاصهسازی که توسط دستور openssl-dgst(1) پشتیبانی شود قابل استفاده است. مقدار پیشفرض SHA-256 است. (اختیاری)
- -tspolicy object_id
- سیاستی که کارخواه انتظار دارد TSA برای ایجاد توکن برچسب زمانی استفاده کند. میتوان از نشانهگذاری OID نقطهدار یا نامهای OID تعریفشده در فایل پیکربندی استفاده کرد. اگر هیچ سیاستی درخواست نشود، TSA از سیاست پیشفرض خود استفاده خواهد کرد. (اختیاری)
- -no_nonce
- در صورت تعیین این گزینه، هیچ نانسی (Nonce) در درخواست مشخص نمیشود. در غیر این صورت، یک نانس شبهتصادفی ۶۴ بیتی در درخواست گنجانده میشود. استفاده از نانس برای محافظت در برابر حملات تکرار (Replay Attacks) توصیه میشود. (اختیاری)
- -cert
- انتظار میرود TSA گواهینامهٔ امضاکنندهٔ خود را در پاسخ بگنجاند. (اختیاری)
- -in request.tsq
- یک درخواست برچسب زمانی قبلاً ایجادشده در قالب DER را مشخص میکند که در فایل خروجی چاپ خواهد شد. هنگام نیاز به بررسی محتوای یک درخواست در قالبی خوانا برای انسان کاربرد دارد. (اختیاری)
- -out request.tsq
- نام فایل خروجی که درخواست در آن نوشته خواهد شد. پیشفرض خروجی استاندارد (stdout) است. (اختیاری)
- -text
- در صورت تعیین این گزینه، خروجی بهجای DER در قالب متنی خوانا برای انسان خواهد بود. (اختیاری)
- -rand files, -writerand file
- برای جزئیات بیشتر به بخش «Random State Options» در openssl(1) مراجعه کنید.
تولید پاسخ برچسب زمانی (Timestamp Response generation)
یک پاسخ برچسب زمانی (TimeStampResp) شامل یک وضعیت پاسخ و خودِ توکن برچسب زمانی (ContentInfo) است (در صورتی که تولید توکن موفقیتآمیز بوده باشد). دستور -reply برای ایجاد پاسخ برچسب زمانی یا توکن برچسب زمانی بر اساس یک درخواست و چاپ پاسخ/توکن در قالبی خوانا برای انسان است. اگر گزینهٔ -token_out مشخص نشود، خروجی همیشه یک پاسخ برچسب زمانی (TimeStampResp) خواهد بود، در غیر این صورت یک توکن برچسب زمانی (ContentInfo) است.
- -config configfile
- فایل پیکربندی مورد استفاده. اختیاری؛ برای شرح مقدار پیشفرض، به بخش «COMMAND SUMMARY» در openssl(1) مراجعه کنید. برای متغیرهای قابل پیکربندی به «گزینههای فایل پیکربندی» مراجعه کنید.
- -section tsa_section
- نام بخشی از فایل پیکربندی که شامل تنظیمات لازم برای تولید پاسخ است. در صورت مشخص نشدن، از بخش پیشفرض TSA استفاده میشود؛ برای جزئیات به «گزینههای فایل پیکربندی» مراجعه کنید. (اختیاری)
- -queryfile request.tsq
- نام فایلی که شامل یک درخواست برچسب زمانی کدگذاریشده با DER است. (اختیاری)
- -passin password_src
- منبع گذرواژه برای کلید خصوصی TSA را مشخص میکند. به توضیحات موجود در openssl(1) مراجعه کنید. (اختیاری)
- -signer tsa_cert.pem
- گواهینامهٔ امضاکنندهٔ TSA در قالب PEM. گواهینامهٔ امضای TSA باید دقیقاً یک کاربرد کلید گسترشیافته (Extended Key Usage) به نام timeStamping داشته باشد. این کاربرد کلید گسترشیافته باید حیاتی (Critical) نیز باشد، در غیر این صورت گواهینامه رد خواهد شد. متغیر signer_cert فایل پیکربندی را بازنویسی (Override) میکند. (اختیاری)
- -inkey filename|uri
- کلید خصوصی امضاکنندهٔ TSA در قالب PEM. گزینهٔ signer_key فایل پیکربندی را بازنویسی میکند. (اختیاری)
- -digest
- خلاصهٔ امضا برای استفاده. گزینهٔ signer_digest فایل پیکربندی را بازنویسی میکند. (اجباری، مگر آنکه در فایل پیکربندی مشخص شده باشد)
- -chain certs_file.pem
- مجموعهای از گواهینامهها در قالب PEM که در صورت استفاده از گزینهٔ -cert برای درخواست، علاوه بر گواهینامهٔ امضاکننده، همگی در پاسخ گنجانده خواهند شد. این فایل باید شامل زنجیرهٔ گواهینامه برای گواهینامهٔ امضاکننده از صادرکنندهٔ آن به بالا باشد. دستور -reply زنجیرهٔ گواهینامه را بهصورت خودکار ایجاد نمیکند. (اختیاری)
- -tspolicy object_id
- سیاست پیشفرضی که برای پاسخ استفاده میشود، مگر اینکه کارخواه صراحتاً یک سیاست خاص TSA را درخواست کند. OID میتواند با نشانهگذاری نقطهدار یا با نام آن مشخص شود. گزینهٔ default_policy فایل پیکربندی را بازنویسی میکند. (اختیاری)
- -in response.tsr
- یک پاسخ برچسب زمانی قبلاً ایجادشده یا توکن برچسب زمانی (در صورتی که -token_in نیز مشخص شده باشد) را در قالب DER مشخص میکند که در فایل خروجی نوشته خواهد شد. این گزینه نیازی به درخواست ندارد و برای مثال هنگامی مفید است که بخواهید محتوای یک پاسخ یا توکن را بررسی کنید یا بخواهید توکن برچسب زمانی را از یک پاسخ استخراج نمایید. اگر ورودی یک توکن و خروجی یک پاسخ برچسب زمانی باشد، اطلاعات وضعیت پیشفرض 'granted' به توکن اضافه میشود. (اختیاری)
- -token_in
- این گزینه میتواند همراه با گزینهٔ -in استفاده شود و نشان میدهد که ورودی، یک توکن برچسب زمانی کدگذاریشده با DER (ContentInfo) است و نه یک پاسخ برچسب زمانی (TimeStampResp). (اختیاری)
- -out response.tsr
- پاسخ در این فایل نوشته میشود. قالب و محتوای فایل به گزینههای دیگر بستگی دارد (به -text و -token_out مراجعه کنید). پیشفرض خروجی استاندارد (stdout) است. (اختیاری)
- -token_out
- خروجی بهجای پاسخ برچسب زمانی (TimeStampResp)، یک توکن برچسب زمانی (ContentInfo) خواهد بود. (اختیاری)
- -text
- در صورت تعیین این گزینه، خروجی بهجای DER در قالب متنی خوانا برای انسان خواهد بود. (اختیاری)
- -engine id
- به بخش «Engine Options» در openssl(1) مراجعه کنید. این گزینه منسوخ شده است.
- -provider name
- -provider-path path
- -provparam [name:]key=value
- -propquery propq
- به بخش «Provider Options» در openssl(1)، provider(7) و property(7) مراجعه کنید.
اعتبارسنجی پاسخ برچسب زمانی (Timestamp Response verification)
دستور -verify برای بررسی این است که آیا یک پاسخ برچسب زمانی یا توکن برچسب زمانی معتبر است و با یک درخواست برچسب زمانی یا فایل دادهٔ خاص مطابقت دارد یا خیر. دستور -verify از فایل پیکربندی استفاده نمیکند.
- -data file_to_hash
- پاسخ یا توکن باید در برابر file_to_hash اعتبارسنجی شود. فایل با استفاده از الگوریتم خلاصه پیام مشخصشده در توکن هش میشود. گزینههای -digest و -queryfile نباید همراه با این گزینه استفاده شوند. (اختیاری)
- -digest digest_bytes
- پاسخ یا توکن باید در برابر خلاصه پیام مشخصشده با این گزینه اعتبارسنجی شود. تعداد بایتها باید با الگوریتم خلاصه پیام مشخصشده در توکن مطابقت داشته باشد. گزینههای -data و -queryfile نباید همراه با این گزینه مشخص شوند. (اختیاری)
- -queryfile request.tsq
- درخواست برچسب زمانی اصلی در قالب DER. گزینههای -data و -digest نباید همراه با این گزینه استفاده شوند. (اختیاری)
- -in response.tsr
- پاسخ برچسب زمانی در قالب DER که باید اعتبارسنجی شود. (اجباری)
- -token_in
- این گزینه میتواند همراه با گزینهٔ -in استفاده شود و نشان میدهد که ورودی، یک توکن برچسب زمانی کدگذاریشده با DER (ContentInfo) است و نه یک پاسخ برچسب زمانی (TimeStampResp). (اختیاری)
- -untrusted files|uris
- مجموعهای
از
گواهینامههای
غیرمعتمد
اضافی که
ممکن است
هنگام
ایجاد
زنجیرهٔ
گواهینامه
برای
گواهینامهٔ
امضای TSA
مورد نیاز
باشند. تا
زمانی که
پاسخ
پیشاپیش
شامل این
گواهیها
باشد،
نیازی نیست
که این
مجموعه
حاوی
گواهینامهٔ
امضای TSA و
گواهینامههای
CA میانی
باشد.
(اختیاری)
میتوان چندین منبع را با کاما و/یا نویسهٔ فاصله از یکدیگر جدا کرد. هر فایل میتواند شامل چندین گواهینامه باشد.
- -CAfile file, -CApath dir, -CAstore uri
- برای جزئیات بیشتر به بخش «Trusted Certificate Options» در openssl-verification-options(1) مراجعه کنید. حداقل یکی از گزینههای -CAfile، -CApath یا -CAstore باید مشخص شود.
- -allow_proxy_certs, -attime, -no_check_time, -check_ss_sig, -crl_check, -crl_check_all, -explicit_policy, -extended_crl, -ignore_critical, -inhibit_any, -inhibit_map, -no_alt_chains, -partial_chain, -policy, -policy_check, -policy_print, -purpose, -suiteB_128, -suiteB_128_only, -suiteB_192, -trusted_first, -use_deltas, -auth_level, -verify_depth, -verify_email, -verify_hostname, -verify_ip, -verify_name, -x509_strict -issuer_checks
- تنظیم
گزینههای
گوناگون
اعتبارسنجی
زنجیرهٔ
گواهینامه.
برای
جزئیات به
بخش «Verification Options»
در openssl-verification-options(1)
مراجعه
کنید.
هرگونه خطای اعتبارسنجی موجب خروج دستور خواهد شد.
گزینههای فایل پیکربندی (CONFIGURATION FILE OPTIONS)
دستورهای -query و -reply از یک فایل پیکربندی استفاده میکنند. برای شرح کلی نحوهٔ نگارش (Syntax) فایل پیکربندی به config(5) مراجعه کنید. دستور -query تنها از بخش نامهای نمادین OID استفاده میکند و میتواند بدون آن نیز کار کند. با این حال، دستور -reply برای عملکرد خود به فایل پیکربندی نیاز دارد.
هنگامی که یک گزینهٔ خط فرمان معادل با یک متغیر وجود دارد، گزینه همیشه تنظیمات موجود در فایل پیکربندی را بازنویسی میکند.
- بخش tsa، default_tsa
- این بخش اصلی است و نام بخش دیگری را مشخص میکند که شامل تمام گزینههای مربوط به دستور -reply است. این بخش پیشفرض میتواند با گزینهٔ خط فرمان -section بازنویسی شود. (اختیاری)
- oid_file
- فایلی حاوی شناسههای شیء اضافی (OBJECT IDENTIFIERS) را مشخص میکند. هر سطر فایل باید شامل شکل عددی شناسهٔ شیء، به دنبال آن نویسهٔ فاصله، سپس نام کوتاه، به دنبال آن نویسهٔ فاصله و در نهایت نام کامل باشد. (اختیاری)
- oid_section
- بخشی را در فایل پیکربندی مشخص میکند که شامل شناسههای شیء اضافی است. هر سطر باید شامل نام کوتاه شناسهٔ شیء به همراه = و شکل عددی آن باشد. هنگام استفاده از این گزینه، نام کوتاه و نام کامل یکسان خواهند بود. (اختیاری)
- RANDFILE
- در زمان راهاندازی، فایل مشخصشده در مولد اعداد تصادفی بارگذاری میشود و هنگام خروج، ۲۵۶ بایت در آن نوشته خواهد شد. (نکته: استفاده از RANDFILE دیگر ضروری نیست، به بخش «تاریخچه» مراجعه کنید).
- serial
- نام فایلی که شامل شماره سریال هگزادسیمال آخرین پاسخ برچسب زمانی ایجادشده است. این شماره با هر پاسخ ۱ واحد افزایش مییابد. اگر در زمان ایجاد پاسخ فایل وجود نداشته باشد، فایل جدیدی با شماره سریال ۱ ایجاد میشود. (اجباری)
- crypto_device
- موتور OpenSSL را مشخص میکند که بهعنوان پیشفرض برای تمامی الگوریتمهای موجود تنظیم خواهد شد. مقدار پیشفرض built-in است؛ میتوانید هر موتور دیگری را که توسط OpenSSL پشتیبانی میشود مشخص کنید (مثلاً استفاده از chil برای HSM شرکت NCipher). (اختیاری)
- signer_cert
- گواهینامهٔ امضای TSA در قالب PEM. همانند گزینهٔ خط فرمان -signer عمل میکند. (اختیاری)
- certs
- فایلی شامل مجموعهای از گواهینامههای کدگذاریشده با PEM که باید در پاسخ گنجانده شوند. همانند گزینهٔ خط فرمان -chain عمل میکند. (اختیاری)
- signer_key
- کلید خصوصی TSA در قالب PEM. همانند گزینهٔ خط فرمان -inkey عمل میکند. (اختیاری)
- signer_digest
- خلاصهٔ امضا برای استفاده. همانند گزینهٔ خط فرمان -digest عمل میکند. (اجباری، مگر اینکه در خط فرمان مشخص شده باشد)
- default_policy
- سیاست پیشفرض مورد استفاده هنگامی که در درخواست هیچ سیاستی الزام نشده باشد. همانند گزینهٔ خط فرمان -tspolicy عمل میکند. (اختیاری)
- other_policies
- فهرست جداشده با کاما از سیاستهایی که توسط TSA پذیرفته میشوند و تنها در صورتی استفاده میگردند که در درخواست صراحتاً یکی از آنها مشخص شده باشد. (اختیاری)
- digests
- فهرست الگوریتمهای خلاصه پیامی که TSA میپذیرد. حداقل یک الگوریتم باید مشخص شود. (اجباری)
- accuracy
- دقت منبع زمانی TSA به ثانیه، میلیثانیه و میکروثانیه. مانند secs:1, millisecs:500, microsecs:100. اگر هر یک از مؤلفهها ذکر نشود، مقدار صفر برای آن فیلد در نظر گرفته میشود. (اختیاری)
- clock_precision_digits
- حداکثر تعداد ارقامی را که بیانگر کسر ثانیه هستند و باید در فیلد زمان گنجانده شوند، مشخص میکند. صفرهای انتهایی باید از زمان حذف شوند، بنابراین ممکن است در عمل ارقام کمتری وجود داشته باشد یا اصلاً کسر ثانیهای نباشد. فقط در پلتفرمهای یونیکس پشتیبانی میشود. حداکثر مقدار ۶ و پیشفرض ۰ است. (اختیاری)
- ordering
- اگر این گزینه yes باشد، پاسخهای تولیدشده توسط این TSA همیشه قابل ترتیببندی خواهند بود، حتی اگر اختلاف زمانی بین دو پاسخ کمتر از مجموع دقتهای آنها باشد. پیشفرض no است. (اختیاری)
- tsa_name
- اگر نام موضوع (Subject) مرجع TSA باید در فیلد نام TSA در پاسخ گنجانده شود، این گزینه را روی yes تنظیم کنید. پیشفرض no است. (اختیاری)
- ess_cert_id_chain
- اشیای SignedData ایجادشده توسط TSA همواره حاوی شناسهٔ گواهینامهٔ امضاکننده در یک صفت امضاشده هستند (به RFC 2634، خدمات امنیتی پیشرفته یا Enhanced Security Services مراجعه کنید). اگر این متغیر روی no تنظیم شده باشد، تنها شناسهٔ همین گواهینامهٔ امضاکننده در صفت امضاشدهٔ SigningCertificate گنجانده میشود. اگر این متغیر روی yes تنظیم شده باشد و متغیر certs یا گزینهٔ -chain مشخص شده باشد، شناسههای گواهینامهٔ زنجیره نیز گنجانده خواهند شد، که در آن گزینهٔ -chain متغیر certs را بازنویسی میکند. پیشفرض no است. (اختیاری)
- ess_cert_id_alg
- این گزینه تابع هش مورد استفاده برای محاسبهٔ شناسهٔ گواهینامهٔ کلید عمومی TSA را مشخص میکند. پیشفرض sha256 است. (اختیاری)
مثالها (EXAMPLES)
تمام مثالهای زیر فرض میکنند که OPENSSL_CONF روی یک فایل پیکربندی مناسب تنظیم شده است؛ برای نمونه فایل پیکربندی نمونهٔ openssl/apps/openssl.cnf کفایت میکند.
درخواست برچسب زمانی (Timestamp Request)
برای ایجاد یک درخواست برچسب زمانی برای design1.txt با خلاصهٔ SHA-256، بدون نانس و سیاست، و بدون الزام به وجود گواهینامه در پاسخ:
openssl ts -query -data design1.txt -no_nonce \
-out design1.tsq
برای ایجاد یک درخواست برچسب زمانی مشابه با تعیین صریح اثر پیام (Message Imprint):
openssl ts -query -digest b7e5d3f93198b38379852f2c04e78d73abdd0f4b \
-no_nonce -out design1.tsq
برای چاپ محتوای درخواست قبلی در قالبی خوانا برای انسان:
openssl ts -query -in design1.tsq -text
برای ایجاد یک درخواست برچسب زمانی که شامل خلاصهٔ SHA-512 فایل design2.txt باشد، گواهینامهٔ امضاکننده و نانس را درخواست کند، و یک شناسهٔ سیاست را مشخص نماید (با این فرض که نام tsa_policy1 در بخش OID فایل پیکربندی تعریف شده است):
openssl ts -query -data design2.txt -sha512 \
-tspolicy tsa_policy1 -cert -out design2.tsq
پاسخ برچسب زمانی (Timestamp Response)
پیش از ایجاد یک پاسخ، باید یک گواهینامهٔ امضا برای TSA ایجاد شود که حاوی افزونهٔ حیاتیِ کاربرد کلید گسترشیافتهٔ timeStamping و فاقد هرگونه افزونهٔ کاربرد کلید دیگری باشد. برای ایجاد یک گواهینامهٔ مناسب، میتوانید این خط را به بخش گواهینامهٔ کاربر (user certificate) در فایل پیکربندی اضافه کنید:
extendedKeyUsage = critical,timeStamping
برای دستورالعملها به openssl-req(1)، openssl-ca(1) و openssl-x509(1) مراجعه کنید. مثالهای زیر فرض میکنند که cacert.pem شامل گواهینامهٔ CA، فایل tsacert.pem گواهینامهٔ امضای صادرشده توسط cacert.pem و فایل tsakey.pem کلید خصوصی مرجع TSA است.
برای ایجاد یک پاسخ برچسب زمانی برای یک درخواست:
openssl ts -reply -queryfile design1.tsq -inkey tsakey.pem \
-signer tsacert.pem -out design1.tsr
اگر میخواهید از تنظیمات موجود در فایل پیکربندی استفاده کنید، میتوانید بهسادگی بنویسید:
openssl ts -reply -queryfile design1.tsq -out design1.tsr
برای چاپ یک پاسخ برچسب زمانی در خروجی استاندارد در قالبی خوانا برای انسان:
openssl ts -reply -in design1.tsr -text
برای ایجاد یک توکن برچسب زمانی بهجای پاسخ برچسب زمانی:
openssl ts -reply -queryfile design1.tsq -out design1_token.der -token_out
برای چاپ یک توکن برچسب زمانی در خروجی استاندارد در قالبی خوانا برای انسان:
openssl ts -reply -in design1_token.der -token_in -text -token_out
برای استخراج توکن برچسب زمانی از یک پاسخ:
openssl ts -reply -in design1.tsr -out design1_token.der -token_out
برای افزودن اطلاعات وضعیت 'granted' به یک توکن برچسب زمانی و در نتیجه ایجاد یک پاسخ معتبر:
openssl ts -reply -in design1_token.der -token_in -out design1.tsr
اعتبارسنجی برچسب زمانی (Timestamp Verification)
برای اعتبارسنجی یک پاسخ برچسب زمانی در برابر یک درخواست:
openssl ts -verify -queryfile design1.tsq -in design1.tsr \
-CAfile cacert.pem -untrusted tsacert.pem
برای اعتبارسنجی یک پاسخ برچسب زمانی که شامل زنجیرهٔ گواهینامه است:
openssl ts -verify -queryfile design2.tsq -in design2.tsr \
-CAfile cacert.pem
برای اعتبارسنجی یک توکن برچسب زمانی در برابر فایل دادهٔ اصلی:
openssl ts -verify -data design2.txt -in design2.tsr \
-CAfile cacert.pem
برای اعتبارسنجی یک توکن برچسب زمانی در برابر اثر پیام (Message Imprint):
openssl ts -verify -digest b7e5d3f93198b38379852f2c04e78d73abdd0f4b \
-in design2.tsr -CAfile cacert.pem
همچنین میتوانید برای مثالهای بیشتر به پوشهٔ 'test' نگاهی بیندازید.
اشکالات (BUGS)
- هیچ پشتیبانیای برای برچسبهای زمانی روی SMTP وجود ندارد، هرچند پیادهسازی یک TSA مبتنی بر ایمیل خودکار با استفاده از procmail(1) و perl(1) بسیار آسان است. پشتیبانی از کارساز HTTP در قالب یک ماژول آپاچی جداگانه ارائه میشود. پشتیبانی از کارخواه HTTP توسط tsget(1) فراهم گردیده است. پروتکل خالص TCP/IP پشتیبانی نمیشود.
- فایل حاوی آخرین شماره سریال TSA هنگام خواندن یا نوشتن قفل نمیشود. اگر بیش از یک نمونه از openssl(1) تلاش کند همزمان پاسخ برچسب زمانی ایجاد کند، این مسئله مشکلساز خواهد بود. هنگام استفاده از ماژول سرور آپاچی این مشکل وجود ندارد، زیرا قفلگذاری مناسب را انجام میدهد.
- کلمهٔ FIXME را در فایلهای منبع جستجو کنید.
- کد منبع باید حتماً توسط فرد دیگری نیز بررسی شود.
- آزمایشهای بیشتری مورد نیاز است؛ من فقط برخی آزمایشهای پایهای را انجام دادهام (به test/testtsa مراجعه کنید).
تاریخچه (HISTORY)
نسخهٔ 1.1.1 اوپناساسال یک مولد تصادفی جدید (CSPRNG) با سازوکار بذردهی (Seeding) بهبودیافته معرفی کرد. این سازوکار بذردهی جدید، تعریف یک RANDFILE برای ذخیره و بازیابی تصادفیبودن را غیرضروری میکند. این گزینه عمدتاً به دلایل سازگاری حفظ شده است.
گزینهٔ -engine در OpenSSL 3.0 منسوخ شد.
همچنین ببینید (SEE ALSO)
openssl(1), tsget(1), openssl-req(1), openssl-x509(1), openssl-ca(1), openssl-genrsa(1), config(5), ossl_store-file(7)
حق نشر (COPYRIGHT)
حق نشر ۲۰۰۶-۲۰۲۵ نویسندگان پروژه OpenSSL. تمامی حقوق محفوظ است.
تحت مجوز آپاچی، نسخه ۲.۰ («مجوز») منتشر شده است. استفاده از این فایل تنها بر اساس شرایط و مقررات مندرج در مجوز مجاز است. شما میتوانید نسخهای از مجوز را در فایل LICENSE در توزیع منبع یا در نشانی زیر دریافت کنید: https://www.openssl.org/source/license.html
| 2026-08-25 | 3.6.4 |