OPENSSL-X509(1ssl) OpenSSL OPENSSL-X509(1ssl) نام (NAME) openssl-x509 - دستور نمایش و امضای گواهی‌نامه خلاصه دستور (SYNOPSIS) openssl x509 [-help] [-in filename|uri] [-passin arg] [-new] [-x509toreq] [-req] [-copy_extensions arg] [-inform DER|PEM] [-vfyopt nm:v] [-key filename|uri] [-keyform DER|PEM|P12|ENGINE] [-signkey filename|uri] [-out filename] [-outform DER|PEM] [-nocert] [-noout] [-dateopt] [-text] [-certopt option] [-fingerprint] [-alias] [-serial] [-startdate] [-enddate] [-dates] [-subject] [-issuer] [-nameopt option] [-email] [-hash] [-subject_hash] [-subject_hash_old] [-issuer_hash] [-issuer_hash_old] [-ext extensions] [-ocspid] [-ocsp_uri] [-purpose] [-pubkey] [-modulus] [-multi] [-checkend num] [-checkhost host] [-checkemail host] [-checkip ipaddr] [-set_serial n] [-next_serial] [-not_before date] [-not_after date] [-days arg] [-preserve_dates] [-set_issuer arg] [-set_subject arg] [-subj arg] [-force_pubkey filename] [-clrext] [-extfile filename] [-extensions section] [-sigopt nm:v] [-badsig] [-digest] [-CA filename|uri] [-CAform DER|PEM|P12] [-CAkey filename|uri] [-CAkeyform DER|PEM|P12|ENGINE] [-CAserial filename] [-CAcreateserial] [-trustout] [-setalias arg] [-clrtrust] [-addtrust arg] [-clrreject] [-addreject arg] [-rand files] [-writerand file] [-engine id] [-provider name] [-provider-path path] [-provparam [name:]key=value] [-propquery propq] توضیحات (DESCRIPTION) این دستور ابزاری چندمنظوره برای مدیریت و کار با گواهی‌نامه‌ها است. از این دستور می‌توان برای چاپ اطلاعات گواهی‌نامه، تبدیل گواهی‌نامه‌ها به قالب‌های مختلف، ویرایش تنظیمات اعتماد گواهی‌نامه، تولید گواهی‌نامه‌ها از ابتدا یا از روی درخواست‌های صدور گواهی‌نامه (CSR) و سپس خودامضاکردن (self-signing) یا امضا کردن آن‌ها مانند یک «CA کوچک» («micro CA») استفاده کرد. گواهی‌نامه‌های تولیدشده دارای نسخه ۳ استاندارد X.509 هستند. مگر آنکه خلاف آن مشخص شده باشد، افزونه‌های شناسه کلید همان‌طور که در x509v3_config(5) تشریح شده است گنجانده می‌شوند. با توجه به تعداد زیاد گزینه‌ها، آن‌ها در بخش‌های مختلفی تقسیم‌بندی شده‌اند. گزینه‌ها (OPTIONS) گزینه‌های ورودی، خروجی و عمومی (Input, Output, and General Purpose Options) -help چاپ پیام راهنمای نحوه استفاده. -in filename|uri مشخص‌کننده ورودی برای خواندن گواهی‌نامه، یا فایل ورودی برای خواندن درخواست گواهی‌نامه در صورت استفاده از پرچم -req. در هر دو حالت، مقدار پیش‌فرض ورودی استاندارد است. این گزینه نمی‌تواند با پرچم -new ترکیب شود. -passin arg منبع عبارت عبور فایل کلید و گواهی‌نامه. برای اطلاعات بیشتر درباره قالب arg، بخش openssl-passphrase-options(1) را ببینید. -new تولید یک گواهی‌نامه از ابتدا، بدون استفاده از گواهی‌نامه یا درخواست گواهی‌نامه ورودی. بنابراین این گزینه مانع استفاده از گزینه‌های -in و -req می‌شود. در عوض، باید گزینه -set_subject مشخص گردد. کلید عمومی جهت گنجاندن در گواهی را می‌توان با گزینه -force_pubkey تعیین کرد و به‌طور پیش‌فرض همان کلید ارائه‌شده با گزینه -key (یا -signkey) است که به معنای خودامضایی است. -x509toreq خروجی دادن یک درخواست گواهی‌نامه PKCS#10 (به جای یک گواهی‌نامه). گزینه -key (یا -signkey) باید برای ارائه کلید خصوصی جهت خودامضایی استفاده شود؛ کلید عمومی متناظر در فیلد subjectPKInfo قرار می‌گیرد. افزونه‌های X.509 موجود در گواهی‌نامه ورودی به‌طور پیش‌فرض رونوشت نمی‌شوند. افزونه‌های X.509 که باید اضافه شوند را می‌توان با استفاده از گزینه -extfile مشخص کرد. -req به‌طور پیش‌فرض در ورودی یک گواهی‌نامه انتظار می‌رود. با این گزینه، در عوض یک درخواست گواهی‌نامه PKCS#10 انتظار می‌رود که باید به درستی خودامضا شده باشد. افزونه‌های X.509 موجود در درخواست به‌طور پیش‌فرض رونوشت نمی‌شوند. افزونه‌های X.509 که باید اضافه شوند را می‌توان با استفاده از گزینه -extfile مشخص کرد. -copy_extensions arg نحوه مدیریت افزونه‌های X.509 را در هنگام تبدیل از یک گواهی‌نامه به یک درخواست با استفاده از گزینه -x509toreq یا تبدیل از یک درخواست به یک گواهی‌نامه با استفاده از گزینه -req مشخص می‌کند. اگر arg برابر none باشد یا این گزینه وجود نداشته باشد، افزونه‌ها نادیده گرفته می‌شوند. اگر arg برابر copy یا copyall باشد، تمام افزونه‌ها رونوشت می‌شوند، به جز افزونه‌های شناسه موضوع (subject identifier) و شناسه کلید مرجع صدور (authority key identifier) که در زمان تولید درخواست گواهی‌نامه منتقل نمی‌شوند. گزینه -ext می‌تواند برای محدود کردن بیشتر افزونه‌هایی که باید رونوشت شوند استفاده شود. -inform DER|PEM قالب فایل ورودی مورد استفاده؛ به‌طور پیش‌فرض ابتدا PEM امتحان می‌شود. برای جزئیات بیشتر به openssl-format-options(1) مراجعه کنید. -vfyopt nm:v ارسال گزینه‌ها به الگوریتم امضا در طول عملیات اعتبارسنجی. نام‌ها و مقادیر این گزینه‌ها وابسته به الگوریتم هستند. -key filename|uri این گزینه کلید خصوصی را برای امضای یک گواهی‌نامه یا درخواست گواهی‌نامه جدید فراهم می‌کند. مگر اینکه -force_pubkey داده شده باشد، کلید عمومی متناظر در گواهی‌نامه یا درخواست گواهی‌نامه جدید قرار می‌گیرد که منجر به خودامضایی می‌شود. این گزینه نمی‌تواند همراه با گزینه -CA استفاده شود. این گزینه نام صادرکننده را روی نام موضوع تنظیم می‌کند (یعنی آن را خودصادرشده می‌کند). مگر اینکه گزینه -preserve_dates مشخص شده باشد، تاریخ آغاز اعتبار را روی زمان جاری و تاریخ پایان را روی مقداری که توسط گزینه -days تعیین می‌شود تنظیم می‌کند. تاریخ آغاز و تاریخ پایان همچنین می‌توانند به طور صریح با گزینه‌های -not_before و -not_after مشخص شوند. -signkey filename|uri این گزینه نام مستعاری برای -key است. -keyform DER|PEM|P12|ENGINE قالب ورودی کلید؛ به‌طور پیش‌فرض نامشخص است. برای جزئیات به openssl-format-options(1) مراجعه کنید. -out filename مشخص‌کننده نام فایل خروجی برای نوشتن، یا به‌طور پیش‌فرض خروجی استاندارد. -outform DER|PEM قالب خروجی؛ مقدار پیش‌فرض PEM است. برای جزئیات به openssl-format-options(1) مراجعه کنید. -nocert عدم تولید گواهی‌نامه در خروجی (به جز مواردی که با گزینه‌های زیر برای چاپ درخواست شده باشد). -noout این گزینه از هرگونه خروجی جلوگیری می‌کند به جز مواردی که با گزینه‌های زیر برای چاپ درخواست شده باشد. گزینه‌های چاپ گواهی‌نامه (Certificate Printing Options) توجه: گزینه‌های -alias و -purpose نیز جزو گزینه‌های چاپ هستند اما در بخش «تنظیمات اعتماد» (Trust Settings) تشریح شده‌اند. -dateopt مشخص کردن قالب خروجی تاریخ. مقادیر مجاز عبارتند از: rfc_822 و iso_8601. مقدار پیش‌فرض rfc_822 است. -text چاپ گواهی‌نامه به صورت متنی. تمام جزئیات از جمله کلید عمومی، الگوریتم‌های امضا، نام‌های صادرکننده و موضوع، شماره سریال، هرگونه افزونه موجود و تنظیمات اعتماد چاپ می‌شوند. -certopt option سفارشی‌سازی قالب چاپ مورد استفاده با گزینه -text. آرگومان option می‌تواند یک گزینه منفرد یا چندین گزینه جداشده با ویرگول باشد. سوییچ -certopt همچنین می‌تواند بیش از یک بار برای تنظیم چندین گزینه استفاده شود. برای اطلاعات بیشتر بخش «پرچم‌های چاپ متن» (Text Printing Flags) را ببینید. -fingerprint محاسبه و چاپ خلاصه پیام (digest) نسخه کدگذاری‌شده DER از کل گواهی‌نامه (گزینه‌های digest را ببینید). این مقدار معمولاً «اثرانگشت» (fingerprint) نامیده می‌شود. به دلیل ماهیت خلاصه‌های پیام، اثرانگشت یک گواهی‌نامه برای آن گواهی‌نامه منحصر‌به‌فرد است و دو گواهی‌نامه با اثرانگشت یکسان را می‌توان یکسان در نظر گرفت. -alias چاپ «نام مستعار» (nickname) گواهی‌نامه، در صورت وجود. -serial چاپ شماره سریال گواهی‌نامه. -startdate چاپ تاریخ آغاز اعتبار گواهی‌نامه، یعنی تاریخ notBefore. -enddate چاپ تاریخ انقضای گواهی‌نامه، یعنی تاریخ notAfter. -dates چاپ هر دو تاریخ آغاز و انقضای یک گواهی‌نامه. -subject چاپ نام موضوع (subject). -issuer چاپ نام صادرکننده (issuer). -nameopt option مشخص می‌کند که نام‌های موضوع یا صادرکننده چگونه نمایش داده شوند. برای جزئیات بیشتر به openssl-namedisplay-options(1) مراجعه کنید. -email چاپ نشانی(های) رایانامه (email)، در صورت وجود. -hash مترادفی برای «-subject_hash» جهت سازگاری با گذشته. -subject_hash چاپ «هش» نام موضوع گواهی‌نامه. از این هش در OpenSSL برای ایجاد یک نمایه استفاده می‌شود تا گواهی‌نامه‌های موجود در یک پوشه بتوانند بر اساس نام موضوع جستجو شوند. -subject_hash_old چاپ «هش» نام موضوع گواهی‌نامه با استفاده از الگوریتم قدیمی‌تر که توسط نسخه‌های پیش از 1.0.0 در OpenSSL استفاده می‌شد. -issuer_hash چاپ «هش» نام صادرکننده گواهی‌نامه. -issuer_hash_old چاپ «هش» نام صادرکننده گواهی‌نامه با استفاده از الگوریتم قدیمی‌تر که توسط نسخه‌های پیش از 1.0.0 در OpenSSL استفاده می‌شد. -ext extensions چاپ افزونه‌های گواهی‌نامه به صورت متنی. همچنین می‌تواند برای محدود کردن افزونه‌هایی که باید رونوشت شوند به کار رود. افزونه‌ها با یک رشته جداشده با ویرگول مشخص می‌شوند، مانند "subjectAltName, subjectKeyIdentifier". برای مشاهده نام‌های افزونه‌ها به صفحه راهنمای x509v3_config(5) مراجعه کنید. -ocspid چاپ مقادیر هش OCSP برای نام موضوع و کلید عمومی. -ocsp_uri چاپ نشانی(های) پاسخ‌دهنده OCSP، در صورت وجود. -purpose این گزینه آزمون‌هایی را روی افزونه‌های گواهی‌نامه انجام داده و نتایج را نمایش می‌دهد. برای توضیح کامل‌تر، بخش «افزونه‌های گواهی‌نامه» در openssl-verification-options(1) را ببینید. -pubkey بلوک SubjectPublicKeyInfo گواهی‌نامه را در قالب PEM چاپ می‌کند. -modulus این گزینه مقدار پیمانه (modulus) کلید عمومی موجود در گواهی‌نامه را چاپ می‌کند. -multi این گزینه اطلاعات انتخابی درباره تمام گواهی‌نامه‌های موجود در ورودی را چاپ می‌کند. گزینه‌های بررسی گواهی‌نامه (Certificate Checking Options) -checkend arg بدون -multi بررسی می‌کند که آیا گواهی‌نامه ظرف arg ثانیه آینده منقضی می‌شود یا خیر، و اگر منقضی شود با کد غیرصفر و اگر نشود با کد صفر خارج می‌شود. همراه با -multi بررسی می‌کند که آیا هر کدام از گواهی‌نامه‌های ورودی ظرف arg ثانیه آینده منقضی می‌شوند یا خیر، و اگر حداقل یکی منقضی شود با کد غیرصفر و اگر هیچ‌کدام منقضی نشوند با صفر خارج می‌شود. -checkhost host بررسی می‌کند که آیا گواهی‌نامه با میزبان مشخص‌شده مطابقت دارد یا خیر. -checkemail email بررسی می‌کند که آیا گواهی‌نامه با نشانی رایانامه مشخص‌شده مطابقت دارد یا خیر. -checkip ipaddr بررسی می‌کند که آیا گواهی‌نامه با نشانی IP مشخص‌شده مطابقت دارد یا خیر. گزینه‌های خروجی گواهی‌نامه (Certificate Output Options) -set_serial n شماره سریال مورد استفاده را مشخص می‌کند. این گزینه می‌تواند با گزینه‌های -key، -signkey یا -CA استفاده شود. در صورت استفاده به همراه گزینه -CA، فایل شماره سریال (همان‌طور که توسط گزینه -CAserial مشخص شده) استفاده نخواهد شد. شماره سریال می‌تواند ده‌دهی (decimal) یا هگزادسیمال (در صورتی که با "0x" شروع شود) باشد. -next_serial شماره سریال را یک واحد بیشتر از شماره موجود در گواهی‌نامه تنظیم می‌کند. -not_before date امکان تنظیم صریح تاریخ آغاز اعتبار را فراهم می‌کند. قالب تاریخ YYMMDDHHMMSSZ (مشابه ساختار ASN1 UTCTime) یا YYYYMMDDHHMMSSZ (مشابه ساختار ASN1 GeneralizedTime) است. در هر دو قالب، ثانیه‌ها SS و منطقه زمانی Z باید وجود داشته باشند. همچنین می‌توانید از "today" (امروز) استفاده کنید. نمی‌تواند همراه با گزینه -preserve_dates استفاده شود. -not_after date امکان تنظیم صریح تاریخ انقضا را فراهم می‌کند. قالب تاریخ YYMMDDHHMMSSZ (مشابه ساختار ASN1 UTCTime) یا YYYYMMDDHHMMSSZ (مشابه ساختار ASN1 GeneralizedTime) است. در هر دو قالب، ثانیه‌ها SS و منطقه زمانی Z باید وجود داشته باشند. همچنین می‌توانید از "today" (امروز) استفاده کنید. نمی‌تواند همراه با گزینه -preserve_dates استفاده شود. این گزینه بر گزینه -days تقدم دارد. -days arg تعداد روزها از امروز تا زمان انقضای گواهی‌نامه جدیداً تولیدشده را مشخص می‌کند. مقدار پیش‌فرض ۳۰ است. نمی‌تواند همراه با گزینه -preserve_dates استفاده شود. اگر گزینه -not_after تنظیم شده باشد، تاریخ انقضای صریح اولویت دارد. -preserve_dates هنگام امضای یک گواهی‌نامه، تاریخ‌های «notBefore» و «notAfter» هر گواهی‌نامه ورودی را حفظ می‌کند، به جای اینکه آن‌ها را با زمان و مدت زمان جاری تنظیم نماید. نمی‌تواند همراه با گزینه‌های -days، -not_before و -not_after استفاده شود. -set_issuer arg هنگامی که یک گواهی‌نامه ایجاد می‌شود، نام صادرکننده آن را روی مقدار داده‌شده تنظیم می‌کند. برای نحوه قالب‌بندی آرگومان، بخش -set_subject را ببینید. -set_subject arg هنگامی که یک گواهی‌نامه ایجاد می‌شود، نام موضوع آن را روی مقدار داده‌شده تنظیم می‌کند. هنگامی که گواهی‌نامه خودامضا است، نام صادرکننده روی همین مقدار تنظیم می‌شود، مگر اینکه گزینه -set_issuer داده شده باشد. آرگومان باید به صورت "/type0=value0/type1=value1/type2=..." قالب‌بندی شود. نویسه‌های خاص می‌توانند با "\" (اسلش وارو / backslash) اسکیپ شوند؛ فاصله‌های خالی حفظ می‌شوند. مقادیر خالی مجاز هستند، اما نوع متناظر در گواهی‌نامه گنجانده نخواهد شد. ارائه یک "/" تکی منجر به یک توالی خالی از RDNها (یک NULL-DN) می‌شود. RDNهای چندمقداری را می‌توان با قرار دادن یک نویسه "+" به جای "/" بین AttributeValueAssertionها (AVAها) که اعضای مجموعه را مشخص می‌کنند، تشکیل داد. مثال: "/DC=org/DC=OpenSSL/DC=users/UID=123456+CN=John Doe" این گزینه می‌تواند همراه با گزینه‌های -new و -force_pubkey برای ایجاد یک گواهی‌نامه جدید بدون ارائه گواهی‌نامه یا درخواست گواهی‌نامه ورودی استفاده شود. -subj arg این گزینه نام مستعاری برای -set_subject است. -force_pubkey filename هنگامی که یک گواهی‌نامه یا درخواست گواهی‌نامه جدید ایجاد می‌شود، کلید عمومی آن را روی کلید داده‌شده تنظیم می‌کند، به جای کلید موجود در ورودی یا داده‌شده با گزینه -key (یا -signkey). اگر ورودی حاوی کلید عمومی نباشد اما حاوی یک کلید خصوصی باشد، بخش عمومی آن استفاده می‌شود. این گزینه می‌تواند به همراه -new و -set_subject استفاده شود تا مستقیماً یک گواهی‌نامه حاوی هر کلید عمومی دلخواه تولید گردد. این گزینه همچنین برای ایجاد گواهی‌نامه‌های خودصادرشده‌ای که خودامضا نیستند مفید است، برای مثال زمانی که کلید نمی‌تواند برای امضا استفاده شود، مانند DH. -clrext هنگام تبدیل یک گواهی‌نامه به یک گواهی‌نامه جدید، به‌طور پیش‌فرض تمام افزونه‌های گواهی‌نامه حفظ می‌شوند. هنگام تبدیل یک گواهی‌نامه یا درخواست گواهی‌نامه، گزینه -clrext از انتقال هرگونه افزونه از منبع جلوگیری می‌کند. در هر حال، هنگام تولید درخواست گواهی‌نامه، نه افزونه‌های شناسه موضوع و نه شناسه کلید مرجع صدور گنجانده نمی‌شوند. -extfile filename فایل پیکربندی حاوی افزونه‌های X.509 گواهی‌نامه و درخواست جهت افزودن. -extensions section بخشی در extfile که افزونه‌های X.509 باید از آن اضافه شوند. اگر این گزینه مشخص نشود، افزونه‌ها یا باید در بخش بدون نام (پیش‌فرض) قرار داشته باشند یا بخش پیش‌فرض باید حاوی متغیری به نام "extensions" باشد که حاوی نام بخش مورد استفاده است. برای جزئیات قالب بخش افزونه به صفحه راهنمای x509v3_config(5) مراجعه کنید. مگر اینکه خلاف آن مشخص شده باشد، افزونه‌های شناسه کلید همان‌طور که در x509v3_config(5) شرح داده شده است اضافه می‌شوند. -sigopt nm:v ارسال گزینه‌ها به الگوریتم امضا در حین عملیات امضا. این گزینه می‌تواند چندین بار مشخص شود. نام‌ها و مقادیر ارائه‌شده با این گزینه وابسته به الگوریتم هستند. -badsig مخدوش کردن امضا پیش از نوشتن آن؛ این گزینه می‌تواند برای آزمودن مفید باشد. -digest خلاصه پیام مورد استفاده. این بر هر گزینه امضا یا چاپی که از خلاصه پیام استفاده می‌کند تأثیر می‌گذارد، مانند گزینه‌های -fingerprint، -key و -CA. هر خلاصه‌ای که توسط دستور openssl-dgst(1) پشتیبانی شود قابل استفاده است. اگر مشخص نشود، از SHA1 همراه با -fingerprint استفاده می‌شود یا خلاصه پیش‌فرض برای الگوریتم امضا استفاده می‌گردد که معمولاً SHA256 است. گزینه‌های CA کوچک (Micro-CA Options) -CA filename|uri گواهی‌نامه «CA» مورد استفاده برای امضا را مشخص می‌کند. در صورت وجود، مانند یک «CA کوچک» («micro CA») به شکل زیر عمل می‌کند: نام موضوع گواهی‌نامه «CA» به عنوان نام صادرکننده در گواهی‌نامه جدید قرار می‌گیرد، که سپس با استفاده از کلید «CA» که شرح آن در زیر آمده است امضا می‌شود. این گزینه نمی‌تواند همراه با گزینه -key (یا -signkey) استفاده شود. این گزینه معمولاً همراه با گزینه -req که به یک CSR اشاره دارد استفاده می‌شود. بدون گزینه -req، ورودی باید یک گواهی‌نامه موجود باشد مگر اینکه گزینه -new داده شده باشد، که یک گواهی‌نامه را از ابتدا تولید می‌کند. -CAform DER|PEM|P12, قالب گواهی‌نامه CA؛ به‌طور پیش‌فرض نامشخص است. برای جزئیات بیشتر به openssl-format-options(1) مراجعه کنید. -CAkey filename|uri کلید خصوصی CA را برای امضای یک گواهی‌نامه تنظیم می‌کند. کلید خصوصی باید با کلید عمومی گواهی‌نامه ارائه‌شده با -CA مطابقت داشته باشد. اگر این گزینه مشخص نشود، کلید باید در ورودی -CA موجود باشد. -CAkeyform DER|PEM|P12|ENGINE قالب کلید CA؛ به‌طور پیش‌فرض نامشخص است. برای جزئیات بیشتر به openssl-format-options(1) مراجعه کنید. -CAserial filename فایل شماره سریال CA را برای استفاده تنظیم می‌کند. هنگام ایجاد یک گواهی‌نامه با این گزینه و گزینه -CA، شماره سریال گواهی‌نامه در فایل مشخص‌شده ذخیره می‌شود. این فایل شامل یک خط حاوی تعداد زوجی از ارقام هگزادسیمال با شماره سریالی است که آخرین بار استفاده شده است. پس از خواندن این شماره، مقدار آن یک واحد افزایش یافته و استفاده می‌شود، و فایل به‌روزرسانی می‌گردد. نام فایل پیش‌فرض شامل نام پایه فایل گواهی‌نامه CA به همراه پسوند .srl است. برای مثال اگر فایل گواهی‌نامه CA با نام mycacert.pem باشد، انتظار دارد فایلی با نام mycacert.srl برای شماره سریال بیابد. اگر گزینه -CA مشخص شده باشد و نه <-CAserial> و نه <-CAcreateserial> داده نشده باشند و فایل شماره سریال پیش‌فرض وجود نداشته باشد، یک شماره تصادفی تولید می‌شود؛ این رویکرد توصیه‌شده است. -CAcreateserial با این گزینه و گزینه -CA، فایل شماره سریال CA در صورتی که وجود نداشته باشد ایجاد می‌شود. یک شماره تصادفی تولید شده، برای گواهی‌نامه استفاده می‌شود، و در فایل شماره سریالی که طبق توضیحات بالا تعیین شده است ذخیره می‌گردد. تنظیمات اعتماد (Trust Settings) یک گواهی‌نامه مورد اعتماد (trusted certificate) یک گواهی‌نامه معمولی است که چندین بخش اطلاعات اضافی به آن ضمیمه شده است، مانند کاربردهای مجاز و ممنوع گواهی‌نامه و احتمالاً یک «نام مستعار» (nickname / alias). به‌طور معمول هنگامی که یک گواهی‌نامه در حال اعتبارسنجی است، حداقل یک گواهی‌نامه باید «مورد اعتماد» باشد. به‌طور پیش‌فرض یک گواهی‌نامه مورد اعتماد باید به صورت محلی ذخیره شده باشد و باید یک ریشه CA (Root CA) باشد: هر زنجیره گواهی‌نامه‌ای که به این CA ختم شود برای هر منظوری قابل استفاده است. تنظیمات اعتماد در حال حاضر فقط برای ریشه CA استفاده می‌شوند. آن‌ها امکان کنترل دقیق‌تری روی اهدافی که ریشه CA می‌تواند برای آن‌ها استفاده شود را فراهم می‌کنند. برای مثال، یک CA ممکن است برای کلاینت SSL مورد اعتماد باشد اما برای سرور SSL نه. برای اطلاعات بیشتر در مورد مفهوم تنظیمات اعتماد به openssl-verification-options(1) مراجعه کنید. نسخه‌های آینده OpenSSL تنظیمات اعتماد را روی هر گواهی‌نامه‌ای تشخیص خواهند داد، نه فقط ریشه‌های CA. -trustout علامت‌گذاری هر خروجی PEM گواهی‌نامه به عنوان یک گواهی‌نامه (مورد اعتماد) به جای یک گواهی‌نامه معمولی. یک گواهی‌نامه معمولی یا مورد اعتماد می‌تواند به عنوان ورودی داده شود اما به‌طور پیش‌فرض یک گواهی‌نامه معمولی در خروجی تولید می‌شود و تنظیمات اعتماد کنار گذاشته می‌شوند. با گزینه -trustout یک گواهی‌نامه مورد اعتماد در خروجی نوشته می‌شود. اگر هر یک از تنظیمات اعتماد تغییر داده شود، یک گواهی‌نامه مورد اعتماد به‌طور خودکار در خروجی تولید می‌شود. -setalias arg «نام مستعار» (alias) گواهی‌نامه را تنظیم می‌کند. این امکان را فراهم می‌سازد که به گواهی‌نامه با یک نام مستعار اشاره شود، برای مثال "Steve's Certificate". -clrtrust تمام کاربردهای مجاز یا مورد اعتماد گواهی‌نامه را پاک می‌کند. -addtrust arg یک کاربرد مورد اعتماد به گواهی‌نامه اضافه می‌کند. هر نام شیئی می‌تواند در اینجا استفاده شود اما در حال حاضر تنها clientAuth، serverAuth، emailProtection و anyExtendedKeyUsage تعریف شده‌اند. از OpenSSL 1.1.0 به بعد، آخرین مورد از این گزینه‌ها در صورت رد شدن، تمام اهداف را مسدود می‌کند یا در صورت مورد اعتماد بودن، تمام اهداف را فعال می‌سازد. سایر برنامه‌های کاربردی OpenSSL ممکن است کاربردهای بیشتری تعریف کنند. -clrreject تمام کاربردهای ممنوع یا ردشده گواهی‌نامه را پاک می‌کند. -addreject arg یک هدف ممنوع برای نقطه اتکای اعتماد (trust anchor) اضافه می‌کند. این گزینه همان مقادیر گزینه -addtrust را می‌پذیرد. گزینه‌های عمومی (Generic options) -rand files, -writerand file برای جزئیات بیشتر، بخش «گزینه‌های وضعیت تصادفی» در openssl(1) را ببینید. -engine id بخش «گزینه‌های موتور» در openssl(1) را ببینید. این گزینه منسوخ شده است. -provider name -provider-path path -provparam [name:]key=value -propquery propq بخش «گزینه‌های ارائه‌دهنده» در openssl(1)، provider(7) و property(7) را ببینید. پرچم‌های چاپ متن (Text Printing Flags) علاوه بر سفارشی‌سازی قالب چاپ نام، سفارشی‌سازی فیلدهای واقعی چاپ‌شده با استفاده از گزینه certopt در هنگام حضور گزینه text نیز امکان‌پذیر است. رفتار پیش‌فرض، چاپ تمام فیلدها است. compatible استفاده از قالب قدیمی. این معادل عدم تعیین هیچ گزینه چاپی است. no_header عدم چاپ اطلاعات سرآیند: یعنی خطوطی که عبارت‌های "Certificate" و "Data" را نشان می‌دهند. no_version عدم چاپ شماره نسخه. no_serial عدم چاپ شماره سریال. no_signame عدم چاپ الگوریتم امضای استفاده‌شده. no_validity عدم چاپ اعتبار، یعنی فیلدهای notBefore و notAfter. no_subject عدم چاپ نام موضوع. no_issuer عدم چاپ نام صادرکننده. no_pubkey عدم چاپ کلید عمومی. no_sigdump عدم ارائه دامپ هگزادسیمال از امضای گواهی‌نامه. no_aux عدم چاپ اطلاعات اعتماد گواهی‌نامه. no_extensions عدم چاپ هیچ‌یک از افزونه‌های X509V3. ext_default حفظ رفتار پیش‌فرض افزونه‌ها: تلاش برای چاپ افزونه‌های پشتیبانی‌نشده گواهی‌نامه. ext_error چاپ پیام خطا برای افزونه‌های پشتیبانی‌نشده گواهی‌نامه. ext_parse تجزیه نحوی ASN1 برای افزونه‌های پشتیبانی‌نشده. ext_dump دامپ هگزادسیمال افزونه‌های پشتیبانی‌نشده. ca_default مقدار مورد استفاده توسط openssl-ca(1)، معادل no_issuer، no_pubkey، no_header و no_version. مثال‌ها (EXAMPLES) توجه: در این مثال‌ها علامت '\' به این معنی است که مثال باید کاملاً در یک خط باشد. چاپ محتویات یک گواهی‌نامه: openssl x509 -in cert.pem -noout -text چاپ افزونه «Subject Alternative Name» (نام جایگزین موضوع) یک گواهی‌نامه: openssl x509 -in cert.pem -noout -ext subjectAltName چاپ افزونه‌های بیشتر از یک گواهی‌نامه: openssl x509 -in cert.pem -noout -ext subjectAltName,nsCertType چاپ شماره سریال گواهی‌نامه: openssl x509 -in cert.pem -noout -serial چاپ نام موضوع گواهی‌نامه: openssl x509 -in cert.pem -noout -subject چاپ نام موضوع گواهی‌نامه در قالب RFC2253: openssl x509 -in cert.pem -noout -subject -nameopt RFC2253 چاپ نام موضوع گواهی‌نامه در قالب تک‌خطی (oneline) در پایانه‌ای که از UTF8 پشتیبانی می‌کند: openssl x509 -in cert.pem -noout -subject -nameopt oneline,-esc_msb چاپ اثرانگشت SHA1 گواهی‌نامه: openssl x509 -sha1 -in cert.pem -noout -fingerprint تبدیل یک گواهی‌نامه از قالب PEM به قالب DER: openssl x509 -in cert.pem -inform PEM -out cert.der -outform DER تبدیل یک گواهی‌نامه به یک درخواست گواهی‌نامه: openssl x509 -x509toreq -in cert.pem -out req.pem -key key.pem تبدیل یک درخواست گواهی‌نامه به یک گواهی‌نامه خودامضا با استفاده از افزونه‌های مربوط به CA: openssl x509 -req -in careq.pem -extfile openssl.cnf -extensions v3_ca \ -key key.pem -out cacert.pem امضای یک درخواست گواهی‌نامه با استفاده از گواهی‌نامه CA بالا و افزودن افزونه‌های گواهی‌نامه کاربر: openssl x509 -req -in req.pem -extfile openssl.cnf -extensions v3_usr \ -CA cacert.pem -CAkey key.pem -CAcreateserial تنظیم یک گواهی‌نامه جهت اعتماد برای استفاده کلاینت SSL و تغییر نام مستعار آن به "Steve's Class 1 CA": openssl x509 -in cert.pem -addtrust clientAuth \ -setalias "Steve's Class 1 CA" -out trust.pem بررسی اینکه آیا هر یک از گواهی‌نامه‌های موجود در یک زنجیره ظرف ۳۰ روز آینده منقضی می‌شوند یا خیر (اگر هیچ‌کدام منقضی نشوند صفر و در صورتی که هرکدام منقضی شوند مقدار غیرصفر برمی‌گرداند): openssl x509 -in chain.pem -multi -checkend $[3600*24*30] \ && echo 'perform renewal' || echo 'renewal unnecessary' نکات (NOTES) تبدیل به قالب UTF8 مورد استفاده در گزینه‌های نام فرض می‌کند که رشته‌های T61String از مجموعه نویسه‌های ISO8859-1 استفاده می‌کنند. این فرضی نادرست است اما مرورگرهای Netscape و MSIE و همچنین بسیاری از گواهی‌نامه‌ها این کار را انجام می‌دهند. بنابراین اگرچه این تبدیل نادرست است، اما احتمال چاپ صحیح اکثریت گواهی‌نامه‌ها را افزایش می‌دهد. گزینه -email نام موضوع و افزونه نام جایگزین موضوع (subject alternative name) را جستجو می‌کند. تنها نشانی‌های رایانامه منحصربه‌فرد چاپ می‌شوند: یک نشانی یکسان بیش از یک بار چاپ نخواهد شد. اشکالات (BUGS) تولید گواهی‌نامه‌ها یا درخواست‌های نامعتبر با تعیین کلید خصوصی اشتباه، استفاده از افزونه‌های نامناسب X.509 یا در برخی موارد استفاده از گزینه‌های ناسازگار امکان‌پذیر است: این موارد باید بررسی و کنترل شوند. باید گزینه‌هایی برای تنظیم صریح مواردی مانند تاریخ آغاز و پایان به جای انحراف زمانی از زمان جاری وجود داشته باشد. همچنین ببینید (SEE ALSO) openssl(1), openssl-req(1), openssl-ca(1), openssl-genrsa(1), openssl-gendsa(1), openssl-verify(1), x509v3_config(5) تاریخچه (HISTORY) الگوریتم هش استفاده‌شده در گزینه‌های -subject_hash و -issuer_hash پیش از OpenSSL 1.0.0 بر پایه الگوریتم منسوخ‌شده MD5 و کدگذاری نام متمایز (distinguished name یا DN) بود. در OpenSSL 1.0.0 و بعد از آن، این الگوریتم بر پایه یک نسخه متعارف از DN با استفاده از SHA1 است. این بدان معنی است که پیوندهای هر پوشه‌ای که از قالب قدیمی استفاده می‌کند باید با استفاده از openssl-rehash(1) یا دستورات مشابه بازسازی شوند. گزینه -signkey در OpenSSL 3.0 به -key تغییر نام یافت، در حالی که نام قدیمی به عنوان نام مستعار حفظ شد. گزینه -engine در OpenSSL 3.0 منسوخ شد. گزینه -C در OpenSSL 3.0 حذف شد. از OpenSSL 3.2 به بعد، گواهی‌نامه‌های تولیدشده دارای نسخه ۳ استاندارد X.509 هستند، و افزونه‌های شناسه کلید به‌طور پیش‌فرض اضافه می‌شوند. حق نشر (COPYRIGHT) حق نشر ۲۰۰۰-۲۰۲۵ نویسندگان پروژه OpenSSL. کلیه حقوق محفوظ است. تحت مجوز آپاچی نسخه ۲.۰ («مجوز») منتشر شده است. شما نمی‌توانید از این فایل جز در انطباق با مجوز استفاده کنید. می‌توانید یک کپی از مجوز را در فایل LICENSE در توزیع منبع یا در به دست آورید. 3.6.4 2026-08-25 OPENSSL-X509(1ssl)