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 در توزیع منبع یا در نشانی زیر دریافت کنید: 3.6.4 2026-08-25 OPENSSL-TS(1ssl)