| 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)، در صورت وجود.
- -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 گواهینامه به عنوان یک گواهینامه <trusted> (مورد اعتماد) به جای یک گواهینامه معمولی. یک گواهینامه معمولی یا مورد اعتماد میتواند به عنوان ورودی داده شود اما بهطور پیشفرض یک گواهینامه معمولی در خروجی تولید میشود و تنظیمات اعتماد کنار گذاشته میشوند. با گزینه -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 در توزیع منبع یا در https://www.openssl.org/source/license.html به دست آورید.
| 2026-08-25 | 3.6.4 |