| OPENSSL(1) | General Commands Manual | OPENSSL(1) |
نام (NAME)
openssl —
ابزار خط
فرمان OpenSSL
خلاصه دستور (SYNOPSIS)
openssl command
[command_opt ...] [command_arg
...]
openssl
list-standard-commands |
list-message-digest-commands |
list-cipher-commands |
list-cipher-algorithms |
list-message-digest-algorithms |
list-public-key-algorithms
openssl
no-command
توضیحات (DESCRIPTION)
OpenSSL یک
جعبهابزار
رمزنگاری
برای
پیادهسازی
پروتکل
شبکه Transport Layer Security (TLS) و
همچنین
استانداردهای
رمزنگاری
مرتبط است.
برنامه
openssl یک
ابزار خط
فرمان برای
استفاده از
توابع
مختلف
رمزنگاری
موجود در
کتابخانه
رمزنگاری
openssl از
طریق شل
است.
شبهدستورهای
list-standard-commands ،
list-message-digest-commands و
list-cipher-commands
فهرستی (در
هر سطر یک
مورد) از نام
تمامی
دستورات
استاندارد،
دستورات
خلاصه پیام
(message digest) یا
دستورات
رمزگذاری (cipher)
موجود در
ابزار جاری
openssl را در
خروجی چاپ
میکنند.
شبهدستورهای
list-cipher-algorithms و
list-message-digest-algorithms
تمامی
نامهای
الگوریتمهای
رمزگذاری و
خلاصه پیام
را در هر سطر
یک مورد
فهرست
میکنند.
نامهای
مستعار
بهصورت
زیر فهرست
میشوند:
شبهدستور
list-public-key-algorithms
تمامی
الگوریتمهای
کلید عمومی
پشتیبانیشده
را فهرست
میکند.
شبهدستور
no-command
بررسی
میکند که
آیا دستوری
با نام
مشخصشده
در دسترس
است یا خیر.
اگر command
وجود
نداشته
باشد،
مقدار ۰ را
برمیگرداند
و عبارت
no-command را
چاپ
میکند؛ در
غیر این
صورت مقدار
۱ را
برمیگرداند
و عبارت
command را چاپ
میکند. در
هر دو حالت،
خروجی به stdout
ارسال شده و
چیزی در stderr
چاپ
نمیشود.
آرگومانهای
خط فرمان
اضافی
همواره
نادیده
گرفته
میشوند. از
آنجا که
برای هر
رمزگذار
دستوری
همنام
وجود دارد،
این قابلیت
روشی آسان
برای
اسکریپتهای
شل جهت
بررسی
دسترسیپذیری
الگوریتمهای
رمزگذاری
در برنامه
openssl فراهم
میکند.
نکته:
no-command
قادر به
تشخیص
شبهدستورهایی
مانند quit
،
list-...-commands
یا خود
no-command
نیست.
ASN1PARSE
openssl asn1parse- [
-i] [-dlimitnumber] [-dump] [-genconffile] [-genstrstr] [-infile] [-informder|pem|txt] [-lengthnumber] [-noout] [-offsetnumber] [-oidfile] [-outfile] [-strparseoffset]
دستور
asn1parse یک
ابزار
تشخیصی است
که
میتواند
ساختارهای
ASN.1 را تجزیه
کند. همچنین
میتوان از
آن برای
استخراج
داده از
دادههای
قالببندیشده
با ASN.1
استفاده
کرد.
گزینهها به شرح زیر هستند:
-dlimitnumber- تخلیه (dump) اولین number بایت از دادههای ناشناخته در قالب هگزادسیمال.
-dump- تخلیه دادههای ناشناخته در قالب هگزادسیمال.
-genconffile,-genstrstr- تولید
دادههای
کدگذاریشده
بر اساس
رشته str ،
فایل file
یا هر دو،
با استفاده
از قالبی که
در
ASN1_generate_nconf(3)
شرح داده
شده است.
اگر فقط
file مشخص
شده باشد،
رشته مورد
نظر از بخش
پیشفرض با
استفاده از
نام “asn1” به
دست میآید.
دادههای
کدگذاریشده
از
تجزیهکننده
ASN.1 عبور داده
میشوند و
به گونهای
در خروجی
چاپ
میشوند که
گویی از یک
فایل
آمدهاند؛
بنابراین
میتوان
محتوا را
بررسی کرد و
با استفاده
از گزینه
-outدر یک فایل ذخیره نمود. -i- دندانهدار کردن خروجی متناسب با "عمق" ساختارها.
-infile- فایل ورودی برای خواندن، یا در صورت عدم تعیین، ورودی استاندارد.
-informder|pem|txt- قالب ورودی.
-lengthnumber- تعداد بایتها برای تجزیه؛ حالت پیشفرض تا پایان فایل است.
-noout- خودداری از ارسال نسخه تجزیهشده فایل ورودی به خروجی.
-offsetnumber- آفست شروع برای آغاز تجزیه؛ حالت پیشفرض ابتدای فایل است.
-oidfile- فایلی حاوی
شناسههای
شیء اضافی (OID).
اگر یک OID
(شناسه شیء)
در جدول
داخلی
opensslوجود نداشته باشد، به صورت عددی (برای نمونه 1.2.3.4) نمایش داده خواهد شد.هر سطر شامل سه ستون است: ستون اول OID در قالب عددی است و باید با فاصله خالی دنبال شود. ستون دوم "نام کوتاه" است که یک کلمه منفرد بوده و با فاصله خالی دنبال میشود. ستون پایانی باقیمانده سطر و "نام کامل" است.
asn1parseنام کامل را نمایش میدهد. -outfile- فایل خروجی
کدگذاریشده
با DER؛ حالت
پیشفرض
عدم تولید
خروجی
کدگذاریشده
است (در
صورت ترکیب
با
-strparseکاربرد دارد). -strparseoffset- تجزیه اوکتتهای محتوای شیء ASN.1 که از offset شروع میشود. این گزینه میتواند چندین بار برای "پیمایش به عمق" یک ساختار تودرتو استفاده شود.
CA
openssl ca- [
-batch] [-certfile] [-configfile] [-create_serial] [-crl_CA_compromisetime] [-crl_compromisetime] [-crl_holdinstruction] [-crl_reasonreason] [-crldaysdays] [-crlextssection] [-crlhourshours] [-crlsecseconds] [-daysarg] [-enddatedate] [-extensionssection] [-extfilefile] [-gencrl] [-infile] [-infiles] [-keypassword] [-keyfilefile] [-keyformpem|der] [-mdalg] [-multivalue-rdn] [-namesection] [-noemailDN] [-notext] [-outfile] [-outdirdirectory] [-passinarg] [-policyarg] [-preserveDN] [-revokefile] [-selfsign] [-sigoptnm:v] [-ss_certfile] [-startdatedate] [-statusserial] [-subjarg] [-updatedb] [-utf8] [-verbose]
دستور
ca یک
برنامه
کمینه برای
مرجع صدور
گواهی (CA) است.
از این
ابزار
میتوان
برای امضای
درخواستهای
گواهی در
قالبهای
مختلف و
ایجاد
فهرستهای
ابطال
گواهی (CRL)
استفاده
کرد. همچنین
این دستور
یک پایگاه
داده متنی
از
گواهیهای
صادرشده و
وضعیت
آنها
نگهداری
میکند.
گزینههای مربوط به مرجع صدور گواهی (CA) به شرح زیر هستند:
-batch- حالت غیرتعاملی (دستهای یا Batch). در این حالت هیچ پرسشی پرسیده نخواهد شد و تمام گواهیها به صورت خودکار تایید و صادر میشوند.
-certfile- فایل گواهی CA.
-configfile- تعیین فایل پیکربندی جایگزین.
-create_serial- اگر خواندن شماره سریال از فایل متنی مشخصشده در پیکربندی با شکست مواجه شود، یک سریال تصادفی جدید برای استفاده به عنوان شماره سریال بعدی ایجاد میکند.
-daysarg- تعداد روزهایی که گواهی برای آن مدت معتبر خواهد بود.
-enddatedate- تنظیم تاریخ انقضا. قالب تاریخ به صورت [YY]YYMMDDHHMMSSZ است، و برای تاریخهای سال ۲۰۵۰ به بعد درج هر چهار رقم سال الزامی است.
-extensionssection- بخشی از
فایل
پیکربندی
که شامل
افزونههای
گواهی است
تا در هنگام
صدور گواهی
اضافه شوند
(پیشفرض
x509_extensionsاست مگر اینکه از گزینه-extfileاستفاده شود). اگر هیچ بخش افزونهای وجود نداشته باشد، گواهی نسخه ۱ (V1) ایجاد میشود. اگر بخش افزونه وجود داشته باشد (حتی اگر خالی باشد ،) گواهی نسخه ۳ (V3) ایجاد میشود. برای جزئیات قالب بخش افزونه، صفحه راهنمای x509v3.cnf(5) را ببینید. -extfilefile- یک file
پیکربندی
اضافی برای
خواندن
افزونههای
گواهی از آن
(استفاده از
بخش
پیشفرض
مگر اینکه
از گزینه
-extensionsنیز استفاده شود). -infile- یک file ورودی حاوی یک درخواست گواهی منفرد برای امضا توسط CA.
-infiles- در صورت استفاده، این گزینه باید آخرین گزینه باشد؛ تمام آرگومانهای بعدی به عنوان نام فایلهای حاوی درخواست گواهی در نظر گرفته میشوند.
-keypassword- عبارت password که برای رمزنگاری کلید خصوصی استفاده میشود. از آنجا که در برخی سیستمها آرگومانهای خط فرمان برای دیگران قابل مشاهده هستند، این گزینه باید با احتیاط استفاده شود.
-keyfilefile- کلید خصوصی برای امضای درخواستها.
-keyformpem|der- قالب فایل
کلید خصوصی.
حالت
پیشفرض
pemاست. -mdalg- خلاصه پیام مورد استفاده. مقادیر ممکن شامل md5 و sha1 است. این گزینه برای CRLها نیز اعمال میشود.
-multivalue-rdn- این گزینه
باعث
میشود که
آرگومان
-subjبا پشتیبانی کامل از RDNهای چندمقداری تفسیر شود، برای نمونه "/DC=org/DC=OpenSSL/DC=users/UID=123456+CN=John Doe". اگر گزینه-multivalue-rdnاستفاده نشود، مقدار UID برابر با "123456+CN=John Doe" تنظیم خواهد شد. -namesection- مشخصکننده
section مورد
استفاده از
فایل
پیکربندی
(بازنویسیکننده
default_caدر بخشca). -noemailDN- در صورتی که
فیلد EMAIL در DN
درخواست
وجود داشته
باشد، DN
گواهی
میتواند
شامل آن
باشد؛ با
این حال
سیاست
مناسب این
است که
ایمیل فقط
در افزونه
altNameگواهی قرار داده شود. هنگامی که این گزینه تنظیم شود، فیلد EMAIL از موضوع (subject) گواهی حذف شده و تنها در افزونهها (در صورت وجود) قرار میگیرد. کلیدواژه email_in_dn میتواند در فایل پیکربندی برای فعالسازی این رفتار استفاده شود. -notext- از درج شکل متنی گواهی در فایل خروجی خودداری میکند.
-outfile- فایل خروجی برای نوشتن گواهیها در آن. حالت پیشفرض خروجی استاندارد است. جزئیات گواهی نیز با قالب PEM در این فایل نوشته خواهد شد.
-outdirdirectory- پوشه directory برای ذخیره گواهیهای خروجی. گواهی در فایلی با نام متشکل از شماره سریال در مبنای ۱۶ به همراه پسوند ".pem" ذخیره خواهد شد.
-passinarg- منبع رمز عبور کلید.
-policyarg- تعریف
"خطمشی (policy)"
مورد
استفاده
برای CA. بخش policy
در فایل
پیکربندی
شامل
مجموعهای
از
متغیرهای
متناظر با
فیلدهای DN
گواهی است.
مقادیر
میتوانند
یکی از
موارد "match"
(مقدار باید
با همان
فیلد در
گواهی CA
مطابقت
داشته
باشد)، "supplied"
(مقدار باید
حتماً وجود
داشته باشد)
یا "optional"
(مقدار
اختیاری
است) باشند.
هر فیلدی که
در بخش policy ذکر
نشده باشد
بدون هشدار
حذف
میشود،
مگر اینکه
گزینه
-preserveDNتنظیم شده باشد، هرچند این رفتار بیشتر یک ناهماهنگی است تا یک رفتار تعمدی. -preserveDN- به طور معمول، ترتیب DN یک گواهی برابر با ترتیب فیلدها در بخش خطمشی (policy) مربوطه است. هنگامی که این گزینه تنظیم شود، ترتیب همانند درخواست خواهد بود. این گزینه عمدتاً برای سازگاری با کنترلهای ثبتنام قدیمیتر IE است که تنها در صورتی گواهیها را میپذیرفتند که ترتیب DN آنها دقیقاً مطابق با درخواست بود. این گزینه برای Xenroll نیازی نیست.
-selfsign- نشان
میدهد که
گواهیهای
صادرشده
باید با
همان کلیدی
که
درخواستهای
گواهی با آن
امضا
شدهاند (که
با
-keyfileداده شده) امضا شوند. درخواستهای گواهی که با کلید متفاوتی امضا شدهاند نادیده گرفته میشوند. اگر-gencrlیا-ss_certداده شوند،-selfsignنادیده گرفته خواهد شد.یکی از پیامدهای استفاده از
-selfsignاین است که گواهی خودامضاشده در میان ورودیهای پایگاه داده گواهی ظاهر میشود (گزینه پیکربندیdatabaseرا ببینید) و از همان شمارنده شماره سریال گواهیهای دیگر استفاده میکند. -sigoptnm:v- ارسال گزینهها به الگوریتم امضا در طول عملیات امضا یا اعتبارسنجی. نامها و مقادیر این گزینهها وابسته به الگوریتم هستند.
-ss_certfile- یک گواهی خودامضاشده منفرد برای امضا توسط CA.
-startdatedate- تنظیم تاریخ شروع. قالب تاریخ به صورت [YY]YYMMDDHHMMSSZ است، و برای تاریخهای سال ۲۰۵۰ به بعد درج هر چهار رقم سال الزامی است.
-subjarg- جایگزین نام موضوع (subject) ارائهشده در درخواست میشود. آرگومان arg باید به این صورت قالببندی شود: /type0=value0/type1=value1/type2=...; کاراکترها میتوانند با ‘\’ (بکاسلش) اسکیپ شوند، هیچ فاصلهای نادیده گرفته نمیشود.
-utf8- تفسیر مقادیر فیلدهای خواندهشده از ترمینال یا فایل پیکربندی به عنوان رشتههای UTF-8. به طور پیشفرض، آنها به عنوان ASCII تفسیر میشوند.
-verbose- چاپ جزئیات بیشتر درباره عملیات در حال انجام.
گزینههای مربوط به فهرستهای ابطال گواهی (CRL) به شرح زیر هستند:
-crl_CA_compromisetime- مشابه
-crl_compromiseاست، با این تفاوت که دلیل ابطال بر روی CACompromise تنظیم میشود. -crl_compromisetime- تنظیم دلیل ابطال بر روی keyCompromise و زمان افشا بر روی time. پارامتر time باید در قالب GeneralizedTime یعنی YYYYMMDDHHMMSSZ باشد.
-crl_holdinstruction- تنظیم کد دلیل ابطال CRL بر روی certificateHold و دستورالعمل تعلیق بر روی instruction که باید یک OID باشد. اگرچه هر OIDای میتواند استفاده شود، معمولاً تنها holdInstructionNone (که استفاده از آن توسط RFC 2459 منع شده)، holdInstructionCallIssuer یا holdInstructionReject استفاده میشوند.
-crl_reasonreason- دلیل ابطال، که در آن reason یکی از موارد زیر است: unspecified، keyCompromise، CACompromise، affiliationChanged، superseded، cessationOfOperation، certificateHold یا removeFromCRL. تطبیق reason به حروف بزرگ و کوچک حساس نیست. تنظیم هرگونه دلیل ابطال باعث میشود که CRL نسخه ۲ (v2) شود. در عمل، removeFromCRL کاربرد چندانی ندارد زیرا تنها در delta CRLها کاربرد دارد که در حال حاضر پیادهسازی نشدهاند.
-crldaysdays- تعداد
روزهای
باقیمانده
تا سررسید CRL
بعدی. این
تعداد روز
از اکنون
است که در
فیلد
nextUpdateمربوط به CRL قرار میگیرد. -crlextssection- بخش section از فایل پیکربندی که شامل افزونههای CRL برای گنجاندن است. اگر هیچ بخش افزونه CRL وجود نداشته باشد، یک CRL نسخه ۱ ایجاد میشود؛ اگر بخش افزونه CRL موجود باشد (حتی اگر خالی باشد) یک CRL نسخه ۲ ایجاد خواهد شد. افزونههای مشخصشده مربوط به خود CRL هستند و نه مدخلهای CRL. باید توجه داشت که برخی نرمافزارها قادر به پردازش CRL نسخه ۲ نیستند. برای جزئیات قالب بخش افزونه، صفحه راهنمای x509v3.cnf(5) را ببینید.
-crlhourshours- تعداد ساعتهای باقیمانده تا موعد CRL بعدی.
-crlsecseconds- تعداد ثانیههای باقیمانده تا موعد CRL بعدی.
-gencrl- ایجاد یک CRL بر اساس اطلاعات موجود در فایل نمایه (index).
-revokefile- یک file حاوی گواهی برای ابطال.
-statusserial- نمایش وضعیت گواهی با شماره سریال serial.
-updatedb- بهروزرسانی نمایه پایگاه داده برای پاکسازی گواهیهای منقضیشده.
بسیاری از
گزینهها
را میتوان
در بخش ca
از فایل
پیکربندی
(یا در بخش
پیشفرض
فایل
پیکربندی)
تنظیم کرد
که با
استفاده از
default_ca یا
-name مشخص
میشود.
گزینه preserve
مستقیماً
از بخش ca
خوانده
میشود.
بسیاری از گزینههای فایل پیکربندی با گزینههای خط فرمان یکسان هستند. هر جا که گزینه در هر دو فایل پیکربندی و خط فرمان وجود داشته باشد، مقدار خط فرمان استفاده میشود. در مواردی که گزینهای به عنوان اجباری توصیف شده است، باید در فایل پیکربندی یا معادل خط فرمان آن (در صورت وجود) ارائه شود.
certificate- مشابه
-cert. فایل حاوی گواهی CA را مشخص میکند. اجباری. copy_extensions- نحوه
مدیریت
افزونهها
در
درخواستهای
گواهی را
تعیین
میکند. اگر
بر روی
noneتنظیم شود یا این گزینه وجود نداشته باشد، افزونهها نادیده گرفته شده و در گواهی کپی نمیشوند. اگر بر رویcopyتنظیم شود، هر افزونه موجود در درخواست که هنوز در گواهی موجود نباشد به گواهی کپی میشود. اگر بر رویcopyallتنظیم شود، تمام افزونههای موجود در درخواست در گواهی کپی میشوند: اگر افزونه از قبل در گواهی وجود داشته باشد، ابتدا حذف میشود.گزینه
copy_extensionsباید با احتیاط استفاده شود. در صورت عدم دقت، میتواند یک خطر امنیتی ایجاد کند. برای مثال، اگر یک درخواست گواهی حاوی افزونهbasicConstraintsبا مقدار CA:TRUE باشد و مقدارcopy_extensionsبر رویcopyallتنظیم شده باشد و کاربر هنگام نمایش گواهی متوجه این موضوع نشود، یک گواهی معتبر CA به درخواستکننده اعطا خواهد شد.از این وضعیت میتوان با تنظیم
copy_extensionsبر رویcopyو قرار دادنbasicConstraintsبا مقدار CA:FALSE در فایل پیکربندی جلوگیری کرد. در این صورت، اگر درخواست حاوی افزونهbasicConstraintsباشد، نادیده گرفته خواهد شد.کاربرد اصلی این گزینه این است که به درخواست گواهی اجازه دهد مقادیر برخی از افزونهها مانند
subjectAltNameرا تامین کند. crl_extensions- مشابه
-crlexts. crlnumber- یک فایل متنی حاوی شماره CRL بعدی در مبنای ۱۶. شماره CRL تنها در صورتی در CRLها درج خواهد شد که این فایل وجود داشته باشد. در صورت وجود این فایل، باید حاوی یک شماره CRL معتبر باشد.
database- فایل پایگاه داده متنی مورد استفاده. اجباری. این فایل باید وجود داشته باشد، هرچند در ابتدا خالی خواهد بود.
default_crl_hours,default_crl_days- مشابه
گزینههای
-crlhoursو-crldays. این مقادیر تنها در صورتی استفاده خواهند شد که هیچیک از گزینههای خط فرمان مشخص نشده باشند. برای ایجاد یک CRL باید حداقل یکی از این دو موجود باشد. default_days- مشابه
گزینه
-days. تعداد روزهایی که گواهی برای آن مدت صادر میشود. default_enddate- مشابه
گزینه
-enddate. باید یا این گزینه یاdefault_days(یا معادلهای خط فرمان آنها) ارائه شوند. default_md- مشابه
گزینه
-md. خلاصه پیام مورد استفاده. اجباری. default_startdate- مشابه
گزینه
-startdate. تاریخ شروع اعتبار گواهی. اگر تنظیم نشود، زمان جاری سیستم استفاده میشود. email_in_dn- مشابه
-noemailDN. اگر قرار است فیلد EMAIL از DN گواهی حذف شود، کافی است این مقدار بر روی "no" تنظیم شود. در صورت عدم وجود، پیشفرض اجازه دادن به وجود فیلد EMAIL در DN گواهی است. name_opt,cert_opt- این
گزینهها
قالبی را
تعیین
میکنند که
برای نمایش
جزئیات
گواهی
هنگام
درخواست
تایید امضا
از کاربر
استفاده
میشود.
تمام
گزینههای
پشتیبانیشده
توسط
سوئیچهای
-nameoptو-certoptدر ابزارx509را میتوان در اینجا استفاده کرد، به جز اینکهno_signameوno_sigdumpبه صورت دائمی تنظیم شدهاند و نمیتوان آنها را غیرفعال کرد (زیرا امضای گواهی در این مرحله هنوز انجام نشده و نمیتواند نمایش داده شود).برای سهولت، مقدار
ca_defaultتوسط هر دو پذیرفته میشود تا خروجی مناسبی تولید کند.اگر هیچیک از این گزینهها موجود نباشد، قالبی که در نسخههای قدیمیتر
opensslاستفاده میشد به کار گرفته میشود. استفاده از قالب قدیمی اکیداً منع میشود زیرا تنها فیلدهای ذکرشده در بخشpolicyرا نمایش میدهد، انواع رشتههای چندکاراکتری را به درستی پردازش نمیکند و افزونهها را نمایش نمیدهد. new_certs_dir- مشابه
گزینه خط
فرمان
-outdir. دایرکتوری محل قرارگیری گواهیهای جدید را مشخص میکند. اجباری. oid_file- مشخصکننده فایلی حاوی شناسههای شیء (OID) اضافی است. هر سطر فایل باید شامل شکل عددی شناسه شیء به همراه فاصله، سپس نام کوتاه به همراه فاصله و در نهایت نام کامل باشد.
oid_section- مشخصکننده بخشی در فایل پیکربندی حاوی شناسههای شیء اضافی است. هر سطر باید شامل نام کوتاه شناسه شیء به همراه ‘=’ و شکل عددی باشد. در صورت استفاده از این گزینه، نام کوتاه و نام کامل یکسان خواهند بود.
policy- مشابه
-policy. اجباری. preserve- مشابه
-preserveDN. private_key- مشابه
گزینه
-keyfile. فایل حاوی کلید خصوصی CA. اجباری. serial- یک فایل متنی حاوی شماره سریال بعدی در مبنای ۱۶. اجباری. این فایل باید وجود داشته باشد و شامل یک شماره سریال معتبر باشد.
unique_subject- اگر مقدار
yesداده شود، مدخلهای گواهی معتبر در پایگاه داده باید دارای موضوعهای (subjects) یکتا باشند. اگر مقدارnoداده شود، چندین مدخل گواهی معتبر میتوانند دقیقاً موضوع یکسانی داشته باشند. مقدار پیشفرضyesاست.توجه داشته باشید که در برخی شرایط ایجاد گواهی بدون هیچ موضوعی مجاز است. در مواردی که چندین گواهی بدون موضوع وجود دارند، این حالت به عنوان تکراری شمرده نمیشود.
x509_extensions- مشابه
-extensions.
CERTHASH
openssl certhash- [
-nv] dir ...
دستور
certhash مقدار
هش
فایلهای
".pem" را در
فهرست
دایرکتوریهای
مشخصشده
محاسبه
کرده و برای
هر فایل
پیوندهای
نمادین
ایجاد
میکند، به
گونهای که
نام پیوند،
همان مقدار
هش است. برای
نحوه
استفاده از
پیوندهای
هش، صفحه
راهنمای
SSL_CTX_load_verify_locations(3)
را ببینید.
پیوندهای
ایجادشده
به فرم "HHHHHHHH.D"
هستند، که
در آن هر ‘H’
یک نویسه
هگزادسیمال
و ‘D’ یک رقم
دهدهی
منفرد است.
هشهای
مربوط به
CRLها مشابه
هستند، با
این تفاوت
که حرف ‘r’ پس
از نقطه
ظاهر
میشود،
مانند: "HHHHHHHH.rD".
هنگام
پردازش یک
پوشه، certhash
ابتدا تمام
پیوندهایی
را که دارای
نامی با این
نحو و ارجاع
نامعتبر
هستند حذف
میکند.
ممکن است چندین شیء دارای هش یکسانی باشند؛ آنها با افزایش مقدار ‘D’ مشخص خواهند شد. موارد تکراری با مقایسه اثرانگشت کامل SHA256 شناسایی میشوند. در صورت یافتن مورد تکراری، یک هشدار نمایش داده خواهد شد.
همچنین اگر فایلهایی وجود داشته باشند که نتوان آنها را به عنوان گواهی یا CRL تجزیه کرد، هشدار نمایش داده خواهد شد.
گزینهها به شرح زیر هستند:
CIPHERS
openssl ciphers
[-hsVv] [-tls1_2]
[-tls1_3] [control]
دستور
ciphers رشته
control را از
قالبی که در
SSL_CTX_set_cipher_list(3)
مستند شده
است به یک
فهرست مرتب
اولویتبندی
مجموعههای
رمزنگاری SSL
تبدیل
میکند. اگر
هیچ رشته
control مشخص
نشود،
فهرست DEFAULT
چاپ
میشود.
گزینهها به شرح زیر هستند:
-h,-?- نمایش خلاصه پیام نحوه استفاده.
-s- فقط رمزگذارهایی را که توسط روش TLS پشتیبانی میشوند فهرست میکند.
-tls1_2|-tls1_3- در ترکیب با
گزینه
-s-،رمزگذارهایی را فهرست میکند که در صورت مذاکره بر روی نسخه پروتکل مشخصشده، قابل استفاده خواهند بود. -V- خروجی با جزئیات کامل. فهرست کردن رمزگذارها همراه با کد مجموعه رمزگذاری در قالب هگز، نام الگوریتم و توضیحات کامل درباره نسخه پروتکل، تبادل کلید، احراز اصالت، رمزنگاری و الگوریتمهای MAC.
-v- مشابه
-V-،اما بدون نمایش کدهای مجموعه رمزگذاری.
CMS
openssl cms- [
-aes128|-aes192|-aes256|-camellia128|-camellia192|-camellia256|-des|-des3|-rc2-40|-rc2-64|-rc2-128] [-CAfilefile] [-CApathdirectory] [-CRLfilefile] [-binary] [-certfilefile] [-certsoutfile] [-cmsout] [-contentfile] [-crlfeol] [-data_create] [-data_out] [-debug_decrypt] [-decrypt] [-digest_create] [-digest_verify] [-econtent_typetype] [-encrypt] [-EncryptedData_decrypt] [-EncryptedData_encrypt] [-fromaddr] [-infile] [-informder|pem|smime] [-inkeyfile] [-keyformder|pem] [-keyid] [-keyoptnm:v] [-mddigest] [-no_attr_verify] [-no_content_verify] [-no_signer_cert_verify] [-noattr] [-nocerts] [-nodetach] [-nointern] [-nooldmime] [-noout] [-nosigs] [-nosmimecap] [-noverify] [-outfile] [-outformder|pem|smime] [-passinsrc] [-print] [-pwri_passwordarg] [-rctformder|pem|smime] [-receipt_request_all|-receipt_request_first] [-receipt_request_fromaddr] [-receipt_request_print] [-receipt_request_toaddr] [-recipfile] [-resign] [-secretkeykey] [-secretkeyidid] [-sign] [-sign_receipt] [-signerfile] [-stream|-indef|-noindef] [-subjects] [-text] [-toaddr] [-verify] [-verify_receiptfile] [-verify_retcode] [cert.pem ...]
دستور
cms
نامههای
الکترونیکی
S/MIME نسخه ۳.۱ را
مدیریت
میکند. این
ابزار
میتواند
پیامهای S/MIME
را
رمزگذاری،
رمزگشایی،
امضا و
اعتبارسنجی
کند.
پیام MIME باید بدون هیچ خط خالی میان سرایندها (headers) و خروجی ارسال شود. برخی از برنامههای ایمیل به طور خودکار یک خط خالی اضافه میکنند. ارسال مستقیم پیام با لوله (pipe) به sendmail یکی از روشهای دستیابی به قالب صحیح است.
پیام
ارائهشده
برای امضا
یا
رمزگذاری
باید شامل
هدرهای
ضروری MIME
باشد، در
غیر این
صورت
بسیاری از
کلاینتهای
S/MIME
نمیتوانند
آن را به
درستی
نمایش دهند
(یا اصلاً
نمایش
نمیدهند).
میتوانید
از گزینه
-text برای
افزودن
خودکار
هدرهای متن
ساده
استفاده
کنید.
یک پیام "امضا و رمزگذاریشده" پیامی است که ابتدا امضا شده و سپس رمزگذاری میشود. این کار را میتوان با رمزگذاری پیامی که قبلاً امضا شده است انجام داد.
گزینههای عملیاتی گوناگونی وجود دارند که نوع عملیات اجرایی را تعیین میکنند. معنای سایر گزینهها متناسب با نوع عملیات متفاوت خواهد بود.
-encrypt- رمزگذاری ایمیل برای گواهیهای گیرنده ارائهشده. فایل ورودی پیامی است که باید رمزگذاری شود. فایل خروجی ایمیل رمزگذاریشده در قالب MIME است. نوع واقعی CMS برابر با EnvelopedData است. توجه داشته باشید که هیچ بررسی ابطالی برای گواهی گیرنده انجام نمیشود، بنابراین اگر آن کلید لو رفته باشد، دیگران ممکن است بتوانند متن را رمزگشایی کنند.
-decrypt- رمزگشایی ایمیل با استفاده از گواهی و کلید خصوصی ارائهشده. در فایل ورودی انتظار یک پیام ایمیل رمزگذاریشده در قالب MIME را دارد. ایمیل رمزگشاییشده در فایل خروجی نوشته میشود.
-sign- امضای ایمیل با استفاده از گواهی و کلید خصوصی ارائهشده. فایل ورودی پیامی است که باید امضا شود. پیام امضاشده در قالب MIME در فایل خروجی نوشته میشود.
-verify- اعتبارسنجی ایمیل امضاشده. در ورودی انتظار یک پیام ایمیل امضاشده را دارد و دادههای امضاشده را به خروجی میفرستد. هر دو امضای متن آشکار (clear text) و امضای مات (opaque) پشتیبانی میشوند.
-cmsout- دریافت یک پیام ورودی و نوشتن ساختار CMS کدگذاریشده با PEM در خروجی.
-resign- امضای مجدد یک پیام. دریافت یک پیام موجود و یک یا چند امضاکننده جدید. این عملیات هنگام افزودن یک امضاکننده جدید از خلاصه پیام موجود استفاده میکند. این بدان معناست که ویژگیها باید حداقل در یک امضاکننده موجود با همان خلاصه پیام وجود داشته باشند، در غیر این صورت این عملیات ناموفق خواهد بود.
-data_create- ایجاد یک نوع داده CMS Data.
-data_out- خروجی دادن محتوا از نوع داده ورودی CMS Data.
-digest_create- ایجاد یک نوع داده CMS DigestedData.
-digest_verify- اعتبارسنجی نوع داده CMS DigestedData و خروجی دادن محتوا.
-EncryptedData_encrypt- رمزگذاری محتوا با استفاده از کلید متقارن و الگوریتم ارائهشده با استفاده از نوع داده CMS EncryptedData.
-EncryptedData_decrypt- رمزگشایی یک نوع داده CMS EncryptedData با استفاده از کلید متقارن ارائهشده.
-sign_receipt- تولید و
خروجی دادن
رسید
امضاشده
برای پیام
ارائهشده.
پیام ورودی
باید شامل
درخواست
رسید
امضاشده
باشد. سایر
عملکردهای
آن مشابه
عملیات
-signاست. -verify_receiptfile- اعتبارسنجی
رسید
امضاشده در
فایل. پیام
ورودی باید
حاوی
درخواست
رسید اولیه
باشد. سایر
عملکردهای
آن مشابه
عملیات
-verifyاست.
سایر گزینهها به شرح زیر هستند:
-aes128|-aes192|-aes256|-camellia128|-camellia192|-camellia256|-des|-des3|-rc2-40|-rc2-64|-rc2-128- الگوریتم
رمزگذاری
مورد
استفاده. به
ترتیب
الگوریتمهای
AES با طول
کلید ۱۲۸،
۱۹۲ یا ۲۵۶
بیت، CAMELLIA با
طول ۱۲۸،
۱۹۲ یا ۲۵۶
بیت، DES (۵۶
بیت)، Triple DES (۱۶۸
بیت)، یا RC2 با
طول ۴۰، ۶۴
یا ۱۲۸ بیت؛
در صورت عدم
تعیین، AES با
طول ۲۵۶ بیت
استفاده
میشود.
تنها در
دستورهای
-encryptو-EncryptedData_encryptکاربرد دارد. -binary- به طور معمول، پیام ورودی طبق الزامات مشخصات S/MIME به قالب "استاندارد" (canonical) که در عمل استفاده از CR/LF به عنوان پایان خط است تبدیل میشود. هنگامی که این گزینه ارائه شود، هیچ تبدیلی رخ نمیدهد. این گزینه هنگام پردازش دادههای دودویی که ممکن است در قالب MIME نباشند مفید است.
-CAfilefile- فایل حاوی
گواهیهای
معتمد CA،
مورد
استفاده
همراه با
-verifyو-verify_receipt. -CApathdirectory- پوشه حاوی
گواهیهای
معتمد CA،
مورد
استفاده
همراه با
-verifyو-verify_receipt. این پوشه باید یک پوشه استاندارد گواهی باشد: بدین معنا که هش هر نام موضوع (با استفاده ازx509-hash) باید به هر گواهی پیوند داده شده باشد. -CRLfilefile- امکان مشخص کردن فهرستهای ابطال گواهی (CRL) اضافی را برای اعتبارسنجی فراهم میکند. این CRLها باید در قالب PEM باشند.
- cert.pem ...
- یک یا چند گواهی از گیرندگان پیام: هنگام رمزگذاری پیام استفاده میشود.
-certfilefile- امکان تعیین گواهیهای اضافی را فراهم میکند. هنگام امضا، این گواهیها همراه با پیام گنجانده میشوند. هنگام اعتبارسنجی، این فایلها برای یافتن گواهیهای امضاکننده جستجو میشوند. گواهیها باید در قالب PEM باشند.
-certsoutfile- فایلی که تمام گواهیهای موجود در پیام در آن نوشته میشوند.
-check_ss_sig,-crl_check,-crl_check_all,-extended_crl,-ignore_critical,-issuer_checks,-policy,-policy_check,-purpose,-x509_strict- تنظیم
گزینههای
گوناگون
اعتبارسنجی
زنجیره
گواهی. برای
جزئیات
بیشتر به
دستور
verifyمراجعه کنید. -contentfile- فایل حاوی
محتوای
جداشده (detached content).
این گزینه
تنها با
دستور
-verifyمفید است. همچنین تنها زمانی قابل استفاده است که ساختار CMS از فرم امضای جداشده استفاده کند که در آن محتوا درون پیام گنجانده نشده است. اگر قالب ورودی S/MIME بوده و از نوع محتوای MIME multipart/signed استفاده کند، این گزینه هر محتوایی را بازنویسی خواهد کرد. -crlfeol- خروجی دادن پیام S/MIME با پایان خط CR/LF.
-debug_decrypt- تنظیم پرچم CMS_DEBUG_DECRYPT هنگام رمزگشایی. این گزینه باید با احتیاط استفاده شود، چرا که میتواند حفاظت در برابر حمله MMA را غیرفعال کرده و در صورت عدم یافتن گیرنده خطا بازگرداند. برای جزئیات بیشتر درباره این فلگ به صفحه راهنمای CMS_decrypt(3) مراجعه کنید.
-fromaddr,-subjects,-toaddr- سرایندهای (headers) مرتبط با ایمیل. این سرایندها در خارج از بخش امضاشده پیام قرار میگیرند، بنابراین میتوان آنها را به صورت دستی درج کرد. هنگام امضا، بسیاری از کلاینتهای ایمیل S/MIME بررسی میکنند که نشانی ایمیل گواهی امضاکننده با نشانی مشخصشده در From: مطابقت داشته باشد.
-econtent_typetype- تنظیم نوع
محتوای
کپسولهشده،
مورد
استفاده
همراه با
-sign. اگر ارائه نشود، از نوع Data استفاده میشود. آرگومان type میتواند هر نام معتبر OID در قالب متنی یا عددی باشد. -infile- پیام ورودی برای رمزگذاری یا امضا، یا پیامی که باید رمزگشایی یا اعتبارسنجی شود.
-informder|pem|smime- قالب ورودی
برای
ساختار CMS.
حالت
پیشفرض
smimeاست که پیامی با قالب S/MIME را میخواند. قالبهایpemوderاین رفتار را تغییر میدهند تا به جای آن ساختارهای CMS با قالب PEM و DER انتظار رود. این گزینه در حال حاضر تنها بر قالب ورودی ساختار CMS تاثیر میگذارد؛ اگر ساختار CMS ورودی داده نشود (برای مثال با-encryptیا-sign) این گزینه تاثیری نخواهد داشت. -inkeyfile- کلید خصوصی
مورد
استفاده
هنگام امضا
یا
رمزگشایی.
این کلید
باید با
گواهی
مربوطه
مطابقت
داشته باشد.
اگر این
گزینه مشخص
نشود، کلید
خصوصی باید
در فایل
گواهی
تعیینشده
با گزینه
-recipیا-signerگنجانده شده باشد. هنگام امضا، این گزینه میتواند چندین بار برای تعیین کلیدهای پیاپی استفاده شود. -keyformder|pem- قالب کلید
خصوصی
ورودی. حالت
پیشفرض
pemاست. -keyid- استفاده از
شناسه کلید
موضوع (subject key identifier)
برای
شناسایی
گواهیها
به جای نام
صادرکننده
و شماره
سریال.
گواهی
ارائهشده
باید شامل
افزونه
شناسه کلید
موضوع باشد.
توسط
عملیاتهای
-signو-encryptپشتیبانی میشود. -keyoptnm:v- تنظیم پارامترهای سفارشی برای کلید یا گواهی پیشین جهت رمزگذاری و امضا. در حال حاضر میتوان از آن برای تنظیم RSA-PSS جهت امضا، RSA-OAEP برای رمزگذاری یا تغییر پارامترهای پیشفرض برای ECDH استفاده کرد. این گزینه میتواند چندین بار استفاده شود.
-mddigest- الگوریتم خلاصه پیام مورد استفاده هنگام امضا یا امضای مجدد. اگر وجود نداشته باشد، از الگوریتم خلاصه پیام پیشفرض برای کلید امضا استفاده خواهد شد (معمولاً SHA1).
-no_attr_verify- ویژگیهای امضاکننده را در امضا اعتبارسنجی نمیکند.
-no_content_verify- محتوای یک پیام امضاشده را اعتبارسنجی نمیکند.
-no_signer_cert_verify- گواهی امضاکننده یک پیام امضاشده را اعتبارسنجی نمیکند.
-noattr- از گنجاندن ویژگیها خودداری میکند. به طور معمول هنگام امضای یک پیام، مجموعهای از ویژگیها شامل زمان امضا و الگوریتمهای متقارن پشتیبانیشده گنجانده میشوند. با این گزینه، آنها درج نخواهند شد.
-nocerts- از درج
گواهی
امضاکننده
خودداری
میکند. این
کار اندازه
پیام
امضاشده را
کاهش
میدهد اما
اعتبارسنج
باید یک
نسخه محلی
از گواهی
امضاکننده
را در دسترس
داشته باشد
(برای نمونه
از طریق
گزینه
-certfileارائه شده باشد). -nodetach- هنگام امضای پیام، از امضای مات (opaque signing) استفاده میکند. این فرمت در برابر دستکاری توسط بازپخشکنندههای ایمیل (mail relays) مقاومتر است، اما توسط برنامههای ایمیلی که از S/MIME پشتیبانی نمیکنند خوانده نمیشود. بدون این گزینه، امضای متن آشکار با نوع MIME multipart/signed استفاده میشود.
-nointern- تنها از
گواهیهای
مشخصشده
در گزینه
-certfileاستفاده میشود. هنگام اعتبارسنجی پیام، معمولاً گواهیهای موجود در خود پیام (در صورت وجود) برای یافتن گواهی امضا جستجو میشوند. با این حال گواهیهای ارائهشده میتوانند به عنوان CAهای غیرمعتمد استفاده شوند. -nooldmime- خروجی دادن نوع محتوای قدیمی S/MIME مانند "application/x-pkcs7-".
-noout- از خروجی
دادن
ساختار
تجزیهشده
CMS برای
عملیات
-cmsoutخودداری میکند. این گزینه در صورت ترکیب با گزینه-printیا هنگام بررسی صحت ساختار CMS کاربرد دارد. -nosigs- تلاشی برای اعتبارسنجی امضاهای موجود در پیام انجام نمیدهد.
-nosmimecap- فهرست الگوریتمهای پشتیبانیشده را از ویژگیهای امضاشده حذف میکند؛ سایر گزینهها مانند زمان امضا و نوع محتوا همچنان درج میشوند.
-noverify- گواهی امضاکننده یک پیام امضاشده را اعتبارسنجی نمیکند.
-outfile- متن پیامی که رمزگشایی یا اعتبارسنجی شده است، یا پیام خروجی با قالب MIME که امضا یا اعتبارسنجی شده است.
-outformder|pem|smime- قالب خروجی
ساختار CMS را
تعیین
میکند.
حالت
پیشفرض
smimeاست که پیامی با قالب S/MIME مینویسد. قالبهایpemوderاین رفتار را تغییر میدهند تا ساختارهای CMS با قالب PEM و DER نوشته شوند. این گزینه در حال حاضر تنها بر قالب خروجی ساختار CMS اثر میگذارد؛ اگر ساختار CMS در خروجی نباشد (برای نمونه با-verifyیا-decrypt) این گزینه تاثیری نخواهد داشت. -passinsrc- منبع رمز عبور کلید خصوصی.
-print- چاپ تمام
فیلدهای
ساختار CMS
برای
عملیات
-cmsout. این گزینه عمدتاً برای اهداف آزمایش و عیبیابی مفید است. -pwri_passwordarg- تعیین رمز
عبور PasswordRecipientInfo (PWRI)
مورد
استفاده.
توسط
عملیاتهای
-encryptو-decryptپشتیبانی میشود. -rctformder|pem|smime- تعیین قالب
رسید
امضاشده
برای
استفاده با
عملیات
-receipt_verify. حالت پیشفرضsmimeاست. -receipt_request_all|-receipt_request_first- مشخص
میکند که
درخواستها
باید توسط
تمام
گیرندگان
یا
گیرندگان
رده اول
(کسانی که
مستقیماً و
نه از فهرست
پستی نامه
را دریافت
کردهاند)
ارائه
شوند، تا
عملیات
-signشامل درخواست رسید امضاشده باشد. اگر-receipt_request_fromدرج شده باشد، این گزینه نادیده گرفته میشود. -receipt_request_fromaddr- افزودن نشانی ایمیل مشخص برای ارائه رسیدها.
-receipt_request_print- چاپ محتوای
هرگونه
درخواست
رسید
امضاشده
برای
عملیات
-verify. -receipt_request_toaddr- افزودن نشانی ایمیل مشخص که رسیدهای امضاشده باید به آن ارسال شوند. در صورت درخواست رسید امضاشده، درج این گزینه الزامی است.
-recipfile- هنگام رمزگشایی پیام، این گزینه گواهی گیرنده را مشخص میکند. این گواهی باید با یکی از گیرندگان پیام مطابقت داشته باشد، در غیر این صورت خطایی رخ میدهد. هنگام رمزگذاری پیام، میتوان از این گزینه چندین بار برای تعیین هر یک از گیرندگان استفاده کرد. اگر پارامترهای سفارشی نیاز باشد (برای نمونه جهت تعیین RSA-OAEP) باید از این فرم استفاده شود. تنها گواهیهای حامل کلیدهای RSA، Diffie-Hellman یا EC توسط این گزینه پشتیبانی میشوند.
-secretkeykey- مشخص کردن
کلید
متقارن
مورد
استفاده.
کلید باید
در قالب
هگزادسیمال
ارائه شده و
با
الگوریتم
استفادهشده
سازگار
باشد. توسط
عملیاتهای
-EncryptedData_encrypt-،-EncryptedData_decrypt-،-encryptو-decryptپشتیبانی میشود. هنگام استفاده با-encryptیا-decrypt-،کلید ارائهشده برای بستهبندی یا باز کردن کلید رمزنگاری محتوا با استفاده از یک کلید AES در نوع KEKRecipientInfo به کار میرود. -secretkeyidid- شناسه کلید
برای کلید
متقارن
ارائهشده
در نوع KEKRecipientInfo.
اگر گزینه
-secretkeyهمراه با-encryptاستفاده شود، درج این گزینه الزامی است. در عملیاتهای-decryptاین شناسه برای مکانیابی کلید مربوطه استفاده میشود؛ اگر ارائه نشود، تلاشی برای رمزگشایی تمام ساختارهای KEKRecipientInfo صورت میگیرد. -signerfile- گواهی امضاکننده هنگام امضا یا امضای مجدد یک پیام؛ اگر به بیش از یک امضاکننده نیاز باشد، این گزینه میتواند چندین بار استفاده شود. اگر پیامی در حال اعتبارسنجی باشد و اعتبارسنجی موفقیتآمیز باشد، گواهیهای امضاکنندگان در این فایل نوشته خواهند شد.
-stream|-indef|-noindef- گزینههای
-streamو-indefمعادل یکدیگر هستند و ورودی/خروجی جریانی (streaming I/O) را برای عملیات کدگذاری فعال میکنند. این کار امکان پردازش تکگذره دادهها را بدون نیاز به نگهداری تمام محتوا در حافظه فراهم کرده و پشتیبانی از فایلهای بسیار حجیم را ممکن میسازد. حالت جریانی برای امضای S/MIME با دادههای جداشده در صورتی که قالب خروجیsmimeباشد به طور خودکار فعال میشود؛ در حال حاضر برای سایر عملیات به طور پیشفرض خاموش است. گزینه-noindefورودی/خروجی جریانی را در مواردی که منجر به تولید کدگذاری ساختیافته با طول نامعین میشود غیرفعال میکند. این گزینه در حال حاضر تاثیری ندارد. -text- افزودن هدرهای MIME متن ساده (text/plain) به پیام ارائهشده هنگام رمزگذاری یا امضا. هنگام رمزگشایی یا اعتبارسنجی، هدرهای متنی را حذف میکند: اگر پیام رمزگشاییشده یا اعتبارسنجیشده از نوع MIME text/plain نباشد، خطایی رخ خواهد داد.
-verify_retcode- تنظیم کد
خطای
اعتبارسنجی
به عنوان کد
خروج جهت
نشان دادن
اینکه چه
خطای
اعتبارسنجی
رخ داده
است. تنها
توسط
عملیات
-verifyپشتیبانی میشود. مقدار کد خروج منهای ۳۲ نشاندهنده کد خطای اعتبارسنجی است. برای فهرست کدهای خطای اعتبارسنجی به دستورverifyمراجعه کنید.
کدهای
خروج برای
cms به شرح
زیر هستند:
- 0
- عملیات کاملاً موفقیتآمیز بود.
- 1
- خطایی هنگام تجزیه گزینههای دستور رخ داد.
- 2
- یکی از فایلهای ورودی قابل خواندن نبود.
- 3
- خطایی هنگام ایجاد فایل CMS یا هنگام خواندن پیام MIME رخ داد.
- 4
- خطایی هنگام رمزگشایی یا اعتبارسنجی پیام رخ داد.
- 5
- پیام به درستی اعتبارسنجی شد اما هنگام نوشتن گواهیهای امضاکننده خطایی رخ داد.
- 6
- خطایی هنگام نوشتن فایل خروجی رخ داد.
- 32+
- خطای
اعتبارسنجی
رخ داد در
حالی که
گزینه
-verify_retcodeمشخص شده بود.
CRL
openssl crl- [
-CAfilefile] [-CApathdir] [-crlnumber] [-fingerprint] [-hash] [-hash_old] [-infile] [-informder|pem] [-issuer] [-lastupdate] [-nameoptoption] [-nextupdate] [-noout] [-outfile] [-outformder|pem] [-text] [-verify]
دستور
crl
فایلهای
فهرست
ابطال
گواهی (CRL) را
در قالب DER یا PEM
پردازش
میکند.
گزینهها به شرح زیر هستند:
-CAfilefile- اعتبارسنجی امضا روی CRL با جستجوی گواهی صادرکننده در file.
-CApathdirectory- اعتبارسنجی
امضا روی CRL
با جستجوی
گواهی
صادرکننده
در dir. این
پوشه باید
یک پوشه
استاندارد
گواهی
باشد، بدین
معنا که هشی
از هر نام
موضوع (با
استفاده از
x509-hash) باید به هر گواهی پیوند داده شده باشد. -crlnumber- چاپ شماره CRL.
-fingerprint- چاپ اثرانگشت CRL.
-hash- خروجی دادن مقدار هش نام صادرکننده. از این مقدار میتوان برای جستجوی CRLها در یک دایرکتوری بر اساس نام صادرکننده استفاده کرد.
-hash_old- خروجی دادن هش سبک قدیمی (MD5) از نام صادرکننده.
-infile- فایل ورودی برای خواندن، یا ورودی استاندارد در صورت عدم تعیین.
-informder|pem- قالب ورودی.
-issuer- چاپ نام صادرکننده در خروجی.
-lastupdate- چاپ فیلد
thisUpdateدر خروجی. نام این گزینه به دلایل تاریخی نامگذاری نادرست شده است. -nameoptoption- تعیین گزینههای نام گواهی.
-nextupdate- چاپ فیلد
nextUpdateدر خروجی. -noout- خودداری از ارسال نسخه کدگذاریشده CRL به خروجی.
-outfile- فایل خروجی برای نوشتن، یا خروجی استاندارد در صورت عدم تعیین.
-outformder|pem- قالب خروجی.
-text- چاپ CRL در قالب متن ساده.
-verify- اعتبارسنجی امضای موجود در CRL.
CRL2PKCS7
openssl crl2pkcs7- [
-certfilefile] [-infile] [-informder|pem] [-nocrl] [-outfile] [-outformder|pem]
دستور
crl2pkcs7 یک CRL
اختیاری و
یک یا چند
گواهی را
دریافت
کرده و
آنها را به
یک ساختار
تبهگن (degenerate)
"فقط
گواهیها
(certificates only)" در قالب
PKCS#7 تبدیل
میکند.
گزینهها به شرح زیر هستند:
-certfilefile- افزودن گواهیهای موجود در file با قالب PEM به ساختار PKCS#7. از این گزینه میتوان بیش از یک بار برای خواندن گواهیها از چندین فایل استفاده کرد.
-infile- خواندن CRL از file ، یا ورودی استاندارد در صورت عدم تعیین.
-informder|pem- قالب ورودی.
-nocrl- به طور معمول، یک CRL در فایل خروجی گنجانده میشود. با این گزینه، هیچ CRLای در فایل خروجی درج نمیشود و هیچ CRLای از فایل ورودی خوانده نخواهد شد.
-outfile- نوشتن ساختار PKCS#7 در file ، یا خروجی استاندارد در صورت عدم تعیین.
-outformder|pem- قالب خروجی.
DGST
openssl dgst- [
-cdr] [-binary] [-digest] [-hex] [-hmackey] [-keyformpem] [-macalgorithm] [-macoptnm:v] [-outfile] [-passinarg] [-prverifyfile] [-signfile] [-signaturefile] [-sigoptnm:v] [-verifyfile] [file ...]
توابع خلاصه پیام (digest)، چکیده پیام مربوط به file یا files ارائهشده را در قالب هگزادسیمال در خروجی چاپ میکنند. همچنین میتوان از آنها برای امضای دیجیتال و اعتبارسنجی استفاده کرد.
گزینهها به شرح زیر هستند:
-binary- خروجی دادن خلاصه پیام یا امضا در قالب دودویی (باینری).
-c- چاپ خلاصه پیام در گروههای دو رقمی جداشده با دونقطه.
-d- چاپ اطلاعات اشکالزدایی BIO.
-digest- استفاده از
الگوریتم
خلاصه پیام
مشخصشده
در digest.
حالت
پیشفرض SHA256
است.
خلاصههای
پیام موجود
را میتوان
با دستور
openssllist-message-digest-commandsمشاهده کرد. دستورهای زیر معادل یکدیگرند:openssl dgst-sha256وopensslsha256. -hex- خلاصه پیام به صورت تخلیه هگز (hex dump) چاپ شود. این حالت پیشفرض برای یک خلاصه پیام "عادی" در مقایسه با امضای دیجیتال است.
-hmackey- ایجاد یک کد اصالتسنجی پیام مبتنی بر هش (HMAC) با استفاده از key.
-keyformpem- قالب کلید را برای امضای خلاصه پیام مشخص میکند.
-macalgorithm- ایجاد یک کد
اصالتسنجی
پیام
کلیددار (MAC).
رایجترین
الگوریتم
MAC،
الگوریتم HMAC
(کد
اصالتسنجی
پیام مبتنی
بر هش) است،
اما
الگوریتمهای
MAC دیگری نیز
وجود دارند
که مبتنی بر
هش نیستند.
کلیدهای MAC و
سایر
گزینهها
باید از
طریق
پارامتر
-macoptتنظیم شوند. -macoptnm:v- ارسال
گزینهها
به
الگوریتم
MAC، که توسط
-macمشخص شده است. گزینههای زیر توسط HMAC پشتیبانی میشوند:key:string- کلید MAC را به صورت یک رشته الفبایی-عددی مشخص میکند (زمانی استفاده شود که کلید تنها شامل نویسههای قابل چاپ باشد). طول رشته باید با محدودیتهای الگوریتم MAC مطابقت داشته باشد.
hexkey:string- کلید MAC را در قالب هگزادسیمال مشخص میکند (دو رقم هگز برای هر بایت). طول کلید باید با محدودیتهای الگوریتم MAC مطابقت داشته باشد.
-outfile- فایل خروجی برای نوشتن، یا خروجی استاندارد در صورت عدم تعیین.
-passinarg- منبع رمز عبور کلید.
-prverifyfile- اعتبارسنجی امضا با استفاده از کلید خصوصی موجود در file. خروجی یکی از عبارتهای "Verification OK" یا "Verification Failure" خواهد بود.
-r- چاپ خلاصه پیام در قالب ابزارهای هسته (coreutils).
-signfile- امضای دیجیتالی خلاصه پیام با استفاده از کلید خصوصی موجود در file.
-signaturefile- امضای واقعی برای اعتبارسنجی.
-sigoptnm:v- ارسال گزینهها به الگوریتم امضا در طول عملیات امضا یا اعتبارسنجی. نامها و مقادیر این گزینهها وابسته به الگوریتم هستند.
-verifyfile- اعتبارسنجی امضا با استفاده از کلید عمومی موجود در file. خروجی یکی از عبارتهای "Verification OK" یا "Verification Failure" خواهد بود.
- file ...
- فایل یا فایلها برای محاسبه خلاصه پیام. در صورت عدم تعیین فایل، از ورودی استاندارد استفاده میشود.
DHPARAM
openssl dhparam- [
-2|-5] [-check] [-dsaparam] [-infile] [-informder|pem] [-noout] [-outfile] [-outformder|pem] [-text] [numbits]
دستور
dhparam برای
مدیریت و
دستکاری
فایلهای
پارامتر
دیفی-هلمن (DH)
استفاده
میشود.
تنها قالب
قدیمیتر PKCS#3 DH
پشتیبانی
میشود و نه
قالب
جدیدتر X9.42 DH.
گزینهها به شرح زیر هستند:
-2,-5- مولد (generator) مورد استفاده؛ ۲ مقدار پیشفرض است. در صورت وجود، فایل ورودی نادیده گرفته شده و پارامترها به جای آن تولید میشوند.
-check- بررسی و اعتبارسنجی پارامترهای DH.
-dsaparam- خواندن یا
ایجاد
پارامترهای
DSA، که در
خروجی به
قالب DH
تبدیل
میشوند. در
غیر این
صورت،
اعداد اول
"قوی" (به
گونهای که
(p-1)/2 نیز اول
باشد) برای
تولید
پارامترهای
DH استفاده
خواهند شد.
تولید پارامترهای DH با گزینه
-dsaparamبسیار سریعتر است، و طول توان پیشنهادی کوتاهتر است، که باعث کارایی بیشتر در تبادل کلید DH میشود. توجه داشته باشید که با چنین پارامترهای DH به سبک DSA، برای هر بار استفاده باید یک کلید تازه DH ایجاد شود تا از حملات زیرگروه کوچک (small-subgroup) که در غیر این صورت ممکن است رخ دهد جلوگیری گردد. -infile- فایل ورودی برای خواندن از آن، یا ورودی استاندارد در صورت عدم تعیین.
-informder|pem- قالب ورودی.
-noout- خودداری از ارسال نسخه کدگذاریشده پارامترها به خروجی.
-outfile- فایل خروجی برای نوشتن، یا خروجی استاندارد در صورت عدم تعیین.
-outformder|pem- قالب خروجی.
-text- چاپ پارامترهای DH در قالب متن ساده.
- numbits
- تولید یک مجموعه پارامتر با اندازه numbits. این مورد باید آخرین گزینه باشد. اگر مشخص نشود، مقدار ۲۰۴۸ استفاده میشود. در صورت وجود این مقدار، فایل ورودی نادیده گرفته شده و پارامترها تولید خواهند شد.
DSA
openssl dsa- [
-aes128|-aes192|-aes256|-des|-des3] [-infile] [-informder|pem|pvk] [-modulus] [-noout] [-outfile] [-outformder|pem|pvk] [-passinarg] [-passoutarg] [-pubin] [-pubout] [-pvk-none|-pvk-strong|-pvk-weak] [-text]
دستور
dsa
کلیدهای DSA
را پردازش
میکند. این
کلیدها را
میتوان
میان
فرمتهای
گوناگون
تبدیل کرده
و اجزای
آنها را
چاپ نمود.
نکته:
این دستور
از قالب
سنتی
سازگار با
SSLeay برای
رمزنگاری
کلید خصوصی
استفاده
میکند:
برنامههای
جدیدتر
باید از
قالب
امنتر PKCS#8 با
استفاده از
دستور pkcs8
استفاده
کنند.
گزینهها به شرح زیر هستند:
-aes128|-aes192|-aes256|-des|-des3- رمزگذاری
کلید خصوصی
به ترتیب با
الگوریتمهای
AES، DES یا Triple DES پیش
از ارسال آن
به خروجی.
از کاربر
عبارت عبور
(passphrase) درخواست
میشود. اگر
هیچیک از
این
گزینهها
مشخص
نشوند،
کلید به
صورت متن
آشکار
نوشته
میشود. این
بدان
معناست که
استفاده از
ابزار
dsaبرای خواندن یک کلید رمزگذاریشده بدون تعیین گزینه رمزگذاری میتواند برای حذف عبارت عبور از کلید استفاده شود، یا با تنظیم گزینههای رمزگذاری میتوان برای افزودن یا تغییر عبارت عبور استفاده کرد. این گزینهها تنها با فایلهای خروجی با قالب PEM قابل استفاده هستند. -infile- فایل ورودی برای خواندن از آن، یا ورودی استاندارد در صورت عدم تعیین. اگر کلید رمزگذاری شده باشد، عبارت عبور درخواست خواهد شد.
-informder|pem|pvk- قالب ورودی.
-modulus- چاپ مقدار مولفه کلید عمومی از کلید مورد نظر.
-noout- خودداری از ارسال نسخه کدگذاریشده کلید به خروجی.
-outfile- فایل خروجی برای نوشتن، یا خروجی استاندارد در صورت عدم تعیین. اگر هرگونه گزینه رمزگذاری تنظیم شده باشد، عبارت عبور درخواست خواهد شد.
-outformder|pem|pvk- قالب خروجی.
-passinarg- منبع رمز عبور کلید.
-passoutarg- منبع رمز عبور فایل خروجی.
-pubin- خواندن یک کلید عمومی به جای کلید خصوصی.
-pubout- خروجی دادن یک کلید عمومی به جای کلید خصوصی. در صورتی که ورودی یک کلید عمومی باشد به طور خودکار فعال میشود.
-pvk-none|-pvk-strong|-pvk-weak- فعال یا
غیرفعال
کردن
کدگذاری PVK.
حالت
پیشفرض
-pvk-strongاست. -text- چاپ کلید عمومی/خصوصی در قالب متن آشکار.
DSAPARAM
openssl dsaparam- [
-genkey] [-infile] [-informder|pem] [-noout] [-outfile] [-outformder|pem] [-text] [numbits]
دستور
dsaparam برای
مدیریت یا
تولید
فایلهای
پارامتر DSA
استفاده
میشود.
گزینهها به شرح زیر هستند:
-genkey- تولید یک کلید DSA با استفاده از پارامترهای مشخصشده یا تولیدشده.
-infile- فایل ورودی برای خواندن از آن، یا ورودی استاندارد در صورت عدم تعیین. اگر پارامتر numbits درج شده باشد، این گزینه نادیده گرفته میشود.
-informder|pem- قالب ورودی.
-noout- خودداری از ارسال نسخه کدگذاریشده پارامترها به خروجی.
-outfile- فایل خروجی برای نوشتن، یا خروجی استاندارد در صورت عدم تعیین.
-outformder|pem- قالب خروجی.
-text- چاپ پارامترهای DSA در قالب متن آشکار.
- numbits
- تولید یک مجموعه پارامتر با اندازه numbits. در صورت گنجاندن این گزینه، فایل ورودی نادیده گرفته میشود.
EC
openssl ec- [
-conv_formarg] [-des] [-des3] [-infile] [-informder|pem] [-noout] [-outfile] [-outformder|pem] [-param_encarg] [-param_out] [-passinarg] [-passoutarg] [-pubin] [-pubout] [-text]
دستور
ec
کلیدهای
منحنی
بیضوی (EC) را
پردازش
میکند. این
کلیدها را
میتوان
میان
فرمتهای
مختلف
تبدیل کرد و
اجزای
آنها را
چاپ نمود.
openssl از
قالب کلید
خصوصی
مشخصشده
در “SEC 1: Elliptic Curve Cryptography”
(https://www.secg.org).
استفاده
میکند.
برای تبدیل
یک کلید
خصوصی EC به
قالب کلید
خصوصی PKCS#8 از
دستور pkcs8
استفاده
کنید.
گزینهها به شرح زیر هستند:
-conv_formarg- نحوه تبدیل
نقاط روی
منحنی
بیضوی به
رشتههای
اوکتت را
مشخص
میکند.
مقادیر
ممکن
عبارتند از:
compressed ،uncompressed(پیشفرض)، وhybrid. برای اطلاعات بیشتر درباره فرمهای تبدیل نقطه، استاندارد X9.62 را ببینید. -des|-des3- رمزگذاری
کلید خصوصی
با DES، Triple DES یا هر
رمزگذار
دیگری که
توسط
opensslپشتیبانی میشود. از کاربر عبارت عبور درخواست خواهد شد. اگر هیچیک از این گزینهها مشخص نشوند، کلید به صورت متن آشکار نوشته میشود. این بدان معناست که استفاده از ابزارecبرای خواندن یک کلید رمزگذاریشده بدون تعیین گزینه رمزگذاری میتواند برای حذف عبارت عبور از کلید استفاده شود، یا با تنظیم گزینههای رمزگذاری میتوان برای افزودن یا تغییر عبارت عبور از آن استفاده نمود. این گزینهها تنها با فایلهای خروجی قالب PEM قابل استفاده هستند. -infile- فایل ورودی برای خواندن کلید از آن، یا ورودی استاندارد در صورت عدم تعیین. اگر کلید رمزگذاری شده باشد، عبارت عبور درخواست خواهد شد.
-informder|pem- قالب ورودی.
-noout- خودداری از ارسال نسخه کدگذاریشده کلید به خروجی.
-outfile- نام فایل خروجی برای نوشتن در آن، یا خروجی استاندارد در صورت عدم تعیین. اگر هرگونه گزینه رمزگذاری تنظیم شده باشد، عبارت عبور درخواست خواهد شد.
-outformder|pem- قالب خروجی.
-param_encarg- مشخص
میکند که
پارامترهای
منحنی
بیضوی
چگونه
کدگذاری
شوند.
مقادیر
ممکن
عبارتند از:
named_curve ،یعنی پارامترهای EC توسط یک OID مشخص میشوند؛ یاexplicit ،که در آن پارامترهای EC به صراحت داده میشوند (برای تعریف ساختارهای پارامتر EC به RFC 3279 مراجعه کنید). مقدار پیشفرضnamed_curveاست. نکته: گزینه جایگزینimplicitlyCAهمانطور که در RFC 3279 مشخص شده، در حال حاضر پیادهسازی نشده است. -param_out- چاپ پارامترهای منحنی بیضوی.
-passinarg- منبع رمز عبور کلید.
-passoutarg- منبع رمز عبور فایل خروجی.
-pubin- خواندن یک کلید عمومی به جای کلید خصوصی.
-pubout- خروجی دادن یک کلید عمومی به جای کلید خصوصی. در صورتی که ورودی یک کلید عمومی باشد به طور خودکار فعال میشود.
-text- چاپ کلید عمومی/خصوصی در قالب متن آشکار.
ECPARAM
openssl ecparam- [
-check] [-conv_formarg] [-genkey] [-infile] [-informder|pem] [-list_curves] [-namearg] [-no_seed] [-noout] [-outfile] [-outformder|pem] [-param_encarg] [-text]
دستور
ecparam برای
مدیریت یا
ایجاد
فایلهای
پارامتر EC
استفاده
میشود.
openssl قادر
به تولید
گروههای
جدید نیست،
بنابراین
ecparam تنها
میتواند
پارامترهای
EC را از
منحنیهای
شناختهشده
(نامگذاریشده)
ایجاد کند.
گزینهها به شرح زیر هستند:
-check- اعتبارسنجی پارامترهای منحنی بیضوی.
-conv_formarg- نحوه تبدیل
نقاط روی
منحنی
بیضوی به
رشتههای
اوکتت را
مشخص
میکند.
مقادیر
ممکن
عبارتند از:
compressed ،uncompressed(پیشفرض)، وhybrid. برای اطلاعات بیشتر درباره فرمهای تبدیل نقطه، استاندارد X9.62 را ببینید. -genkey- تولید یک کلید خصوصی EC با استفاده از پارامترهای مشخصشده.
-infile- فایل ورودی برای خواندن از آن، یا ورودی استاندارد در صورت عدم تعیین.
-informder|pem- قالب ورودی.
-list_curves- چاپ فهرستی از تمام نامهای پارامتر EC که در حال حاضر پیادهسازی شدهاند و خروج.
-namearg- استفاده از پارامترهای EC با "نام کوتاه" مشخصشده.
-no_seed- دانه (seed) مورد استفاده برای تولید پارامتر را در ساختار ECParameters درج نمیکند (به RFC 3279 مراجعه کنید).
-noout- خودداری از ارسال نسخه کدگذاریشده پارامترها به خروجی.
-outfile- فایل خروجی برای نوشتن، یا خروجی استاندارد در صورت عدم تعیین.
-outformder|pem- قالب خروجی.
-param_encarg- مشخص
میکند که
پارامترهای
منحنی
بیضوی
چگونه
کدگذاری
شوند.
مقادیر
ممکن
عبارتند از:
named_curve ،یعنی پارامترهای EC توسط یک OID مشخص میشوند، یاexplicit ،که در آن پارامترهای EC به صراحت داده میشوند (برای تعریف ساختارهای پارامتر EC به RFC 3279 مراجعه کنید). مقدار پیشفرضnamed_curveاست. نکته: گزینه جایگزینimplicitlyCAهمانطور که در RFC 3279 مشخص شده، در حال حاضر پیادهسازی نشده است. -text- چاپ پارامترهای EC در قالب متن آشکار.
ENC
openssl enc-ciphername[-AadePpv] [-base64] [-bufsizenumber] [-debug] [-infile] [-iteriterations] [-ivIV] [-Kkey] [-kpassword] [-kfilefile] [-mddigest] [-none] [-nopad] [-nosalt] [-outfile] [-passarg] [-pbkdf2] [-Ssalt] [-salt]
دستورات
رمزگذاری
متقارن
امکان
رمزگذاری
یا
رمزگشایی
دادهها را
با استفاده
از انواع
رمزگذارهای
بلوکی و
جریانی و بر
مبنای
کلیدهای
مشتقشده
از گذرواژه
یا کلیدهای
مشخصشده
فراهم
میکنند.
کدگذاری یا
کدگشایی Base64
نیز
میتواند
به صورت
مستقل یا
همراه با
رمزگذاری
یا
رمزگشایی
انجام شود.
این برنامه
میتواند
به یکی از دو
صورت openssl
ciphername یا openssl
enc -ciphername
فراخوانی
شود.
برخی از این رمزگذارها دارای کلیدهای طولانی نیستند و برخی دیگر در صورت عدم استفاده صحیح پیامدهای امنیتی دارند. تمام رمزگذارهای بلوکی به طور معمول از لایهگذاری PKCS#5 (معروف به لایهگذاری استاندارد بلوک) استفاده میکنند. اگر لایهگذاری غیرفعال شود، طول داده ورودی باید مضربی از طول بلوک رمزگذار باشد.
گزینهها به شرح زیر هستند:
-A- اگر گزینه
-aتنظیم شده باشد، دادهها را در یک خط با Base64 پردازش میکند. -a,-base64- پردازش دادهها با Base64. این بدان معناست که در صورت رمزگذاری، دادهها پس از رمزگذاری با Base64 کدگذاری میشوند. در صورت رمزگشایی، دادههای ورودی پیش از رمزگشایی با Base64 کدگشایی میشوند.
-bufsizenumber- تنظیم اندازه بافر برای ورودی/خروجی.
-d- رمزگشایی دادههای ورودی.
-debug- اشکالزدایی BIOهای مورد استفاده برای ورودی/خروجی.
-e- رمزگذاری دادههای ورودی. این حالت پیشفرض است.
-infile- فایل ورودی برای خواندن، یا ورودی استاندارد در صورت عدم تعیین.
-iteriterations- استفاده از تابع اشتقاق کلید PBKDF2 با iterations تکرار (iteration).
-ivIV- بردار
اولیه
واقعی IV
(بردار
مقداردهی
اولیه یا Initialization
Vector) مورد
استفاده:
این مقدار
باید به
عنوان
رشتهای
فقط شامل
ارقام
هگزادسیمال
ارائه شود.
هنگامی که
تنها key
با استفاده
از گزینه
-Kمشخص شود، مقدار IV باید به طور صریح تعریف گردد. هنگامی که گذرواژه با استفاده از یکی از گزینههای دیگر مشخص شود، مقدار IV از این گذرواژه تولید میشود. -Kkey- کلید واقعی
key مورد
استفاده:
این مقدار
باید به
عنوان
رشتهای
فقط شامل
ارقام
هگزادسیمال
ارائه شود.
اگر تنها
کلید مشخص
شود، بردار
IV نیز باید
با استفاده
از گزینه
-ivمشخص گردد. هنگامی که هر دوی key و password مشخص شوند، کلید key دادهشده با گزینه-Kاستفاده شده و IV تولیدشده از گذرواژه به کار گرفته میشود. تعیین همزمان هر دو پارامتر key و password چندان منطقی به نظر نمیرسد. -kpassword- گذرواژه
password برای
اشتقاق
کلید از آن.
گزینه
-passجایگزین آن شده است. -kfilefile- خواندن
گذرواژه
برای
اشتقاق
کلید از سطر
اول file.
گزینه
-passجایگزین آن شده است. -mddigest- استفاده از
خلاصه پیام
digest برای
ایجاد کلید
از عبارت
عبور. در
حال حاضر
مقدار
پیشفرض
sha256است. -none- استفاده از رمزگذار NULL (بدون هیچگونه رمزگذاری یا رمزگشایی ورودی).
-nopad- غیرفعال کردن لایهگذاری استاندارد بلوک.
-nosalt- عدم استفاده از نمک (salt) در روالهای اشتقاق کلید. از این گزینه هرگز نباید استفاده شود چرا که امکان انجام حملات فرهنگلغتی (dictionary attacks) کارآمد روی گذرواژه و حمله به دادههای رمزگذاریشده با رمزگذارهای جریانی را فراهم میسازد.
-outfile- فایل خروجی برای نوشتن، یا خروجی استاندارد در صورت عدم تعیین.
-P- چاپ salt، key و IV مورد استفاده و سپس خروج فوری؛ هیچ رمزگذاری یا رمزگشایی انجام نمیدهد.
-p- چاپ salt، key و IV مورد استفاده.
-passarg- منبع گذرواژه.
-pbkdf2- استفاده از تابع اشتقاق کلید PBKDF2 با مقدار پیشفرض ۱۰,۰۰۰ تکرار.
-Ssalt- نمک (salt) واقعی salt مورد استفاده: باید به عنوان رشتهای فقط شامل ارقام هگزادسیمال ارائه شود.
-salt- استفاده از نمک در روالهای اشتقاق کلید (پیشفرض). هنگامی که نمک استفاده میشود، هشت بایت اول دادههای رمزگذاریشده برای نمک رزرو میشوند: این مقدار هنگام رمزگذاری فایل به طور تصادفی تولید شده و هنگام رمزگشایی از فایل رمزگذاریشده خوانده میشود.
-v- چاپ جزئیات بیشتر درباره پردازش.
ERRSTR
openssl errstr errno
...
دستور
errstr شماره
خطا را به
رشته متنی
خطا تبدیل
میکند و
رشتهای
خوانا برای
انسان که
نشاندهنده
کد خطای
errno است
تولید
مینماید.
این رشته از
طریق تابع
ERR_error_string_n(3)
به دست
میآید و
دارای قالب
زیر است:
error:[error code]:[library
name]:[function name]:[reason string]بخش [error code] یک عدد هگزادسیمال ۸ رقمی است. سایر فیلدها شامل [library name ،] [function name] و [reason string] همگی متن ASCII هستند.
GENDSA
openssl gendsa- [
-aes128|-aes192|-aes256|-camellia128|-camellia192|-camellia256|-des|-des3|-idea] [-outfile] [-passoutarg] paramfile
دستور
gendsa یک
کلید خصوصی
DSA را از روی
یک فایل
پارامتر DSA
تولید
میکند (که
معمولاً
توسط دستور
openssl dsaparam
ایجاد شده
است). تولید
کلید DSA
اساساً
چیزی بیش از
تولید
اعداد
تصادفی
نیست،
بنابراین
بسیار
سریعتر از
برای مثال
تولید کلید
RSA است.
گزینهها به شرح زیر هستند:
-aes128|-aes192|-aes256|-camellia128|-camellia192|-camellia256|-des|-des3|-idea- رمزگذاری کلید خصوصی به ترتیب با رمزگذارهای AES، CAMELLIA، DES، Triple DES یا IDEA پیش از ارسال آن به خروجی. عبارت عبور درخواست خواهد شد. اگر هیچیک از این گزینهها مشخص نشوند، از هیچ رمزگذاری استفاده نمیشود.
-outfile- فایل خروجی برای نوشتن، یا خروجی استاندارد در صورت عدم تعیین.
-passoutarg- منبع گذرواژه فایل خروجی.
- paramfile
- مشخص کردن فایل پارامتر DSA مورد استفاده. پارامترهای موجود در این فایل اندازه کلید خصوصی را تعیین میکنند.
GENPKEY
openssl genpkey- [
-algorithmalg] [cipher] [-genparam] [-outfile] [-outformder|pem] [-paramfilefile] [-passarg] [-pkeyoptopt:value] [-text]
دستور
genpkey
کلیدهای
خصوصی
تولید
میکند.
استفاده از
این برنامه
نسبت به
ابزارهای
اختصاصی هر
الگوریتم
ترجیح داده
میشود
زیرا
میتوان از
گزینههای
اضافی
الگوریتمها
استفاده
کرد.
گزینهها به شرح زیر هستند:
-algorithmalg- الگوریتم
کلید عمومی
مورد
استفاده،
مانند RSA، DSA یا
DH. این گزینه
باید پیش از
هر گزینه
-pkeyoptقرار گیرد. گزینههای-paramfileو-algorithmناسازگار با یکدیگر (مانعةالجمع) هستند. - cipher
- رمزگذاری کلید خصوصی با رمزگذار ارائهشده. هر نام الگوریتمی که توسط EVP_get_cipherbyname(3) پذیرفته شود، قابل قبول است.
-genparam- تولید یک
مجموعه
پارامتر به
جای کلید
خصوصی. این
گزینه باید
پیش از
گزینههای
-algorithm-،-paramfileیا-pkeyoptقرار گیرد. -outfile- فایل خروجی برای نوشتن، یا خروجی استاندارد در صورت عدم تعیین.
-outformder|pem- قالب خروجی.
-paramfilefile- برخی
الگوریتمهای
کلید عمومی
یک کلید
خصوصی را بر
اساس
مجموعهای
از
پارامترها
تولید
میکنند که
میتوان با
این گزینه
ارائه کرد.
در صورت
استفاده از
این گزینه،
الگوریتم
کلید عمومی
مورد
استفاده
توسط
پارامترها
تعیین
میشود. این
گزینه باید
پیش از
گزینههای
-pkeyoptقرار گیرد. گزینههای-paramfileو-algorithmمانعةالجمع هستند. -passarg- منبع گذرواژه فایل خروجی.
-pkeyoptopt:value- تنظیم
گزینه
الگوریتم
کلید عمومی
opt بر روی
value ، به
صورت زیر:
- rsa_keygen_bits:numbits
- (RSA) تعداد بیتها در کلید تولیدشده. پیشفرض ۲۰۴۸ است.
- rsa_keygen_pubexp:value
- (RSA) مقدار توان عمومی RSA. میتواند یک عدد دهدهی بزرگ یا مقدار هگزادسیمال با پیشوند 0x باشد. پیشفرض ۶۵۵۳۷ است.
- dsa_paramgen_bits:numbits
- (DSA) تعداد بیتها در پارامترهای تولیدشده. پیشفرض ۱۰۲۴ است.
- dh_paramgen_prime_len:numbits
- (DH) تعداد بیتها در پارامتر اول p.
- dh_paramgen_generator:value
- (DH) مقدار مورد استفاده برای مولد g.
- ec_paramgen_curve:curve
- (EC) منحنی بیضوی مورد استفاده.
-text- چاپ کلید خصوصی/عمومی در قالب متن آشکار.
GENRSA
openssl genrsa- [
-3|-f4] [-aes128|-aes192|-aes256|-camellia128|-camellia192|-camellia256|-des|-des3|-idea] [-outfile] [-passoutarg] [numbits]
دستور
genrsa یک
کلید خصوصی
RSA تولید
میکند، که
اساساً
شامل تولید
دو عدد اول
است. هنگام
تولید
کلید،
نمادهای
مختلفی
برای نشان
دادن روند
پیشرفت
تولید در
خروجی
نمایش داده
میشوند.
نماد ‘.’
نشاندهنده
هر عددی است
که آزمون
غربال
اولیه را
پشت سر
گذاشته
است؛ نماد
‘+’ بدین
معناست که
یک عدد یک
دور از
آزمون اول
بودن
میلر-رابین
(Miller-Rabin) را
گذرانده
است؛ نماد
‘*’ بدین
معناست که
عدد در
آزمون اول
بودن مردود
شده و باید
مجدداً از
نو تولید
شود. یک خط
جدید بدین
معناست که
عدد تمام
آزمونهای
اول بودن را
پشت سر
گذاشته است
(تعداد
واقعی
آزمونها
به اندازه
کلید بستگی
دارد).
گزینهها به شرح زیر هستند:
-3|-f4- توان عمومی مورد استفاده، ۳ یا ۶۵۵۳۷. حالت پیشفرض ۶۵۵۳۷ است.
-aes128|-aes192|-aes256|-camellia128|-camellia192|-camellia256|-des|-des3|-idea- رمزگذاری
کلید خصوصی
به ترتیب با
الگوریتمهای
AES، CAMELLIA، DES، Triple DES یا IDEA
پیش از
ارسال آن به
خروجی. اگر
هیچیک از
این
گزینهها
مشخص
نشوند،
رمزگذاری
انجام
نمیشود.
اگر از
رمزگذاری
استفاده
شود، عبارت
عبور
درخواست
میشود مگر
اینکه از
طریق گزینه
-passoutارائه شده باشد. -outfile- فایل خروجی برای نوشتن، یا خروجی استاندارد در صورت عدم تعیین.
-passoutarg- منبع گذرواژه فایل خروجی.
- numbits
- اندازه کلید خصوصی برای تولید به بیت. این گزینه باید آخرین گزینه مشخصشده باشد. پیشفرض ۲۰۴۸ است.
OCSP
openssl ocsp- [
-CAfile] [-CAfilefile] [-CApathdirectory] [-certfile] [-dgstalg] [-headername value] [-hosthostname:port] [-ignore_err] [-indexindexfile] [-issuerfile] [-ndaysdays] [-nminminutes] [-no_cert_checks] [-no_cert_verify] [-no_certs] [-no_chain] [-no_explicit] [-no_intern] [-no_nonce] [-no_signature_verify] [-nonce] [-noverify] [-nrequestnumber] [-outfile] [-pathpath] [-portportnum] [-req_text] [-reqinfile] [-reqoutfile] [-resp_key_id] [-resp_no_certs] [-resp_text] [-respinfile] [-respoutfile] [-rkeyfile] [-rotherfile] [-rsignerfile] [-serialnum] [-sign_otherfile] [-signerfile] [-signkeyfile] [-status_ageage] [-text] [-timeoutseconds] [-trust_other] [-urlresponder_url] [-VAfilefile] [-validity_periodnsec] [-verify_otherfile]
پروتکل وضعیت برخط گواهی یا Online Certificate Status Protocol (OCSP) برنامهها را قادر میسازد وضعیت (ابطال) یک گواهی مشخص را تعیین کنند (RFC 2560).
دستور
ocsp
بسیاری از
وظایف رایج
OCSP را انجام
میدهد. از
این ابزار
میتوان
برای چاپ
درخواستها
و پاسخها،
ایجاد
درخواستها
و ارسال
پرسوجو به
یک
پاسخدهنده
OCSP، و همچنین
ایفای نقش
یک سرور
کوچک OCSP
استفاده
کرد.
گزینهها به شرح زیر هستند:
-CAfilefile,-CApathdirectory- فایل یا مسیری حاوی گواهیهای معتمد CA، مورد استفاده برای اعتبارسنجی امضای موجود در پاسخ OCSP.
-certfile- افزودن
گواهی file
به درخواست.
گواهی
صادرکننده
از گزینه
پیشین
-issuerبرداشته میشود، یا در صورت عدم تعیین گواهی صادرکننده خطایی رخ میدهد. -dgstalg- استفاده از الگوریتم خلاصه پیام alg برای شناسایی گواهی در درخواست OCSP. به طور پیشفرض از SHA1 استفاده میشود.
-hosthostname:port,-pathpath- ارسال
درخواست OCSP
به hostname روی
پورت port.
گزینه
-pathنام مسیر HTTP مورد استفاده را مشخص میکند، که پیشفرض آن / است. -headername value- افزودن هدر با مقدار مشخصشده به درخواست OCSP ارسالی به پاسخدهنده. این گزینه میتواند تکرار شود.
-issuerfile- گواهی
صادرکننده
جاری در
قالب PEM.
میتواند
چندین بار
استفاده
شود و باید
پیش از هر
گزینه
-certقرار گیرد. -no_cert_checks- از انجام هرگونه بررسی اضافی روی گواهی امضاکننده پاسخ OCSP خودداری میکند. بدین معنا که بررسی نمیکند آیا گواهی امضاکننده مجاز به ارائه اطلاعات وضعیت لازم است یا خیر؛ در نتیجه این گزینه تنها باید برای اهداف آزمایشی استفاده شود.
-no_cert_verify- گواهی امضاکننده پاسخ OCSP را اصلاً اعتبارسنجی نمیکند. از آنجا که این گزینه اجازه میدهد پاسخ OCSP توسط هر گواهیای امضا شده باشد، تنها باید برای اهداف آزمایشی استفاده شود.
-no_certs- هیچ گواهیای را در درخواست امضاشده درج نمیکند.
-no_chain- از گواهیهای موجود در پاسخ به عنوان گواهیهای CA غیرمعتمد اضافی استفاده نمیکند.
-no_explicit- اعتماد صریح برای امضای OCSP را در گواهی ریشه CA بررسی نمیکند.
-no_intern- هنگام
جستجو برای
گواهی
امضاکننده،
گواهیهای
موجود در
پاسخ OCSP را
نادیده
میگیرد.
گواهی
امضاکننده
باید با یکی
از
گزینههای
-verify_otherیا-VAfileمشخص شود. -no_signature_verify- امضای موجود در پاسخ OCSP را بررسی نمیکند. از آنجا که این گزینه امضاهای نامعتبر را در پاسخهای OCSP نادیده میگیرد، به طور معمول تنها برای اهداف آزمایشی استفاده میشود.
-nonce,-no_nonce- افزودن
افزونه
نانس (nonce) به یک
درخواست OCSP،
یا غیرفعال
کردن
افزودن
نانس به OCSP. به
طور معمول،
اگر یک
درخواست OCSP
با استفاده
از گزینه
-respinوارد شود، هیچ نانسی اضافه نمیشود؛ استفاده از گزینه-nonceافزودن نانس را اجباری میکند. اگر یک درخواست OCSP در حال ایجاد باشد (با استفاده از گزینههای-certو-serial-)،نانس به طور خودکار اضافه میشود؛ مشخص کردن-no_nonceاین رفتار را لغو میکند. -noverify- تلاشی برای اعتبارسنجی امضای پاسخ OCSP یا مقادیر نانس انجام نمیدهد. این گزینه معمولاً تنها برای اشکالزدایی استفاده میشود زیرا تمام اعتبارسنجیهای گواهی پاسخدهنده را غیرفعال میکند.
-outfile- مشخص کردن فایل خروجی برای نوشتن، یا خروجی استاندارد در صورت عدم تعیین.
-req_text,-resp_text,-text- به ترتیب چاپ شکل متنی درخواست OCSP، پاسخ OCSP، یا هر دو.
-reqinfile,-respinfile- خواندن یک
فایل
درخواست یا
پاسخ OCSP از
file. اگر
ایجاد
درخواست یا
پاسخ OCSP توسط
سایر
گزینهها
لحاظ شده
باشد (برای
نمونه با
گزینههای
-serial-،-certو-host-)،این گزینهها نادیده گرفته میشوند. -reqoutfile,-respoutfile- نوشتن درخواست یا پاسخ گواهی کدگذاریشده با DER در file.
-serialnum- مشابه
گزینه
-certاست با این تفاوت که گواهی با شماره سریال num به درخواست اضافه میشود. شماره سریال به عنوان یک عدد صحیح دهدهی تفسیر میشود مگر اینکه با ‘0x’ آغاز شود. اعداد صحیح منفی را نیز میتوان با قرار دادن علامت منفی پیش از مقدار مشخص کرد. -sign_otherfile- گواهیهای اضافی برای گنجاندن در درخواست امضاشده.
-signerfile,-signkeyfile- امضای
درخواست OCSP
با استفاده
از گواهی
مشخصشده
در گزینه
-signerو کلید خصوصی مشخصشده توسط گزینه-signkey. اگر گزینه-signkeyوجود نداشته باشد، کلید خصوصی از همان فایل گواهی خوانده میشود. اگر هیچیک از این گزینهها مشخص نشوند، درخواست OCSP امضا نمیشود. -timeoutseconds- مهلت زمانی اتصال (timeout) به پاسخدهنده OCSP به ثانیه.
-trust_other- گواهیهای
مشخصشده
توسط گزینه
-verify_otherباید به صراحت معتمد شمرده شوند و هیچ بررسی اضافی روی آنها انجام نخواهد شد. این گزینه زمانی مفید است که زنجیره کامل گواهی پاسخدهنده در دسترس نیست یا اعتماد به یک CA ریشه مناسب نباشد. -urlresponder_url- مشخص کردن نشانی URL پاسخدهنده. هر دو نشانی اینترنتی HTTP و HTTPS (SSL/TLS) را میتوان تعیین کرد.
-VAfilefile- فایلی حاوی
گواهیهای
پاسخدهنده
به صراحت
معتمد.
معادل
گزینههای
-verify_otherو-trust_other. -validity_periodnsec,-status_ageage- محدوده
زمانی (به
ثانیه) که
در پاسخ OCSP
تحمل
میشود. هر
پاسخ وضعیت
گواهی شامل
زمان notBefore و
زمان
اختیاری notAfter
است. زمان
جاری باید
میان این دو
مقدار قرار
گیرد، اما
فاصله میان
این دو زمان
ممکن است
تنها چند
ثانیه باشد.
در عمل ممکن
است
ساعتهای
پاسخدهنده
OCSP و
کلاینتها
دقیقاً
همگام
نباشند و
بنابراین
چنین بررسی
با شکست
مواجه شود.
برای
جلوگیری از
این امر
میتوان از
گزینه
-validity_periodبرای تعیین محدوده خطای قابل قبول به ثانیه استفاده کرد که مقدار پیشفرض آن ۵ دقیقه است.اگر زمان notAfter در یک پاسخ حذف شده باشد، بدین معناست که اطلاعات وضعیت جدید بلافاصله در دسترس است. در این حالت، قدمت فیلد notBefore بررسی میشود تا اطمینان حاصل شود که قدیمیتر از age ثانیه نیست. به طور پیشفرض، این بررسی اضافی انجام نمیشود.
-verify_otherfile- فایلی حاوی گواهیهای اضافی برای جستجو هنگام تلاش برای یافتن گواهی امضای پاسخ OCSP. برخی پاسخدهندهها گواهی واقعی امضاکننده را از پاسخ حذف میکنند، بنابراین میتوان از این گزینه برای ارائه گواهی لازم استفاده کرد.
گزینههای سرور OCSP به شرح زیر هستند:
-CAfile- گواهی CA متناظر با اطلاعات ابطال در indexfile.
-ignore_err- نادیده گرفتن پاسخ نامعتبر.
-indexindexfile- فایل indexfile
یک فایل
نمایه متنی
در قالب ca
حاوی
اطلاعات
ابطال
گواهی است.
اگر این گزینه مشخص شود،
ocspدر حالت پاسخدهنده (responder) عمل میکند، در غیر این صورت در حالت کلاینت است. درخواستهایی که پاسخدهنده پردازش میکند را میتوان در خط فرمان مشخص کرد (با استفاده از گزینههای-issuerو-serial-)،در یک فایل ارائه داد (با استفاده از گزینه-respin-)،یا از طریق کلاینتهای خارجی OCSP دریافت کرد (اگر port یا url مشخص شده باشد).اگر این گزینه درج شده باشد، گزینههای
-CAو-rsignerنیز باید حضور داشته باشند. -nminminutes,-ndaysdays- تعداد minutes دقیقه یا days روز تا زمانی که اطلاعات ابطال تازه در دسترس قرار گیرد: در فیلد nextUpdate استفاده میشود. اگر هیچیک از این دو گزینه مشخص نشوند، فیلد nextUpdate حذف میشود، به این معنی که اطلاعات ابطال تازه بلافاصله در دسترس است.
-nrequestnumber- خروج پس از دریافت number درخواست (حالت پیشفرض نامحدود است).
-portportnum- پورتی که
باید برای
دریافت
درخواستهای
OCSP روی آن
شنود شود.
همچنین
میتوان با
گزینه
-urlآن را مشخص کرد. -resp_key_id- شناسایی گواهی امضاکننده با استفاده از شناسه کلید (key ID)؛ پیشفرض استفاده از نام موضوع است.
-resp_no_certs- هیچ گواهیای را در پاسخ OCSP درج نمیکند.
-rkeyfile- کلید خصوصی
برای امضای
پاسخهای
OCSP؛ در صورت
عدم وجود،
از فایل
مشخصشده
در گزینه
-rsignerاستفاده میشود. -rotherfile- گواهیهای اضافی برای درج در پاسخ OCSP.
-rsignerfile- گواهی برای امضای پاسخهای OCSP.
در ابتدا،
گواهی
پاسخدهنده
OCSP
مکانیابی
شده و امضای
روی
درخواست OCSP
با استفاده
از کلید
عمومی
گواهی
پاسخدهنده
بررسی
میشود. سپس
اعتبارسنجی
عادی گواهی
روی گواهی
پاسخدهنده
OCSP انجام شده
و زنجیره
گواهی در
این فرآیند
ساخته
میشود. محل
گواهیهای
معتمد
استفادهشده
برای ساخت
زنجیره را
میتوان با
گزینههای
-CAfile و -CApath
مشخص کرد،
یا اینکه در
دایرکتوری
استاندارد
گواهیهای
openssl جستجو
خواهند شد.
اگر اعتبارسنجی اولیه شکست بخورد، فرآیند اعتبارسنجی OCSP با یک خطا متوقف میشود. در غیر این صورت، گواهی CA صادرکننده در درخواست با گواهی پاسخدهنده OCSP مقایسه میشود: در صورت تطابق، اعتبارسنجی OCSP موفقیتآمیز است.
در غیر این صورت، CA مربوط به گواهی پاسخدهنده OCSP در برابر گواهی CA صادرکننده در درخواست بررسی میشود. اگر تطابق وجود داشته باشد و کاربرد کلید توسعهیافته OCSPSigning در گواهی پاسخدهنده OCSP موجود باشد، اعتبارسنجی OCSP موفق خواهد بود.
در غیر این صورت، CA ریشه مربوط به CA پاسخدهنده OCSP بررسی میشود تا مشخص شود آیا برای امضای OCSP معتمد است یا خیر. اگر باشد، اعتبارسنجی OCSP موفقیتآمیز است.
اگر هیچیک از این بررسیها موفقیتآمیز نباشد، اعتبارسنجی OCSP با شکست مواجه میشود. معنای عملی این روند آن است که اگر گواهی پاسخدهنده OCSP مستقیماً توسط همان CA که اطلاعات ابطال را صادر میکند مجاز شده باشد (و به درستی پیکربندی شده باشد)، اعتبارسنجی موفق خواهد شد.
اگر
پاسخدهنده
OCSP یک
پاسخدهنده
سراسری (global responder)
باشد، که
میتواند
جزئیات
مربوط به
چندین CA را
ارائه دهد و
زنجیره
گواهی
جداگانه
خود را
دارد،
آنگاه CA
ریشه آن
میتواند
برای امضای
OCSP مورد
اعتماد
قرار گیرد.
همچنین خود
گواهی
پاسخدهنده
را میتوان
با استفاده
از گزینه
-VAfile به طور
صریح معتمد
اعلام کرد.
PASSWD
openssl passwd- [
-1|-apr1|-crypt] [-infile] [-noverify] [-quiet] [-reverse] [-saltstring] [-stdin] [-table] [password]
دستور
passwd مقدار
هش یک
گذرواژه را
محاسبه
میکند.
گزینهها به شرح زیر هستند:
-1- استفاده از الگوریتم گذرواژه BSD مبتنی بر MD5 "1".
-apr1- استفاده از الگوریتم "apr1" (گونه آپاچی از الگوریتم BSD).
-crypt- استفاده از الگوریتم "crypt" (پیشفرض).
-infile- خواندن گذرواژهها از file.
-noverify- هنگام خواندن گذرواژه از ترمینال، تایید مجدد را درخواست نمیکند.
-quiet- هنگام کوتاه شدن گذرواژههای ارائهشده در خط فرمان، هشداری چاپ نمیکند.
-reverse- جابجا کردن
ستونهای
جدول. این
گزینه تنها
همراه با
گزینه
-tableمعنا دارد. -saltstring- استفاده از
نمک (salt)
مشخصشده
توسط string.
هنگام
خواندن
گذرواژه از
ترمینال،
این گزینه
به طور ضمنی
-noverifyرا اعمال میکند. -stdin- خواندن گذرواژهها از ورودی استاندارد.
-table- در فهرست خروجی، گذرواژه متن آشکار و یک نویسه TAB را پیش از هر هش گذرواژه درج میکند.
PKCS7
openssl pkcs7- [
-infile] [-informder|pem] [-noout] [-outfile] [-outformder|pem] [-print] [-print_certs] [-text]
دستور
pkcs7
فایلهای PKCS#7
را در قالب DER
یا PEM پردازش
میکند.
روالهای PKCS#7
تنها نسخه
۱.۵ از PKCS#7 را
طبق
استاندارد RFC
2315 درک
میکنند.
گزینهها به شرح زیر هستند:
-infile- فایل ورودی برای خواندن، یا ورودی استاندارد در صورت عدم تعیین.
-informder|pem- قالب ورودی.
-noout- خودداری از
ارسال نسخه
کدگذاریشده
ساختار PKCS#7 به
خروجی (یا
گواهیها
در صورتی که
-print_certsتنظیم شده باشد). -outfile- فایل خروجی برای نوشتن، یا خروجی استاندارد در صورت عدم تعیین.
-outformder|pem- قالب خروجی.
-print- چاپ نمایش ASN.1 ساختار PKCS#7.
-print_certs- چاپ تمام گواهیها یا CRLهای موجود در فایل، به همراه نام موضوع و صادرکننده آنها در قالب تکخطی.
-text- چاپ جزئیات کامل گواهی به جای نمایش صرف نامهای موضوع و صادرکننده.
PKCS8
openssl pkcs8- [
-infile] [-informder|pem] [-nocrypt] [-noiter] [-outfile] [-outformder|pem] [-passinarg] [-passoutarg] [-topk8] [-v1alg] [-v2alg]
دستور
pkcs8
کلیدهای
خصوصی (هم
رمزگذاریشده
و هم
رمزگذارینشده)
را در قالب PKCS#8
با انواع
الگوریتمهای
PKCS#5 (نسخههای
۱.۵ و ۲.۰) و PKCS#12
پردازش
میکند.
گزینهها به شرح زیر هستند:
-infile- فایل ورودی برای خواندن، یا ورودی استاندارد در صورت عدم تعیین. اگر کلید رمزگذاری شده باشد، عبارت عبور درخواست خواهد شد.
-informder|pem- قالب ورودی.
-nocrypt- تولید یک ساختار PrivateKeyInfo بدون رمزگذاری. این گزینه کلیدهای خصوصی را اصلاً رمزگذاری نمیکند و تنها در مواقع کاملاً ضروری باید استفاده شود.
-noiter- استفاده از ۱ بار تکرار (iteration). برای توضیحات کامل این گزینه، بخش PKCS12 در ادامه را ببینید.
-outfile- فایل خروجی برای نوشتن، یا خروجی استاندارد در صورت عدم تعیین. اگر گزینههای رمزگذاری تنظیم شده باشند، عبارت عبور درخواست خواهد شد.
-outformder|pem- قالب خروجی.
-passinarg- منبع گذرواژه کلید.
-passoutarg- منبع گذرواژه فایل خروجی.
-topk8- خواندن کلید خصوصی در قالب سنتی و نوشتن کلید در قالب PKCS#8.
-v1alg- مشخص کردن
الگوریتم PKCS#5
v1.5 یا PKCS#12 مورد
استفاده.
- PBE-MD5-DES
- الگوریتم DES با طول ۵۶ بیت.
- PBE-SHA1-RC2-64 | PBE-MD5-RC2-64 | PBE-SHA1-DES
- الگوریتم RC2 با طول ۶۴ بیت یا DES با طول ۵۶ بیت.
- PBE-SHA1-RC4-128 | PBE-SHA1-RC4-40 | PBE-SHA1-3DES
- PBE-SHA1-2DES | PBE-SHA1-RC2-128 | PBE-SHA1-RC2-40
- الگوریتمهای رمزگذاری مبتنی بر گذرواژه PKCS#12، که امکان استفاده از الگوریتمهای رمزگذاری قوی مانند Triple DES یا RC2 با طول ۱۲۸ بیت را فراهم میکنند.
-v2alg- استفاده از الگوریتمهای PKCS#5 v2.0. این الگوریتمها رمزگذارهای بلوکی مورد استفاده در حالت CBC هستند. پیشفرض AES-256-CBC است. به استثنای AES، سایر گزینههای موجود در RFC 8018 منسوخ در نظر گرفته میشوند. آنها را میتوان با des، des3 و rc2 فعال کرد (rc5 دیگر پشتیبانی نمیشود).
PKCS12
openssl pkcs12- [
-aes128|-aes192|-aes256|-camellia128|-camellia192|-camellia256|-des|-des3|-idea] [-cacerts] [-CAfilefile] [-canamename] [-CApathdirectory] [-certfilefile] [-certpbealg] [-chain] [-clcerts] [-descert] [-export] [-infile] [-info] [-inkeyfile] [-keyex] [-keypbealg] [-keysig] [-macalgalg] [-maciter] [-namename] [-nocerts] [-nodes] [-noiter] [-nokeys] [-nomac] [-nomaciter] [-nomacver] [-noout] [-outfile] [-passinarg] [-passoutarg] [-passwordarg] [-twopass]
دستور
pkcs12 امکان
ایجاد و
تجزیه
فایلهای PKCS#12
(که گاهی
فایلهای PFX
نامیده
میشوند) را
فراهم
میکند. به
طور
پیشفرض،
فایل PKCS#12
تجزیه
میشود؛ یک
فایل PKCS#12 را
میتوان با
استفاده از
گزینه -export
ایجاد کرد.
گزینههای مربوط به تجزیه فایل PKCS12 به شرح زیر هستند:
-aes128|-aes192|-aes256|-camellia128|-camellia192|-camellia256|-des|-des3|-idea- رمزگذاری کلیدهای خصوصی به ترتیب با رمزگذارهای AES، CAMELLIA، DES، Triple DES یا IDEA. حالت پیشفرض Triple DES است.
-cacerts- تنها گواهیهای CA را به خروجی میفرستد (نه گواهیهای کلاینت را).
-clcerts- تنها گواهیهای کلاینت را به خروجی میفرستد (نه گواهیهای CA را).
-infile- فایل ورودی برای خواندن، یا ورودی استاندارد در صورت عدم تعیین.
-info- چاپ اطلاعات اضافی درباره ساختار فایل PKCS#12، الگوریتمهای استفادهشده و تعداد تکرارها.
-nocerts- از خروجی دادن گواهیها خودداری میکند.
-nodes- کلیدهای خصوصی را رمزگذاری نمیکند.
-nokeys- از خروجی دادن کلیدهای خصوصی خودداری میکند.
-nomacver- تلاشی برای اعتبارسنجی MAC یکپارچگی پیش از خواندن فایل انجام نمیدهد.
-noout- از خروجی دادن کلیدها و گواهیها در فایل خروجی خودداری میکند.
-outfile- The output file to write to, or standard output if not specified.
-passinarg- منبع گذرواژه کلید.
-passoutarg- منبع گذرواژه فایل خروجی.
-twopass- درخواست گذرواژههای جداگانه برای یکپارچگی و رمزگذاری: اغلب نرمافزارها همواره فرض میکنند که این دو یکسان هستند، بنابراین این گزینه ممکن است چنین فایلهای PKCS#12 را غیرقابل خواندن کند.
گزینههای مربوط به ایجاد فایل PKCS12 به شرح زیر هستند:
-CAfilefile- مخزن CA به صورت یک فایل.
-CApathdirectory- مخزن CA به
صورت یک
دایرکتوری.
دایرکتوری
باید یک
دایرکتوری
استاندارد
گواهی باشد:
بدین معنا
که هشی از
هر نام
موضوع (با
استفاده از
x509-hash) باید به هر گواهی پیوند داده شده باشد. -canamename- مشخص کردن "نام دوستانه (friendly name)" برای سایر گواهیها. میتواند چندین بار برای تعیین نام تمام گواهیها به ترتیب ظهورشان استفاده شود.
-certfilefile- فایلی برای خواندن گواهیهای اضافی از آن.
-certpbealg,-keypbealg- مشخص کردن
الگوریتم
مورد
استفاده
برای
رمزگذاری
کلید خصوصی
و
گواهیهای
انتخابی. از
هر نام
الگوریتم PKCS#5
v1.5 یا PKCS#12 PBE
میتوان
استفاده
کرد. اگر
نام یک
رمزگذار
(همانند
خروجی
دستور
list-cipher-algorithms) مشخص شود، همراه با PKCS#5 v2.0 استفاده خواهد شد. به دلایل سازگاری و تعاملپذیری، توصیه میشود تنها از الگوریتمهای PKCS#12 استفاده شود. -chain- گنجاندن کل زنجیره گواهیِ مربوط به گواهی کاربر. مخزن استاندارد CA برای این جستجو استفاده میشود. اگر جستجو شکست بخورد، به عنوان یک خطای مهلک در نظر گرفته میشود.
-descert- رمزگذاری گواهی با استفاده از Triple DES؛ این کار ممکن است فایل PKCS#12 را برای برخی نرمافزارهای دارای "درجه صادراتی (export grade)" غیرقابل خواندن سازد. به طور پیشفرض، کلید خصوصی با Triple DES و گواهی با RC2 چهل بیتی رمزگذاری میشوند.
-export- ایجاد یک فایل PKCS#12 (به جای تجزیه کردن آن).
-infile- فایل ورودی برای خواندن، یا ورودی استاندارد در صورت عدم تعیین. The order doesn't matter but one private key and its corresponding certificate should be present. If additional certificates are present, they will also be included in the PKCS#12 file.
-inkeyfile- فایل برای خواندن کلید خصوصی از آن. در صورت عدم وجود، کلید خصوصی باید در فایل ورودی موجود باشد.
-keyex|-keysig- مشخص
میکند که
آیا کلید
خصوصی برای
تبادل کلید
استفاده
میشود یا
صرفاً امضا.
به طور
معمول
نرمافزارهای
"درجه
صادراتی"
تنها اجازه
استفاده از
کلیدهای
۵۱۲ بیتی RSA
را برای
مقاصد
رمزگذاری
میدهند،
اما برای
امضا طول
دلخواه را
میپذیرند.
گزینه
-keysigکلید را صرفاً برای امضا نشانهگذاری میکند. کلیدهای صرفاً امضا میتوانند برای امضای S/MIME، Authenticode (امضای کنترلهای اکتیوایکس) و احراز اصالت کلاینت SSL استفاده شوند. -macalgalg- تعیین الگوریتم خلاصه پیام برای MAC. پیشفرض SHA1 است.
-maciter- تنها برای سازگاری گنجانده شده است: قبلاً برای استفاده از تعداد تکرارهای MAC لازم بود، اما اکنون به طور پیشفرض استفاده میشوند.
-namename- مشخص کردن "نام دوستانه" برای گواهی و کلید خصوصی. این نام معمولاً در جعبههای فهرست توسط نرمافزاری که فایل را ایمپورت میکند نمایش داده میشود.
-nomac- تلاشی برای تامین یکپارچگی MAC انجام نمیدهد.
-nomaciter,-noiter- بر تعداد
تکرارها در
الگوریتمهای
MAC و کلید اثر
میگذارد.
برای جلوگیری از حملات با استفاده از فرهنگلغتهای بزرگِ گذرواژههای رایج، الگوریتمی که کلیدها را از گذرواژهها استخراج میکند میتواند دارای شمارش تکرار باشد: این امر باعث تکرار بخش خاصی از الگوریتم و کندتر شدن آن میشود. کد MAC برای بررسی یکپارچگی فایل استفاده میشود اما از آنجا که معمولاً گذرواژهای یکسان با کلیدها و گواهیها دارد، میتواند مورد حمله قرار گیرد. به طور پیشفرض، تعداد تکرارهای هر دوی MAC و رمزگذاری بر روی ۲۰۴۸ تنظیم شده است؛ با استفاده از این گزینهها میتوان تعداد تکرارهای MAC و رمزگذاری را بر روی ۱ تنظیم کرد. از آنجا که این کار امنیت فایل را کاهش میدهد، نباید از این گزینهها استفاده کنید مگر اینکه واقعاً مجبور باشید. بیشتر نرمافزارها از هر دو شمارش تکرار MAC و کلید پشتیبانی میکنند.
-outfile- The output file to write to, or standard output if not specified.
-passinarg- منبع گذرواژه کلید.
-passoutarg- منبع گذرواژه فایل خروجی.
-passwordarg- همراه با
-export-،گزینه-passwordمعادل-passoutاست. در غیر این صورت،-passwordمعادل-passinخواهد بود.
PKEY
openssl pkey- [cipher]
[
-infile] [-informder|pem] [-noout] [-outfile] [-outformder|pem] [-passinarg] [-passoutarg] [-pubin] [-pubout] [-text] [-text_pub]
دستور
pkey
کلیدهای
عمومی یا
خصوصی را
پردازش
میکند. این
کلیدها را
میتوان
میان
قالبهای
مختلف
تبدیل کرد و
مولفههای
آنها را
چاپ نمود.
گزینهها به شرح زیر هستند:
- cipher
- رمزگذاری
کلید خصوصی
با رمزگذار
مشخصشده.
هر نام
الگوریتمی
که توسط
EVP_get_cipherbyname(3)
پذیرفته
شود، قابل
قبول است،
مانند
des3. -infile- فایل ورودی برای خواندن، یا ورودی استاندارد در صورت عدم تعیین. اگر کلید رمزگذاری شده باشد، عبارت عبور درخواست خواهد شد.
-informder|pem- قالب ورودی.
-noout- Do not output the encoded version of the key.
-outfile- The output file to write to, or standard output if not specified. اگر گزینههای رمزگذاری تنظیم شده باشند، عبارت عبور درخواست خواهد شد.
-outformder|pem- قالب خروجی.
-passinarg- منبع گذرواژه کلید.
-passoutarg- منبع گذرواژه فایل خروجی.
-pubin- Read in a public key, not a private key.
-pubout- Output a public key, not a private key. Automatically set if the input is a public key.
-text- Print the public/private key in plain text.
-text_pub- تنها چاپ مولفههای کلید عمومی، حتی اگر یک کلید خصوصی در حال پردازش باشد.
PKEYPARAM
openssl pkeyparam
[-in file]
[-noout] [-out
file] [-text]
دستور
pkeyparam
پارامترهای
کلیدهای
عمومی یا
خصوصی را
پردازش
میکند. نوع
کلید توسط
هدرهای PEM
تعیین
میشود.
گزینهها به شرح زیر هستند:
PKEYUTL
openssl pkeyutl- [
-asn1parse] [-certin] [-decrypt] [-derive] [-encrypt] [-hexdump] [-infile] [-inkeyfile] [-keyformder|pem] [-outfile] [-passinarg] [-peerformder|pem] [-peerkeyfile] [-pkeyoptopt:value] [-pubin] [-rev] [-sigfilefile] [-sign] [-verify] [-verifyrecover]
دستور
pkeyutl
میتواند
برای انجام
عملیات
کلید عمومی
با استفاده
از هر
الگوریتم
پشتیبانیشدهای
استفاده
شود.
گزینهها به شرح زیر هستند:
-asn1parse- تجزیه ASN.1 روی
دادههای
خروجی. این
گزینه در
ترکیب با
گزینه
-verifyrecoverهنگامی که یک ساختار ASN.1 امضا شده است کاربرد دارد. -certin- ورودی یک گواهی حاوی کلید عمومی است.
-decrypt- رمزگشایی دادههای ورودی با استفاده از کلید خصوصی.
-derive- اشتقاق یک راز مشترک با استفاده از کلید همتا (peer key).
-encrypt- رمزگذاری دادههای ورودی با استفاده از کلید عمومی.
-hexdump- تخلیه هگز (hex dump) دادههای خروجی.
-infile- فایل ورودی برای خواندن، یا ورودی استاندارد در صورت عدم تعیین.
-inkeyfile- فایل کلید ورودی. به طور پیشفرض باید یک کلید خصوصی باشد.
-keyformder|pem- قالب کلید.
-outfile- The output file to write to, or standard output if not specified.
-passinarg- منبع گذرواژه کلید.
-peerformder|pem- قالب کلید همتا.
-peerkeyfile- فایل کلید همتا، مورد استفاده در عملیات اشتقاق کلید (تفاهم کلید).
-pkeyoptopt:value- تنظیم
گزینه
الگوریتم
کلید عمومی
opt بر روی
value. مگر در
مواردی که
خلاف آن ذکر
شده باشد،
تمام
الگوریتمها
از قالب
digest:alg
پشتیبانی
میکنند که
خلاصه پیام
مورد
استفاده را
برای
عملیات sign، verify
و verifyrecover مشخص
میکند.
مقدار alg
باید
نشاندهنده
نام یک
خلاصه پیام
باشد
همانطور
که در تابع
EVP_get_digestbyname(3)
استفاده
میشود.
الگوریتم RSA به طور کلی از عملیاتهای encrypt، decrypt، sign، verify و verifyrecover پشتیبانی میکند. با این حال برخی حالتهای لایهگذاری تنها از بعضی از این عملیاتها پشتیبانی میکنند.
- rsa_padding_mode:mode
- این گزینه
حالت
لایهگذاری
RSA را تنظیم
میکند.
مقادیر
قابل قبول
برای mode
عبارتند
از:
pkcs1برای لایهگذاری PKCS#1؛noneبرای بدون لایهگذاری؛oaepبرای حالت OAEP؛x931برای حالت X9.31؛ وpssبرای PSS.در لایهگذاری PKCS#1 اگر خلاصه پیام تنظیم نشده باشد، دادههای ارائهشده به جای استفاده از ساختار DigestInfo به طور مستقیم امضا یا اعتبارسنجی میشوند. اگر خلاصه پیام تنظیم شده باشد، از ساختار DigestInfo استفاده میشود و طول آن باید با نوع خلاصه پیام مطابقت داشته باشد. برای حالت oeap تنها رمزگذاری و رمزگشایی پشتیبانی میشود. برای x931 اگر نوع خلاصه پیام تنظیم شده باشد، برای قالببندی دادههای بلوک استفاده میشود؛ در غیر این صورت، بایت اول برای تعیین شناسه خلاصه پیام X9.31 استفاده میشود. عملیاتهای sign، verify و verifyrecover را میتوان در این حالت انجام داد. برای حالت pss تنها sign و verify پشتیبانی میشوند و نوع خلاصه پیام باید مشخص شود.
- rsa_pss_saltlen:len
- تنها برای حالت pss، این گزینه طول نمک (salt) را مشخص میکند. دو مقدار ویژه پشتیبانی میشوند: مقدار ۱- طول نمک را برابر با طول خلاصه پیام قرار میدهد. هنگام امضا، ۲- طول نمک را بر روی حداکثر مقدار مجاز تنظیم میکند. هنگام اعتبارسنجی، ۲- باعث میشود طول نمک بر اساس ساختار بلوک PSS به طور خودکار تعیین گردد.
الگوریتم DSA از عملیاتهای sign و verify پشتیبانی میکند. در حال حاضر گزینههای اضافی به جز digest وجود ندارد. تنها خلاصه پیام SHA1 قابل استفاده است و این خلاصه پیام به طور پیشفرض فرض میشود.
الگوریتم DH از عملیات derive پشتیبانی میکند و هیچ گزینه اضافی ندارد.
الگوریتم EC از عملیاتهای sign، verify و derive پشتیبانی میکند. عملیاتهای sign و verify از ECDSA استفاده میکنند و derive از ECDH استفاده مینماید. در حال حاضر هیچ گزینه اضافی به جز digest وجود ندارد. تنها خلاصه پیام SHA1 میتواند استفاده شود و این خلاصه پیام به طور پیشفرض فرض میشود.
-pubin- The input file is a public key.
-rev- معکوس کردن ترتیب بافر ورودی.
-sigfilefile- فایل امضا (تنها در عملیات verify).
-sign- امضای دادههای ورودی و خروجی دادن نتیجه امضاشده. این عملیات به کلید خصوصی نیاز دارد.
-verify- اعتبارسنجی دادههای ورودی در برابر فایل امضا و نشان دادن موفقیتآمیز بودن یا شکست اعتبارسنجی.
-verifyrecover- اعتبارسنجی دادههای ورودی و خروجی دادن دادههای بازیابیشده.
PRIME
openssl prime
[-bits n]
[-checks n]
[-generate] [-hex]
[-safe] p
دستور
prime برای
تولید
اعداد اول
یا بررسی
اول بودن
اعداد
استفاده
میشود.
نتایج
احتمالی
هستند:
احتمال
بسیار
بالایی
برای درستی
آنها وجود
دارد، اما
تضمین قطعی
نیست.
گزینهها به شرح زیر هستند:
-bitsn- مشخص کردن
تعداد
بیتها در
عدد اول
تولیدشده.
باید همراه
با گزینه
-generateاستفاده شود. -checksn- انجام آزمون احتمالاتی اول بودن میلر-رابین با n تکرار. پیشفرض ۲۰ است.
-generate- تولید یک
عدد اول
شبهتصادفی.
باید همراه
با گزینه
-bitsاستفاده شود. -hex- خروجی در قالب هگزادسیمال.
-safe- تنها تولید اعداد اول "امن" (یعنی یک عدد اول p که در آن (p-1)/2 نیز اول باشد).
- p
- آزمون اینکه آیا عدد p اول است یا خیر.
RAND
openssl rand- [
-base64] [-hex] [-outfile] num
دستور
rand تعداد
num بایت
شبهتصادفی
را در خروجی
تولید
میکند.
گزینهها به شرح زیر هستند:
REQ
openssl req- [
-addextext] [-batch] [-configfile] [-daysn] [-extensionssection] [-infile] [-informder|pem] [-keykeyfile] [-keyformder|pem] [-keyoutfile] [-md4|-md5|-sha1] [-modulus] [-multivalue-rdn] [-nameoptoption] [-new] [-newhdr] [-newkeyarg] [-nodes] [-noout] [-outfile] [-outformder|pem] [-passinarg] [-passoutarg] [-pkeyoptopt:value] [-pubkey] [-reqextssection] [-reqoptoption] [-set_serialn] [-sigoptnm:v] [-subjarg] [-subject] [-text] [-utf8] [-verbose] [-verify] [-x509]
دستور
req عمدتاً
درخواستهای
گواهی را در
قالب PKCS#10
ایجاد و
پردازش
میکند.
همچنین
میتواند
گواهیهای
خودامضاشده
تولید کند،
برای نمونه
جهت
استفاده به
عنوان CA
ریشه.
گزینهها به شرح زیر هستند:
-addextext- افزودن یک
افزونه خاص
به گواهی
(اگر گزینه
-x509ارائه شده باشد) یا درخواست گواهی. آرگومان باید به شکل یک جفت key=value باشد همانطور که در فایل پیکربندی ظاهر میشود. این گزینه میتواند چندین بار مشخص شود. -batch- حالت غیرتعاملی (batch).
-configfile- مشخص کردن فایل پیکربندی جایگزین.
-daysn- مشخص کردن
تعداد
روزهایی که
گواهی برای
آن مدت
معتبر
خواهد بود.
حالت
پیشفرض ۳۰
روز است.
همراه با
گزینه
-x509استفاده میشود. -extensionssection,-reqextssection- مشخص کردن
بخشهای
جایگزین
برای
گنجاندن
افزونههای
گواهی
(همراه با
-x509) یا افزونههای درخواست گواهی، که امکان استفاده از چندین بخش مختلف در یک فایل پیکربندی یکسان را فراهم میکند. -infile- فایل ورودی
برای
خواندن
درخواست از
آن، یا
ورودی
استاندارد
در صورت عدم
تعیین.
درخواست
تنها در
صورتی
خوانده
میشود که
گزینههای
ایجاد شامل
-newو-newkeyمشخص نشده باشند. -informder|pem- قالب ورودی.
-keykeyfile- فایلی برای خواندن کلید خصوصی از آن. همچنین کلیدهای خصوصی در قالب PKCS#8 را برای فایلهای قالب PEM میپذیرد.
-keyformder|pem- قالب فایل
کلید خصوصی
مشخصشده
در آرگومان
-key. حالت پیشفرضpemاست. -keyoutfile- فایلی برای نوشتن کلید خصوصی تازهتولیدشده در آن. اگر این گزینه مشخص نشود، از نام فایل موجود در فایل پیکربندی استفاده میشود.
-md5|-sha1|-sha256- الگوریتم
خلاصه پیام
برای امضای
درخواست.
این گزینه
الگوریتم
خلاصه پیام
مشخصشده
در فایل
پیکربندی
را
بازنویسی
میکند.
برخی الگوریتمهای کلید عمومی ممکن است این انتخاب را نادیده بگیرند. برای نمونه، امضاهای DSA همیشه از SHA1 استفاده میکنند.
-modulus- چاپ مقدار مدولوس (modulus) کلید عمومی موجود در درخواست.
-multivalue-rdn- این گزینه
باعث
میشود
آرگومان
-subjبا پشتیبانی کامل از RDNهای چندمقداری تفسیر شود، برای نمونه "/DC=org/DC=OpenSSL/DC=users/UID=123456+CN=John Doe". اگر-multivalue-rdnاستفاده نشود، مقدار UID بر روی "123456+CN=John Doe" تنظیم خواهد شد. -nameoptoption,-reqoptoption- تعیین نحوه نمایش نامهای موضوع یا صادرکننده. option میتواند یک گزینه منفرد یا چندین گزینه جداشده با کاما باشد. همچنین این گزینهها میتوانند بیش از یک بار برای تنظیم چندین گزینه استفاده شوند. برای جزئیات به بخش X509 در ادامه مراجعه کنید.
-new- تولید یک
درخواست
گواهی جدید.
مقادیر
فیلدهای
مربوطه از
کاربر
درخواست
میشود.
فیلدهای
واقعی
درخواستی و
حداکثر و
حداقل
اندازه
آنها در
فایل
پیکربندی و
هرگونه
افزونه
درخواستی
مشخص
شدهاند.
اگر از گزینه
-keyاستفاده نشود، یک کلید خصوصی RSA جدید با استفاده از اطلاعات مشخصشده در فایل پیکربندی تولید خواهد شد. -newhdr- افزودن واژه NEW به خطوط سرآیند و پانویس فایل PEM در درخواست خروجی. برخی نرمافزارها و CAها به این نیاز دارند.
-newkeyarg- ایجاد یک
درخواست
گواهی جدید
و یک کلید
خصوصی جدید.
آرگومان
یکی از
چندین فرم
زیر را
میگیرد:
rsa:nbits یک کلید RSA با اندازه nbits تولید میکند. اگر nbits حذف شود، از اندازه کلید پیشفرض استفاده میشود.
dsa:file یک کلید DSA با استفاده از پارامترهای موجود در file تولید میکند.
param:file یک کلید با استفاده از پارامترها یا گواهی موجود در file تولید میکند.
تمامی الگوریتمهای دیگر از فرم algorithm:file پشتیبانی میکنند، که در آن file میتواند یک فایل پارامتر الگوریتم باشد که توسط دستور
genpkey -genparamایجاد شده است، یا یک گواهی X.509 برای کلیدی با الگوریتم مناسب. پارامتر file میتواند حذف شود، که در این حالت هر پارامتری میتواند از طریق گزینه-pkeyoptمشخص شود. -nodes- کلید خصوصی را رمزگذاری نمیکند.
-noout- از خروجی دادن نسخه کدگذاریشده درخواست خودداری میکند.
-outfile- فایل خروجی برای نوشتن، یا خروجی استاندارد در صورت عدم تعیین.
-outformder|pem- قالب خروجی.
-passinarg- منبع گذرواژه کلید.
-passoutarg- منبع گذرواژه فایل خروجی.
-pkeyoptopt:value- تنظیم گزینه الگوریتم کلید عمومی opt بر روی value.
-pubkey- خروجی دادن کلید عمومی.
-reqoptoption- سفارشیسازی
قالب خروجی
مورد
استفاده با
-text. آرگومان option میتواند یک گزینه منفرد یا چندین گزینه جداشده با کاما باشد. همچنین به توضیحات-certoptدر دستورx509مراجعه کنید. -set_serialn- شماره سریال برای استفاده هنگام خروجی دادن یک گواهی خودامضاشده. میتواند به عنوان یک مقدار دهدهی یا یک مقدار هگزادسیمال با پیشوند ‘0x’ مشخص شود. استفاده از شماره سریالهای منفی امکانپذیر است اما توصیه نمیشود.
-sigoptnm:v- ارسال گزینهها به الگوریتم امضا در طول عملیات امضا. نامها و مقادیر این گزینهها وابسته به الگوریتم هستند.
-subjarg- جایگزین کردن فیلد موضوع درخواست ورودی با دادههای مشخصشده و خروجی دادن درخواست اصلاحشده. آرگومان arg باید به صورت /type0=value0/type1=value1/type2=... قالببندی شود؛ کاراکترها میتوانند با ‘\’ (بکاسلش) اسکیپ شوند؛ هیچ فاصلهای نادیده گرفته نمیشود.
-subject- چاپ موضوع
درخواست (یا
موضوع
گواهی در
صورتی که
-x509مشخص شده باشد). -text- چاپ درخواست گواهی در قالب متن آشکار.
-utf8- تفسیر مقادیر فیلدها به عنوان رشتههای UTF-8 به جای ASCII.
-verbose- چاپ جزئیات بیشتر درباره عملیات در حال انجام.
-verify- اعتبارسنجی امضای موجود روی درخواست.
-x509- خروجی دادن
یک گواهی
خودامضاشده
به جای
درخواست
گواهی. این
گزینه
معمولاً
برای ایجاد
یک گواهی
آزمایشی یا
یک CA ریشه
خودامضاشده
استفاده
میشود.
افزونههای
اضافهشده
به گواهی
(در صورت
وجود) در
فایل
پیکربندی
مشخص
میشوند.
مگر اینکه
با گزینه
-set_serialمشخص شده باشد، عدد ۰ برای شماره سریال استفاده میشود.
گزینههای پیکربندی در بخش "req" از فایل پیکربندی مشخص میشوند. گزینههای موجود به شرح زیر هستند:
attributes- بخشی شامل
ویژگیهای
درخواست:
قالب آن
مشابه
distinguished_nameاست. معمولاً این بخش ممکن است شامل انواع challengePassword یا unstructuredName باشد. در حال حاضر توسط ابزارهای امضای درخواست درopensslنادیده گرفته میشوند، اما برخی CAها ممکن است به آنها نیاز داشته باشند. default_bits- اندازه
پیشفرض
کلید به
بیت. حالت
پیشفرض
۲۰۴۸ است.
در صورت
استفاده از
گزینه
-newبه کار میرود و میتوان با استفاده از گزینه-newkeyآن را بازنویسی کرد. default_keyfile- فایل
پیشفرض
برای نوشتن
کلید
خصوصی، یا
خروجی
استاندارد
در صورت عدم
تعیین.
میتوان آن
را با گزینه
-keyoutبازنویسی کرد. default_md- الگوریتم
خلاصه پیام
مورد
استفاده.
مقادیر
ممکن شامل
md5 ،sha1وsha256(پیشفرض) هستند. میتوان آن را در خط فرمان بازنویسی کرد. distinguished_name- بخشی شامل فیلدهای نام متمایز (distinguished name) که باید هنگام ایجاد گواهی یا درخواست گواهی از کاربر پرسیده شوند. قالب آن در ادامه شرح داده شده است.
encrypt_key- اگر بر روی
"no" تنظیم
شود و یک
کلید خصوصی
تولید
گردد، کلید
رمزگذاری
نخواهد شد.
معادل
گزینه
-nodesاست. جهت سازگاری،encrypt_rsa_keyیک گزینه معادل است. input_password|output_password- گذرواژههای
فایل کلید
خصوصی
ورودی (در
صورت وجود)
و فایل کلید
خصوصی
خروجی (در
صورت
ایجاد).
گزینههای
خط فرمان
-passinو-passoutمقادیر فایل پیکربندی را بازنویسی میکنند. oid_file- فایلی حاوی شناسههای شیء (OBJECT IDENTIFIER) اضافی. هر سطر فایل باید شامل شکل عددی شناسه شیء به همراه فاصله، سپس نام کوتاه به همراه فاصله و در نهایت نام کامل باشد.
oid_section- مشخص کردن بخشی در فایل پیکربندی حاوی شناسههای شیء اضافی. هر سطر باید شامل نام کوتاه شناسه شیء به همراه ‘=’ و شکل عددی باشد. در صورت استفاده از این گزینه، نام کوتاه و نام کامل یکسان خواهند بود.
prompt- اگر بر روی
"no" تنظیم
شود، پرسش
فیلدهای
گواهی از
کاربر را
غیرفعال
میکند و
مقادیر را
مستقیماً
از فایل
پیکربندی
میگیرد.
همچنین
قالب مورد
انتظار
برای
بخشهای
distinguished_nameوattributesرا تغییر میدهد. req_extensions- بخش فایل
پیکربندی
حاوی
فهرستی از
افزونهها
برای اضافه
شدن به
درخواست
گواهی.
میتوان آن
را با گزینه
-reqextsبازنویسی کرد. string_mask- محدود کردن
انواع
رشتهها
برای
کدگذاری
برخی
فیلدها.
مقادیر زیر
را میتوان
استفاده
کرد که
رشتهها را
به انواع
مشخصشده
محدود
میکنند:
utf8only- رشتههای UTF8String. این حالت پیشفرض است، همانگونه که توسط PKIX در RFC 2459 توصیه شده است.
default- رشتههای PrintableString، IA5String، T61String، BMPString، UTF8String.
pkix- رشتههای PrintableString، IA5String، BMPString، UTF8String. الهامگرفته از توصیه PKIX در RFC 2459 برای گواهیهای تولیدشده قبل از سال ۲۰۰۴، با این تفاوت که IA5String را نیز مجاز میداند.
nombstr- رشتههای PrintableString، IA5String، T61String، UniversalString. راهکاری برای برخی نرمافزارهای بسیار قدیمی که با انواع BMPString و UTF8String با اندازه متغیر مشکل داشتند.
MASK:number- یک ماسک
بیتی صریح
از انواع
مجاز، که
در آن number
یک عدد
هگزادسیمال،
دهدهی یا
اکتال به
سبک C است که
حاصل OR بیتی
از مقادیر
B_ASN1_*از فایل<openssl/asn1.h>میباشد.
utf8- اگر بر روی "yes" تنظیم شود، مقادیر فیلدها به عنوان رشتههای UTF-8 تفسیر میشوند.
x509_extensions- بخش فایل
پیکربندی
حاوی
فهرستی از
افزونهها
برای اضافه
شدن به
گواهی
ایجادشده
هنگامی که
سوئیچ
-x509استفاده شده باشد. میتوان آن را با سوئیچ خط فرمان-extensionsبازنویسی کرد.
دو قالب
جداگانه
برای
بخشهای distinguished name
و attribute وجود
دارد. اگر
گزینه -prompt
بر روی "no"
تنظیم شده
باشد، این
بخشها
صرفاً شامل
نام فیلدها
و مقادیر
آنها
خواهند بود.
اگر گزینه
-prompt وجود
نداشته
باشد یا بر
روی "no"
تنظیم نشده
باشد، فایل
شامل
اطلاعات
درخواست
فیلد از
کاربر به
فرم زیر
خواهد بود:
fieldName="prompt" fieldName_default="default field value" fieldName_min= 2 fieldName_max= 4
بخش "fieldName"
نام فیلد
مورد
استفاده
است، برای
نمونه commonName
(یا CN). رشته "prompt"
برای
درخواست از
کاربر جهت
وارد کردن
جزئیات
مربوطه
استفاده
میشود. اگر
کاربر چیزی
وارد نکند،
مقدار
پیشفرض
استفاده
میشود؛
اگر مقدار
پیشفرضی
وجود
نداشته
باشد، فیلد
حذف خواهد
شد. حتی در
صورت وجود
مقدار
پیشفرض،
اگر کاربر
تنها نویسه
‘.’ را وارد
کند، فیلد
حذف
میشود.
تعداد
نویسههای
واردشده
باید میان
محدودیتهای
fieldName_min و fieldName_max باشد:
ممکن است
محدودیتهای
اضافی بر
اساس فیلد
مورد
استفاده
وجود داشته
باشد (برای
نمونه countryName
همواره
باید دو
نویسه باشد
و در یک
PrintableString
بگنجد).
برخی
فیلدها
(مانند
organizationName)
میتوانند
بیش از یک
بار در یک DN
استفاده
شوند. این
امر مشکلی
ایجاد
میکند
زیرا
فایلهای
پیکربندی
نام یکسانی
را که دو بار
تکرار شده
باشد تشخیص
نمیدهند.
برای
جلوگیری از
این مشکل،
اگر fieldName
شامل
نویسههایی
به همراه یک
نقطه باشد،
آن بخش
نادیده
گرفته
میشود.
بنابراین
برای نمونه
میتوان
دومین
organizationName را با
نامگذاری
آن به صورت
"1.organizationName" وارد
کرد.
نامهای
مجاز
فیلدها در
واقع شامل
هر نام
کوتاه یا
کاملِ
شناسه شیء (OID)
هستند. این
مقادیر در
داخل openssl
کامپایل
شدهاند و
شامل
مقادیر
متداول
مانند commonName
، countryName ، localityName ، organizationName
، organizationalUnitName ،
stateOrProvinceName
میباشند.
علاوه بر
این، emailAddress
و همچنین
name ، surname ، givenName ،
initials و dnQualifier
نیز
گنجانده
شدهاند.
شناسههای
شیء اضافی
را میتوان
با
گزینههای
oid_file یا
oid_section در
فایل
پیکربندی
تعریف کرد.
با هر فیلد
اضافی به
گونهای
رفتار
خواهد شد که
گویی یک
DirectoryString است.
RSA
openssl rsa- [
-aes128|-aes192|-aes256|-des|-des3] [-check] [-infile] [-informder|net|pem|pvk] [-modulus] [-noout] [-outfile] [-outformder|net|pem|pvk] [-passinarg] [-passoutarg] [-pubin] [-pubout] [-pvk-none|-pvk-strong|-pvk-weak] [-RSAPublicKey_in] [-RSAPublicKey_out] [-text]
دستور
rsa
کلیدهای RSA
را پردازش
میکند. این
کلیدها را
میتوان
میان
فرمتهای
مختلف
تبدیل کرد و
اجزای
آنها را
چاپ نمود.
دستور rsa
از قالب
سنتی
سازگار با
SSLeay برای
رمزنگاری
کلید خصوصی
استفاده
میکند:
برنامههای
جدیدتر
باید از
قالب
امنتر PKCS#8 با
استفاده از
ابزار pkcs8
استفاده
کنند.
گزینهها به شرح زیر هستند:
-aes128|-aes192|-aes256|-des|-des3- رمزگذاری
کلید خصوصی
به ترتیب با
رمزگذارهای
AES، DES یا Triple DES پیش
از ارسال آن
به خروجی.
عبارت عبور
درخواست
خواهد شد.
اگر هیچیک
از این
گزینهها
مشخص
نشوند،
کلید به
صورت متن
آشکار
نوشته
میشود. این
بدان
معناست که
استفاده از
ابزار
rsaبرای خواندن یک کلید رمزگذاریشده بدون تعیین گزینه رمزگذاری میتواند برای حذف عبارت عبور از کلید استفاده شود، یا با تنظیم گزینههای رمزگذاری میتوان برای افزودن یا تغییر عبارت عبور از آن استفاده نمود. این گزینهها تنها با فایلهای خروجی با قالب PEM قابل استفاده هستند. -check- بررسی سازگاری و درستی ساختاری یک کلید خصوصی RSA.
-infile- The input file to read from, or standard input if not specified. If the key is encrypted, a pass phrase will be prompted for.
-informder|net|pem|pvk- قالب ورودی.
-noout- Do not output the encoded version of the key.
-modulus- چاپ مقدار مدولوس (modulus) کلید.
-outfile- فایل خروجی برای نوشتن، یا خروجی استاندارد در صورت عدم تعیین.
-outformder|net|pem|pvk- قالب خروجی.
-passinarg- منبع گذرواژه کلید.
-passoutarg- منبع گذرواژه فایل خروجی.
-pubin- خواندن یک کلید عمومی، و نه یک کلید خصوصی.
-pubout- خروجی دادن یک کلید عمومی، و نه یک کلید خصوصی. در صورت عمومی بودن ورودی، به طور خودکار فعال میشود.
-pvk-none|-pvk-strong|-pvk-weak- Enable or disable PVK encoding. The default is
-pvk-strong. -RSAPublicKey_in,-RSAPublicKey_out- مشابه
-pubinو-puboutاست با این تفاوت که از قالبRSAPublicKeyاستفاده میشود. -text- چاپ اجزای کلید عمومی/خصوصی در قالب متن آشکار.
RSAUTL
openssl rsautl- [
-asn1parse] [-certin] [-decrypt] [-encrypt] [-hexdump] [-infile] [-inkeyfile] [-keyformder|pem] [-oaep|-pkcs|-raw|-x931] [-outfile] [-passinarg] [-pubin] [-rev] [-sign] [-verify]
دستور
rsautl
میتواند
برای امضا،
اعتبارسنجی،
رمزگذاری و
رمزگشایی
دادهها با
استفاده از
الگوریتم RSA
به کار رود.
گزینهها به شرح زیر هستند:
-asn1parse- تجزیه با asn1parse
روی
دادههای
خروجی؛ در
صورت ترکیب
با گزینه
-verifyکاربرد دارد. -certin- ورودی یک گواهی حاوی کلید عمومی RSA است.
-decrypt- رمزگشایی دادههای ورودی با استفاده از کلید خصوصی RSA.
-encrypt- رمزگذاری دادههای ورودی با استفاده از کلید عمومی RSA.
-hexdump- Hex dump the output data.
-infile- The input to read from, or standard input if not specified.
-inkeyfile- فایل کلید ورودی؛ به طور پیشفرض یک کلید خصوصی RSA است.
-keyformder|pem- قالب کلید
خصوصی. حالت
پیشفرض
pemاست. -oaep|-pkcs|-raw|-x931- لایهگذاری
مورد
استفاده: به
ترتیب
لایهگذاری
PKCS#1 OAEP، PKCS#1 v1.5
(پیشفرض)،
بدون
لایهگذاری
یا ANSI X9.31. برای
امضاها
تنها
گزینههای
-pkcsو-rawقابل استفاده هستند. -outfile- فایل خروجی برای نوشتن، یا خروجی استاندارد در صورت عدم تعیین.
-passinarg- منبع گذرواژه کلید.
-pubin- فایل ورودی یک کلید عمومی RSA است.
-rev- Reverse the order of the input buffer.
-sign- امضای دادههای ورودی و خروجی دادن نتیجه امضاشده. به یک کلید خصوصی RSA نیاز دارد.
-verify- Verify the input data and output the recovered data.
S_CLIENT
openssl s_client- [
-4|-6] [-alpnprotocols] [-bugs] [-CAfilefile] [-CApathdirectory] [-certfile] [-certformder|pem] [-check_ss_sig] [-ciphercipherlist] [-connecthost[:port]] [-crl_check] [-crl_check_all] [-crlf] [-debug] [-dtls] [-dtls1_2] [-extended_crl] [-groupslist] [-hosthost] [-ign_eof] [-ignore_critical] [-issuer_checks] [-keykeyfile] [-keyformder|pem] [-keymatexportlabel] [-keymatexportlenlen] [-legacy_server_connect] [-msg] [-mtumtu] [-nbio] [-nbio_test] [-no_comp] [-no_ign_eof] [-no_legacy_server_connect] [-no_ticket] [-no_tls1_2] [-no_tls1_3] [-passarg] [-policy_check] [-portport] [-prexit] [-proxyhost:port] [-quiet] [-reconnect] [-servernamename] [-serverpref] [-sess_infile] [-sess_outfile] [-showcerts] [-starttlsprotocol] [-state] [-status] [-timeout] [-tls1_2] [-tls1_3] [-tlsextdebug] [-use_srtpprofiles] [-verifydepth] [-verify_return_error] [-x509_strict] [-xmpphosthost]
دستور
s_client یک
کلاینت
عمومی SSL/TLS را
پیادهسازی
میکند که
با استفاده
از SSL/TLS به یک
میزبان راه
دور متصل
میشود.
اگر
اتصالی با
یک سرور SSL
برقرار
شود، هر
دادهای که
از سرور
دریافت شود
نمایش داده
شده و فشردن
هر کلیدی به
سرور ارسال
خواهد شد.
هنگامی که
به صورت
تعاملی
استفاده
شود (یعنی نه
گزینه -quiet
و نه -ign_eof
ارائه نشده
باشند)، اگر
خط ورودی با
حرف R
آغاز شود
نشست
دوباره
مذاکره
خواهد شد؛
اگر خط با
حرف Q
آغاز شود یا
به انتهای
فایل برسد،
اتصال بسته
خواهد شد.
گزینهها به شرح زیر هستند:
-4- تلاش برای برقراری اتصال تنها با استفاده از IPv4.
-6- تلاش برای برقراری اتصال تنها با استفاده از IPv6.
-alpnprotocols- فعالسازی مذاکره پروتکل لایه کاربرد یا Application-Layer Protocol Negotiation (ALPN). protocols فهرستی جداشده با کاما از نامهای پروتکل است که کلاینت باید پشتیبانی از آنها را اعلان کند.
-bugs- فعالسازی راهکارهای ترمیمی گوناگون برای پیادهسازیهای دارای باگ.
-CAfilefile- یک file حاوی گواهیهای معتمد جهت استفاده در احراز اصالت سرور و برای استفاده هنگام تلاش جهت ساخت زنجیره گواهی کلاینت.
-CApathdirectory- دایرکتوری
directory مورد
استفاده
برای
اعتبارسنجی
گواهی سرور.
این پوشه
باید در
"قالب هش"
باشد؛ برای
اطلاعات
بیشتر به
-verifyمراجعه کنید. این موارد همچنین هنگام ساخت زنجیره گواهی کلاینت استفاده میشوند. -certfile- گواهی مورد استفاده در صورتی که توسط سرور درخواست شود. حالت پیشفرض عدم استفاده از گواهی است.
-certformder|pem- قالب گواهی.
حالت
پیشفرض
pemاست. -check_ss_sig,-crl_check,-crl_check_all,-extended_crl,-ignore_critical,-issuer_checks,-policy_check,-x509_strict- Set various certificate chain validation options. See the
verifycommand for details. -ciphercipherlist- اصلاح
فهرست
رمزگذارهای
ارسالی
توسط
کلاینت.
اگرچه سرور
تعیین
میکند که
کدام
مجموعه
رمزنگاری
استفاده
شود، اما
باید اولین
رمزگذار
پشتیبانیشده
در فهرست
ارسالی
کلاینت را
انتخاب کند.
برای
اطلاعات
بیشتر به
دستور
ciphersمراجعه کنید. -connecthost[:port]- میزبان host و پورت port برای اتصال. در صورت عدم تعیین، تلاشی برای اتصال به میزبان محلی (localhost) روی پورت ۴۴۳۳ انجام میشود. همچنین زوج میزبان و پورت میتوانند با استفاده از نویسه اسلش (/) جدا شوند، که برای نشانیهای عددی IPv6 مفید است.
-crlf- تبدیل کاراکتر پایان خط (Line Feed) از ترمینال به CR+LF، همانطور که توسط برخی سرورها الزامی است.
-debug- چاپ اطلاعات گسترده اشکالزدایی، شامل تخلیه هگز (hex dump) تمام ترافیک شبکه.
-dtls- اجازه استفاده از هر نسخهای از DTLS.
-dtls1_2- اجازه استفاده تنها از نسخه ۱.۲ پروتکل DTLS.
-groupslist- تنظیم گروههای منحنی بیضوی پشتیبانیشده بر اساس list جداشده با دونقطه از NIDها یا نامهای گروه طبق آنچه در SSL_CTX_set1_groups_list(3) مستند شده است.
-hosthost- میزبان host برای اتصال. پیشفرض localhost است.
-ign_eof- جلوگیری از قطع اتصال هنگام رسیدن به انتهای فایل (EOF) در ورودی.
-keykeyfile- کلید خصوصی مورد استفاده. در صورت عدم تعیین، از فایل گواهی استفاده خواهد شد.
-keyformder|pem- The private key format. The default is
pem. -keymatexportlabel- استخراج دادههای کلیدی (keying material) با استفاده از برچسب.
-keymatexportlenlen- استخراج len بایت از دادههای کلیدی (پیشفرض ۲۰).
-legacy_server_connect,-no_legacy_server_connect- مجاز یا غیرمجاز کردن اتصال اولیه به سرورهایی که از مذاکره مجدد امن (RI) پشتیبانی نمیکنند.
-msg- نمایش تمام پیامهای پروتکل همراه با تخلیه هگز.
-mtumtu- تنظیم MTU لایه پیوند.
-nbio- فعالسازی ورودی/خروجی غیرمسدودکننده (non-blocking I/O).
-nbio_test- آزمایش ورودی/خروجی غیرمسدودکننده.
-no_ign_eof- قطع اتصال
هنگام
رسیدن به
انتهای
فایل در
ورودی.
میتواند
برای لغو
-ign_eofضمنیِ ناشی از-quietاستفاده شود. -no_tls1_2|-no_tls1_3- به ترتیب غیرفعال کردن استفاده از TLS1.2 و TLS1.3.
-no_ticket- غیرفعال کردن پشتیبانی از بلیت نشست RFC 4507.
-passarg- The private key password source.
-portport- پورت port برای اتصال. پیشفرض ۴۴۳۳ است.
-prexit- چاپ اطلاعات نشست هنگام خروج برنامه. این گزینه همواره تلاش میکند تا اطلاعات را چاپ کند حتی اگر اتصال شکست بخورد. به طور معمول اطلاعات تنها یک بار در صورت برقراری موفقیتآمیز اتصال چاپ میشود. این گزینه مفید است زیرا رمزگذار در حال استفاده ممکن است دوباره مذاکره شود، یا اتصال ممکن است به دلیل لزوم ارائه گواهی کلاینت یا درخواست آن پس از تلاش برای دسترسی به یک URL خاص شکست بخورد. توجه داشته باشید که خروجی تولیدشده توسط این گزینه همواره دقیق نیست زیرا ممکن است هرگز اتصالی برقرار نشده باشد.
-proxyhost:port- استفاده از
پراکسی HTTP در
host و port.
اتصال به
پراکسی به
صورت متن
آشکار
انجام شده و
آرگومان
-connectبه پراکسی داده میشود. در صورت عدم تعیین، localhost به عنوان مقصد نهایی استفاده میشود. سپس اتصال از طریق پراکسی به مقصد به TLS تغییر مییابد. -quiet- جلوگیری از
چاپ
اطلاعات
نشست و
گواهی. این
گزینه به
طور ضمنی
-ign_eofرا نیز فعال میکند. -reconnect- اتصال مجدد به همان سرور به تعداد ۵ بار با استفاده از شناسه نشست یکسان؛ از این گزینه میتوان برای آزمایش عملکرد کش نشست استفاده کرد.
-servernamename- گنجاندن افزونه Server Name Indication (SNI) در پیام ClientHello با استفاده از نام سرور name.
-showcerts- نمایش کل زنجیره گواهی سرور: به طور معمول تنها خود گواهی سرور نمایش داده میشود.
-serverpref- استفاده از اولویتهای رمزگذاری سرور.
-sess_infile- بارگذاری نشست TLS از فایل. کلاینت تلاش خواهد کرد تا اتصال را از این نشست از سر بگیرد.
-sess_outfile- خروجی دادن نشست TLS به فایل.
-starttlsprotocol- ارسال پیامهای ویژه پروتکل برای ارتقای ارتباط به TLS (STARTTLS). protocol کلیدواژهای برای پروتکل مورد نظر است. در حال حاضر کلیدواژههای پشتیبانیشده عبارتند از: "ftp ،" "imap ،" "sieve ،" "smtp ،" "pop3" و "xmpp".
-state- چاپ وضعیتهای نشست SSL.
-status- ارسال درخواست وضعیت گواهی به سرور (OCSP stapling). پاسخ سرور (در صورت وجود) چاپ میشود.
-timeout- فعالسازی مهلت زمانی (timeout) ارسال/دریافت در اتصالات DTLS.
-tls1_2|-tls1_3- به ترتیب اجازه استفاده تنها از TLS1.2 یا TLS1.3.
-tlsextdebug- چاپ تخلیه هگز هرگونه افزونه TLS دریافتشده از سرور.
-use_srtpprofiles- پیشنهاد مدیریت کلید SRTP با فهرستی از پروفایلهای جداشده با دونقطه.
-verifydepth- فعالسازی اعتبارسنجی گواهی سرور، با حداکثر عمق depth. در حال حاضر عملیات اعتبارسنجی پس از خطاها ادامه مییابد تا تمام مشکلات مربوط به زنجیره گواهی قابل مشاهده باشد. به عنوان یک اثر جانبی، اتصال هرگز به دلیل شکست در اعتبارسنجی گواهی سرور متوقف نخواهد شد.
-verify_return_error- بازگرداندن خطای اعتبارسنجی.
-xmpphosthostname- هنگام
استفاده با
-starttlsxmpp ، میزبان مربوط به ویژگی "to" در عنصر stream را مشخص میکند. اگر این گزینه مشخص نشود، میزبان تعیینشده با-connectاستفاده خواهد شد.
S_SERVER
openssl s_server- [
-acceptport] [-alpnprotocols] [-bugs] [-CAfilefile] [-CApathdirectory] [-certfile] [-cert2file] [-certformder|pem] [-ciphercipherlist] [-contextid] [-crl_check] [-crl_check_all] [-crlf] [-dcertfile] [-dcertformder|pem] [-debug] [-dhparamfile] [-dkeyfile] [-dkeyformder|pem] [-dpassarg] [-dtls] [-dtls1] [-dtls1_2] [-groupslist] [-HTTP] [-id_prefixarg] [-keykeyfile] [-key2keyfile] [-keyformder|pem] [-keymatexportlabel] [-keymatexportlenlen] [-msg] [-mtumtu] [-nacceptnum] [-named_curvearg] [-nbio] [-nbio_test] [-no_cache] [-no_dhe] [-no_ecdhe] [-no_ticket] [-no_tls1_2] [-no_tls1_3] [-no_tmp_rsa] [-nocert] [-passarg] [-quiet] [-servernamename] [-servername_fatal] [-serverpref] [-state] [-status] [-status_timeoutnsec] [-status_urlurl] [-status_verbose] [-timeout] [-tls1_2] [-tls1_3] [-tlsextdebug] [-use_srtpprofiles] [-Verifydepth] [-verifydepth] [-verify_return_error] [-WWW] [-www]
دستور
s_server یک
سرور عمومی
SSL/TLS را
پیادهسازی
میکند که
برای
اتصالات
روی پورت
مشخص با
استفاده از
SSL/TLS شنود
میکند.
اگر
درخواست
اتصالی با
یک کلاینت
برقرار شود
و نه گزینه
-www و نه
-WWW
استفاده
نشده باشد،
هر داده
دریافتشده
از کلاینت
نمایش داده
شده و فشردن
کلیدها به
کلاینت
ارسال
میشود.
برخی
دستورات
تکحرفی
عملیاتهای
خاصی انجام
میدهند:
P- ارسال متن ساده، که باید باعث قطع اتصال کلاینت شود.
Q- پایان دادن به اتصال SSL جاری و خروج.
q- پایان دادن به اتصال SSL جاری، اما همچنان پذیرش اتصالات جدید.
R- مذاکره مجدد نشست SSL و درخواست گواهی کلاینت.
r- مذاکره مجدد نشست SSL.
S- چاپ برخی اطلاعات مربوط به وضعیت کش نشست.
گزینهها به شرح زیر هستند:
-acceptport- شنود روی پورت TCP port برای اتصالات. پیشفرض پورت ۴۴۳۳ است.
-alpnprotocols- فعالسازی مذاکره پروتکل لایه کاربرد (ALPN). protocols فهرستی جداشده با کاما از نامهای پروتکلهای پشتیبانیشده است.
-bugs- فعالسازی راهکارهای ترمیمی گوناگون برای پیادهسازیهای دارای باگ.
-CAfilefile- یک file حاوی گواهیهای معتمد جهت استفاده هنگام احراز اصالت کلاینت و هنگام تلاش برای ساخت زنجیره گواهی سرور. این فهرست همچنین در فهرست CAهای قابل قبول کلاینت که هنگام درخواست گواهی به کلاینت ارسال میشود به کار میرود.
-CApathdirectory- دایرکتوری
directory مورد
استفاده
برای
اعتبارسنجی
گواهی
کلاینت. این
پوشه باید
در "قالب
هش" باشد؛
برای
اطلاعات
بیشتر به
-verifyمراجعه کنید. این موارد همچنین هنگام ساخت زنجیره گواهی سرور استفاده میشوند. -certfile- گواهی مورد استفاده: اکثر مجموعههای رمزنگاری سرور به استفاده از یک گواهی نیاز دارند و برخی به گواهی با نوع کلید عمومی خاصی نیاز دارند. برای نمونه، مجموعههای رمزنگاری DSS به گواهی حاوی کلید DSS (DSA) نیاز دارند. در صورت عدم تعیین، فایل server.pem استفاده خواهد شد.
-cert2file- گواهی مورد استفاده برای servername.
-certformder|pem- قالب گواهی.
حالت
پیشفرض
pemاست. -ciphercipherlist- اصلاح
فهرست
رمزگذارهای
مورد
استفاده
سرور. این
گزینه
امکان
تغییر
فهرست
رمزگذارهای
سرور را
فراهم
میکند.
هنگامی که
کلاینت
فهرستی از
رمزگذارهای
پشتیبانیشده
را ارسال
میکند،
اولین
رمزگذار
کلاینت که
در فهرست
سرور نیز
وجود داشته
باشد
استفاده
میشود. از
آنجا که
کلاینت
ترتیب
اولویت را
مشخص
میکند،
ترتیب
فهرست
رمزگذار
سرور
بیتاثیر
است. See the
cipherscommand for more information. -contextid- تنظیم شناسه بستر (context ID) برای SSL. میتواند هر مقدار رشتهای دلخواهی باشد.
-crl_check,-crl_check_all- بررسی
اینکه
گواهی همتا
توسط CA
مربوطه
باطل نشده
باشد.
فایلهای CRL
به فایل
گواهی
پیوست
میشوند.
گزینه
-crl_check_allتمام CRLهای همه CAهای موجود در زنجیره را بررسی میکند. -crlf- تبدیل کاراکتر پایان خط ترمینال به CR+LF.
-dcertfile,-dkeyfile- مشخص کردن
گواهی و
کلید خصوصی
اضافی؛ این
موارد
همانند
گزینههای
-certو-keyرفتار میکنند با این تفاوت که در صورت عدم تعیین، پیشفرضی ندارند (هیچ گواهی یا کلید اضافی استفاده نمیشود). با استفاده از گواهیها و کلیدهای RSA و DSS، یک سرور میتواند با استفاده از گواهی مناسب از کلاینتهایی که تنها از مجموعههای رمزنگاری RSA یا DSS پشتیبانی میکنند پشتیبانی نماید. -dcertformder|pem,-dkeyformder|pem,-dpassarg- به ترتیب قالب گواهی و کلید خصوصی اضافی، و منبع گذرواژه کلید خصوصی.
-debug- چاپ اطلاعات گسترده اشکالزدایی، شامل تخلیه هگز (hex dump) تمام ترافیک شبکه.
-dhparamfile- فایل
پارامتر DH
مورد
استفاده.
مجموعههای
رمزنگاری
گذرا (ephemeral)
دیفی-هلمن
کلیدها را
با استفاده
از
مجموعهای
از
پارامترهای
DH تولید
میکنند. در
صورت عدم
تعیین،
تلاشی برای
بارگذاری
پارامترها
از فایل
گواهی سرور
انجام
میشود. اگر
این کار
شکست
بخورد،
مجموعهای
ایستا از
پارامترها
که در
برنامه
s_serverتعبیه شدهاند استفاده خواهد شد. -dtls- اجازه استفاده از هر نسخهای از DTLS.
-dtls1_2- اجازه استفاده تنها از نسخه ۱.۲ پروتکل DTLS.
-groupslist- تنظیم گروههای منحنی بیضوی پشتیبانیشده بر اساس list جداشده با دونقطه از NIDها یا نامهای گروه طبق آنچه در SSL_CTX_set1_groups_list(3) مستند شده است.
-HTTP- شبیهسازی یک وبسرور ساده. صفحات نسبت به دایرکتوری جاری آدرسدهی میشوند. برای نمونه اگر نشانی https://myhost/page.html درخواست شود، فایل ./page.html بارگذاری خواهد شد. فرض بر این است که فایلهای بارگذاریشده شامل یک پاسخ کامل و صحیح HTTP هستند (سطرهایی که بخشی از سطر پاسخ HTTP و هدرها هستند باید به CRLF ختم شوند).
-id_prefixarg- تولید شناسههای نشست SSL/TLS با پیشوند arg. این گزینه عمدتاً برای آزمایش کدهای SSL/TLS که با چندین سرور تعامل دارند کاربرد دارد، زمانی که هر سرور ممکن است محدوده یکتایی از شناسههای نشست را تولید کند.
-keykeyfile- کلید خصوصی مورد استفاده. در صورت عدم تعیین، از فایل گواهی استفاده خواهد شد.
-key2keyfile- کلید خصوصی مورد استفاده برای servername.
-keyformder|pem- The private key format. The default is
pem. -keymatexportlabel- استخراج دادههای کلیدی (keying material) با استفاده از برچسب.
-keymatexportlenlen- استخراج len بایت از دادههای کلیدی (پیشفرض ۲۰).
-msg- نمایش تمام پیامهای پروتکل همراه با تخلیه هگز.
-mtumtu- تنظیم MTU لایه پیوند.
-nacceptnum- خاتمه سرور پس از num اتصال.
-named_curvearg- مشخص کردن
نام منحنی
بیضوی برای
کلیدهای
گذرای ECDH. این
گزینه
منسوخ شده
است؛ به جای
آن از
-groupsاستفاده کنید. -nbio- فعالسازی ورودی/خروجی غیرمسدودکننده (non-blocking I/O).
-nbio_test- آزمایش ورودی/خروجی غیرمسدودکننده.
-no_cache- غیرفعال کردن کش نشست.
-no_dhe- غیرفعال کردن مجموعههای رمزنگاری گذرا (ephemeral) دیفی-هلمن.
-no_ecdhe- غیرفعال کردن مجموعههای رمزنگاری گذرای ECDH.
-no_ticket- غیرفعال کردن پشتیبانی از بلیت نشست RFC 4507.
-no_tls1_2|-no_tls1_3- به ترتیب غیرفعال کردن استفاده از TLS1.2 و TLS1.3.
-no_tmp_rsa- غیرفعال کردن تولید کلید موقت RSA.
-nocert- عدم استفاده از گواهی. این کار مجموعههای رمزنگاری در دسترس را به موارد ناشناس (در حال حاضر تنها DH ناشناس) محدود میکند.
-passarg- The private key password source.
-quiet- Inhibit printing of session and certificate information.
-servernamename- تنظیم افزونه Server Name Indication (SNI) با name.
-servername_fatal- ارسال هشدار مهلک (fatal alert) در صورت عدم تطابق servername. حالت پیشفرض هشدار اخطار (warning alert) است.
-serverpref- استفاده از اولویتهای رمزگذاری سرور.
-state- چاپ وضعیتهای نشست SSL.
-status- فعالسازی پشتیبانی از درخواست وضعیت گواهی (OCSP stapling).
-status_timeoutnsec- تنظیم مهلت زمانی پاسخ OCSP به ثانیه.
-status_urlurl- تنظیم یک آدرس URL پاسخدهنده پشتیبان در صورتی که هیچ نشانی پاسخدهندهای در گواهی سرور موجود نباشد. بدون این گزینه، اگر گواهی سرور شامل نشانی پاسخدهنده نباشد، خطایی بازگردانده میشود.
-status_verbose- فعالسازی پشتیبانی از درخواست وضعیت گواهی (OCSP stapling) و چاپ کامل پاسخ OCSP همراه با جزئیات.
-timeout- فعالسازی مهلت زمانی (timeout) ارسال/دریافت در اتصالات DTLS.
-tls1_2|-tls1_3- به ترتیب اجازه استفاده تنها از TLS1.2 یا TLS1.3.
-tlsextdebug- چاپ تخلیه هگز هرگونه افزونه TLS دریافتشده از سرور.
-use_srtpprofiles- پیشنهاد مدیریت کلید SRTP با فهرستی از پروفایلهای جداشده با دونقطه.
-verify_return_error- بازگرداندن خطای اعتبارسنجی.
-WWW- Emulate a simple web server. Pages are resolved relative to the current directory. For example if the URL https://myhost/page.html is requested, the file ./page.html will be loaded.
-www- ارسال پیام وضعیت به کلاینت هنگام اتصال، شامل اطلاعات درباره رمزگذارهای استفادهشده و پارامترهای مختلف نشست. خروجی در قالب HTML است بنابراین این گزینه معمولاً با یک مرورگر وب استفاده میشود.
-Verifydepth,-verifydepth- درخواست یک
زنجیره
گواهی از
کلاینت، با
حداکثر طول
depth. با
گزینه
-Verify-،کلاینت باید حتماً گواهی ارائه دهد در غیر این صورت خطا رخ میدهد؛ با گزینه-verify-،گواهی درخواست میشود اما کلاینت مجبور به ارسال آن نیست.
S_TIME
openssl s_time- [
-bugs] [-CAfilefile] [-CApathdirectory] [-certfile] [-ciphercipherlist] [-connecthost[:port]] [-keykeyfile] [-nbio] [-new] [-no_shutdown] [-reuse] [-timeseconds] [-verifydepth] [-wwwpage]
دستور
s_time یک
کلاینت
عمومی SSL/TLS را
پیادهسازی
میکند که
با استفاده
از SSL/TLS به یک
میزبان راه
دور متصل
میشود. این
ابزار
میتواند
صفحهای را
از سرور
درخواست
کند و زمان
انتقال
دادههای
مفید (payload) را در
اندازهگیریهای
زمانی خود
لحاظ نماید.
این دستور
تعداد
اتصالات در
یک بازه
زمانی
مشخص،
میزان
دادههای
منتقلشده
(در صورت
وجود) را
اندازهگیری
کرده و
میانگین
زمان
صرفشده
برای یک
اتصال را
محاسبه
میکند.
گزینهها به شرح زیر هستند:
-bugs- فعالسازی راهکارهای ترمیمی گوناگون برای پیادهسازیهای دارای باگ.
-CAfilefile- یک file حاوی گواهیهای معتمد جهت استفاده در احراز اصالت سرور و برای استفاده هنگام تلاش جهت ساخت زنجیره گواهی کلاینت.
-CApathdirectory- The directory to use for server certificate verification. This directory
must be in "hash format"; see
verifyfor more information. These are also used when building the client certificate chain. -certfile- گواهی مورد استفاده در صورتی که توسط سرور درخواست شود. حالت پیشفرض عدم استفاده از گواهی است.
-ciphercipherlist- Modify the cipher list sent by the client. Although the server determines
which cipher suite is used, it should take the first supported cipher in
the list sent by the client. See the
cipherscommand for more information. -connecthost[:port]- میزبان و پورت برای اتصال.
-keykeyfile- کلید خصوصی مورد استفاده. در صورت عدم تعیین، از فایل گواهی استفاده خواهد شد.
-nbio- فعالسازی ورودی/خروجی غیرمسدودکننده (non-blocking I/O).
-new- انجام
آزمون
زمانسنجی
با استفاده
از یک شناسه
نشست جدید
برای هر
اتصال. اگر
هیچیک از
گزینههای
-newو-reuseمشخص نشوند، هر دو به طور پیشفرض فعال بوده و به ترتیب اجرا میشوند. -no_shutdown- قطع اتصال بدون ارسال هشدار قطع اتصال "close notify" به سرور.
-reuse- انجام
آزمون
زمانسنجی
با استفاده
از همان
شناسه نشست
قبلی برای
هر اتصال.
اگر هیچیک
از
گزینههای
-newو-reuseمشخص نشوند، هر دو به طور پیشفرض فعال بوده و به ترتیب اجرا میشوند. -timeseconds- محدود کردن
بنچمارکهای
s_timeبه مدت seconds ثانیه. حالت پیشفرض ۳۰ ثانیه است. -verifydepth- فعالسازی اعتبارسنجی گواهی سرور، با حداکثر طول depth. در حال حاضر عملیات اعتبارسنجی پس از خطاها ادامه مییابد تا تمام مشکلات زنجیره گواهی قابل مشاهده باشد. به عنوان یک اثر جانبی، اتصال هرگز به دلیل شکست در اعتبارسنجی گواهی سرور متوقف نخواهد شد.
-wwwpage- صفحهای که
باید با متد
GET از سرور
دریافت شود.
مقدار ‘/’
صفحه index.htm[l] را
دریافت
میکند. اگر
این
پارامتر
مشخص نشود،
s_timeتنها دستتکانی (handshake) برقراری اتصالات SSL را انجام میدهد اما هیچ داده مفیدی (payload) را منتقل نخواهد کرد.
SESS_ID
openssl sess_id- [
-cert] [-contextID] [-infile] [-informder|pem] [-noout] [-outfile] [-outformder|pem] [-text]
برنامه
sess_id نسخه
کدگذاریشده
ساختار
نشست SSL را
پردازش
میکند و به
صورت
اختیاری
جزئیات
نشست SSL (برای
نمونه کلید
اصلی یا master key
نشست SSL) را در
قالبی
خوانا برای
انسان چاپ
میکند.
گزینهها به شرح زیر هستند:
-cert- اگر گواهی
در نشست
وجود داشته
باشد، با
این گزینه
به خروجی
ارسال
میشود؛
اگر گزینه
-textنیز درج شده باشد، در قالب متنی چاپ خواهد شد. -contextID- تنظیم شناسه نشست ID. شناسه میتواند هر رشتهای از کاراکترها باشد.
-infile- فایل ورودی برای خواندن، یا ورودی استاندارد در صورت عدم تعیین.
-informder|pem- قالب ورودی.
derاز قالب کدگذاریشده ASN.1 DER حاوی جزئیات نشست استفاده میکند. قالب دقیق میتواند از یک نسخه به نسخه دیگر متفاوت باشد.pemقالب پیشفرض است: شامل قالب DER کدگذاریشده با Base64 همراه با خطوط هدر و فوتر اضافی است. -noout- از خروجی دادن نسخه کدگذاریشده نشست خودداری میکند.
-outfile- فایل خروجی برای نوشتن، یا خروجی استاندارد در صورت عدم تعیین.
-outformder|pem- قالب خروجی.
-text- علاوه بر نسخه کدگذاریشده، اجزای مختلف کلید عمومی یا خصوصی را در قالب متن آشکار چاپ میکند.
خروجی
sess_id به
صورت زیر
تشکیل شده
است:
- Protocol
- پروتکل در حال استفاده.
- Cipher
- کد خام رمزگذار واقعی SSL یا TLS.
- Session-ID
- شناسه نشست SSL در قالب هگز.
- Session-ID-ctx
- بستر شناسه نشست در قالب هگز.
- Master-Key
- کلید اصلی (master key) نشست SSL.
- Key-Arg
- آرگومان کلید؛ تنها در SSL v2 کاربرد دارد.
- Start Time
- زمان شروع نشست در قالب UNIX.
- Timeout
- مهلت زمانی به ثانیه.
- Verify return code
- کد بازگشتی هنگام اعتبارسنجی گواهی.
از آنجا که خروجی نشست SSL شامل کلید اصلی است، خواندن محتوای یک نشست رمزگذاریشده با استفاده از این اطلاعات امکانپذیر است. بنابراین در صورتی که این اطلاعات توسط یک برنامه "واقعی" خروجی داده میشود باید تدابیر امنیتی مناسب اتخاذ گردد. با این حال، این کار اکیداً منع میشود و تنها باید برای اهداف اشکالزدایی استفاده شود.
SMIME
openssl smime- [
-aes128|-aes192|-aes256|-des|-des3|-rc2-40|-rc2-64|-rc2-128] [-binary] [-CAfilefile] [-CApathdirectory] [-certfilefile] [-check_ss_sig] [-contentfile] [-crl_check] [-crl_check_all] [-decrypt] [-encrypt] [-extended_crl] [-fromaddr] [-ignore_critical] [-infile] [-indef] [-informder|pem|smime] [-inkeyfile] [-issuer_checks] [-keyformder|pem] [-mddigest] [-noattr] [-nocerts] [-nochain] [-nodetach] [-noindef] [-nointern] [-nosigs] [-nosmimecap] [-noverify] [-outfile] [-outformder|pem|smime] [-passinarg] [-pk7out] [-policy_check] [-recipfile] [-resign] [-sign] [-signerfile] [-stream] [-subjects] [-text] [-toaddr] [-verify] [-x509_strict] [cert.pem ...]
دستور
smime
نامههای S/MIME
را مدیریت
میکند. این
ابزار
میتواند
پیامهای S/MIME
را
رمزگذاری،
رمزگشایی،
امضا و
اعتبارسنجی
کند.
پیام MIME باید بدون هیچ خط خالی میان هدرها و خروجی ارسال شود. برخی برنامههای پستی به طور خودکار یک خط خالی اضافه میکنند. ارسال مستقیم نامه از طریق پایپ به یک MTA یکی از راههای دستیابی به قالب صحیح است.
پیام
ارائهشده
برای امضا
یا
رمزگذاری
باید شامل
هدرهای
لازم MIME
باشد، در
غیر این
صورت
بسیاری از
کلاینتهای
S/MIME آن را به
درستی
نمایش
نخواهند
داد (یا
اصلاً
نمایش
نمیدهند).
از گزینه
-text برای
افزودن
خودکار
هدرهای متن
ساده
استفاده
کنید.
یک پیام "امضا و رمزگذاریشده" پیامی است که ابتدا امضا شده و سپس رمزگذاری میگردد. این کار را میتوان با رمزگذاری پیامی که قبلاً امضا شده است انجام داد.
تعدادی از عملیات قابل انجام به شرح زیر هستند:
-decrypt- رمزگشایی ایمیل با استفاده از گواهی و کلید خصوصی ارائهشده. فایل ورودی یک پیام ایمیل رمزگذاریشده در قالب MIME است. ایمیل رمزگشاییشده در فایل خروجی نوشته میشود.
-encrypt- رمزگذاری ایمیل برای گواهیهای گیرنده ارائهشده. ورودی پیامی است که باید رمزگذاری شود. فایل خروجی ایمیل رمزگذاریشده در قالب MIME است.
-pk7out- دریافت یک پیام ورودی و نوشتن ساختار PKCS#7 با کدگذاری PEM در خروجی.
-resign- امضای مجدد پیام: دریافت یک پیام موجود و یک یا چند امضاکننده جدید.
-sign- امضای ایمیل با استفاده از گواهی و کلید خصوصی ارائهشده. فایل ورودی پیامی است که باید امضا شود. پیام امضاشده در قالب MIME در فایل خروجی نوشته میشود.
-verify- اعتبارسنجی ایمیل امضاشده. ورودی یک پیام ایمیل امضاشده و خروجی دادههای امضاشده است. هر دو امضای متن آشکار و امضای مات پشتیبانی میشوند.
سایر گزینهها به شرح زیر هستند:
-aes128|-aes192|-aes256|-des|-des3|-rc2-40|-rc2-64|-rc2-128- الگوریتم
رمزگذاری
مورد
استفاده. به
ترتیب
الگوریتمهای
AES با طول
۱۲۸، ۱۹۲ یا
۲۵۶ بیت، DES
(۵۶ بیت)، Triple DES
(۱۶۸ بیت)،
یا RC2 با طول
۴۰، ۶۴ یا
۱۲۸ بیت؛ در
صورت عدم
تعیین، AES با
طول ۲۵۶ بیت
استفاده
میشود.
تنها با
گزینه
-encryptاستفاده میشود. -binary- به طور معمول، پیام ورودی به قالب "استاندارد (canonical)" که از CR/LF به عنوان پایان خط طبق الزامات S/MIME استفاده میکند تبدیل میشود. در صورت وجود این گزینه، هیچ تبدیلی رخ نمیدهد. این گزینه هنگام پردازش دادههای دودویی که ممکن است در قالب MIME نباشند مفید است.
-CAfilefile- یک file
حاوی
گواهیهای
معتمد CA؛
تنها همراه
با
-verifyاستفاده میشود. -CApathdirectory- یک directory
حاوی
گواهیهای
معتمد CA؛
تنها همراه
با
-verifyاستفاده میشود. این پوشه باید یک پوشه استاندارد گواهی باشد: بدین معنا که هشی از هر نام موضوع (با استفاده ازx509 -hash) باید به هر گواهی پیوند داده شده باشد. - cert.pem ...
- یک یا چند گواهی از گیرندگان پیام: هنگام رمزگذاری یک پیام استفاده میشود.
-certfilefile- امکان تعیین گواهیهای اضافی را فراهم میکند. هنگام امضا، این گواهیها همراه با پیام درج میشوند. هنگام اعتبارسنجی، این گواهیها برای یافتن گواهیهای امضاکنندگان جستجو میشوند. گواهیها باید در قالب PEM باشند.
-check_ss_sig,-crl_check,-crl_check_all,-extended_crl,-ignore_critical,-issuer_checks,-policy_check,-x509_strict- تنظیم
گزینههای
گوناگون
اعتبارسنجی
زنجیره
گواهی. برای
جزئیات به
دستور
verifyمراجعه کنید. -contentfile- فایلی حاوی
محتوای
جداشده. این
گزینه تنها
همراه با
گزینه
-verifyمفید است، و تنها زمانی قابل استفاده است که ساختار PKCS#7 از فرم امضای جداشده استفاده کند که در آن محتوا درج نشده است. اگر قالب ورودی S/MIME باشد و از نوع MIME multipart/signed استفاده کند، این گزینه هر محتوایی را بازنویسی خواهد کرد. -fromaddr,-subjects,-toaddr- سرایندهای مرتبط با ایمیل. این سرایندها در خارج از بخش امضاشده پیام قرار میگیرند بنابراین میتوان آنها را به صورت دستی درج کرد. هنگام امضا، بسیاری از کلاینتهای ایمیل S/MIME بررسی میکنند که نشانی ایمیل گواهی امضاکننده با نشانی From: مطابقت داشته باشد.
-infile- فایل ورودی برای خواندن از آن.
-indef- فعالسازی ورودی/خروجی جریانی برای عملیات کدگذاری. این کار امکان پردازش تکگذره دادهها را بدون نیاز به نگهداری کل محتوا در حافظه فراهم کرده و از فایلهای بسیار حجیم پشتیبانی میکند. حالت جریانی برای امضای S/MIME با دادههای جداشده در صورتی که قالب خروجی SMIME باشد به طور خودکار فعال است؛ در حال حاضر برای تمام عملیات دیگر به طور پیشفرض خاموش است.
-informder|pem|smime- قالب ورودی.
-inkeyfile- کلید خصوصی
مورد
استفاده
هنگام امضا
یا
رمزگشایی،
که باید با
گواهی
مربوطه
مطابقت
داشته باشد.
اگر این
گزینه مشخص
نشود، کلید
خصوصی باید
در فایل
گواهی
تعیینشده
با گزینه
-recipیا-signerگنجانده شده باشد. هنگام امضا، این گزینه میتواند چندین بار برای تعیین کلیدهای متوالی استفاده شود. -keyformder|pem- قالب کلید
خصوصی
ورودی. حالت
پیشفرض
pemاست. -mddigest- الگوریتم خلاصه پیام مورد استفاده هنگام امضا یا امضای مجدد. اگر وجود نداشته باشد، از الگوریتم پیشفرض خلاصه پیام برای کلید امضا استفاده میشود (معمولاً SHA1).
-noattr- ویژگیها را درج نمیکند.
-nocerts- گواهی
امضاکننده
را درج
نمیکند.
این کار
اندازه
پیام
امضاشده را
کاهش
میدهد اما
اعتبارسنج
باید یک
نسخه از
گواهی
امضاکننده
را به صورت
محلی در
دسترس
داشته باشد
(برای نمونه
با گزینه
-certfileارائه شده باشد). -nochain- اعتبارسنجی زنجیرهای گواهیهای امضاکنندگان را انجام نمیدهد: بدین معنا که از گواهیهای موجود در پیام امضاشده به عنوان CAهای غیرمعتمد استفاده نمیکند.
-nodetach- هنگام امضای پیام، از امضای مات (opaque) استفاده میکند: این فرمت در برابر دستکاری توسط رلههای پستی مقاومتر است اما توسط کلاینتهایی که از S/MIME پشتیبانی نمیکنند خوانده نمیشود. بدون این گزینه، امضای متن آشکار با نوع MIME multipart/signed استفاده میشود.
-noindef- غیرفعال کردن ورودی/خروجی جریانی در مواردی که منجر به کدگذاری با طول نامعین شود (در حال حاضر تاثیری ندارد).
-nointern- تنها از
گواهیهای
مشخصشده
در
-certfileاستفاده میکند. گواهیهای ارائهشده همچنان میتوانند به عنوان CAهای غیرمعتمد به کار روند. -nosigs- تلاشی برای اعتبارسنجی امضاهای روی پیام انجام نمیدهد.
-nosmimecap- فهرست الگوریتمهای پشتیبانیشده را از ویژگیهای امضاشده حذف میکند؛ سایر گزینهها مانند زمان امضا و نوع محتوا همچنان درج میشوند.
-noverify- گواهی امضاکننده یک پیام امضاشده را اعتبارسنجی نمیکند.
-outfile- فایل خروجی برای نوشتن در آن.
-outformder|pem|smime- قالب خروجی.
پیشفرض smime
است که
پیامی در
قالب S/MIME
مینویسد.
قالبهای
pemوderاین رفتار را تغییر میدهند تا به جای آن ساختارهای PKCS#7 با قالب PEM و DER نوشته شوند. این گزینه در حال حاضر تنها بر قالب خروجی ساختار PKCS#7 اثر میگذارد؛ اگر ساختار PKCS#7 در خروجی نباشد (برای نمونه با-verifyیا-decrypt) این گزینه تاثیری ندارد. -passinarg- منبع گذرواژه کلید.
-recipfile- گواهی گیرنده هنگام رمزگشایی پیام. این گواهی باید با یکی از گیرندگان پیام مطابقت داشته باشد در غیر این صورت خطا رخ میدهد.
-signerfile- گواهی امضاکننده هنگام امضا یا امضای مجدد پیام؛ اگر بیش از یک امضاکننده لازم باشد، این گزینه میتواند چندین بار استفاده شود. اگر پیامی در حال اعتبارسنجی باشد، گواهیهای امضاکننده در صورت موفقیت اعتبارسنجی در این فایل نوشته خواهند شد.
-stream- مشابه
-indef. -text- افزودن هدرهای MIME متن ساده (text/plain) به پیام ارائهشده در صورت رمزگذاری یا امضا. در صورت رمزگشایی یا اعتبارسنجی، هدرهای متنی را حذف میکند: اگر پیام رمزگشاییشده یا اعتبارسنجیشده از نوع MIME text/plain نباشد، خطایی رخ میدهد.
کدهای
خروج برای
smime به شرح
زیر هستند:
- 0
- عملیات کاملاً موفقیتآمیز بود.
- 1
- خطایی هنگام تجزیه گزینههای دستور رخ داد.
- 2
- یکی از فایلهای ورودی قابل خواندن نبود.
- 3
- خطایی هنگام ایجاد فایل یا خواندن پیام رخ داد.
- 4
- خطایی هنگام رمزگشایی یا اعتبارسنجی پیام رخ داد.
- 5
- خطایی هنگام نوشتن گواهیها رخ داد.
SPEED
openssl speed- [algorithm] [
-decrypt] [-elapsed] [-evpalgorithm] [-mr] [-multinumber] [-unalignednumber]
دستور
speed برای
سنجش
کارایی و
سرعت
الگوریتمهای
رمزنگاری
استفاده
میشود.
- algorithm
- انجام آزمون با استفاده از الگوریتم algorithm. حالت پیشفرض آزمودن تمامی الگوریتمها است.
-decrypt- زمانسنجی
رمزگشایی
به جای
رمزگذاری؛
باید همراه
با
-evpاستفاده شود. -elapsed- اندازهگیری زمان بر حسب زمان واقعی (real time) به جای زمان پردازنده (CPU time).
-evpalgorithm- انجام آزمون با استفاده از یکی از الگوریتمهای پذیرفتهشده توسط EVP_get_cipherbyname(3).
-mr- تولید خروجی قابل خواندن توسط ماشین (machine-readable).
-multinumber- اجرای number بنچمارک به صورت موازی.
-unalignednumber- استفاده از بافرهای تخصیصیافته با آفست number بایت از تراز ارائهشده توسط malloc(3). پارامتر number باید عددی بین ۰ تا ۱۶ باشد.
TS
openssl ts-query[-md4|-md5|-ripemd160|-sha1] [-cert] [-configconfigfile] [-datafile_to_hash] [-digestdigest_bytes] [-inrequest.tsq] [-no_nonce] [-outrequest.tsq] [-policyobject_id] [-text]openssl ts-reply[-chaincerts_file.pem] [-configconfigfile] [-inresponse.tsr] [-inkeyprivate.pem] [-outresponse.tsr] [-passinarg] [-policyobject_id] [-queryfilerequest.tsq] [-sectiontsa_section] [-signertsa_cert.pem] [-text] [-token_in] [-token_out]openssl ts-verify[-CAfiletrusted_certs.pem] [-CApathtrusted_cert_path] [-datafile_to_hash] [-digestdigest_bytes] [-inresponse.tsr] [-queryfilerequest.tsq] [-token_in] [-untrustedcert_file.pem]
دستور
ts یک
برنامه
کلاینت و
سرور پایه
برای مرجع
برچسبگذاری
زمانی یا Time Stamping
Authority (TSA) طبق
استاندارد RFC
3161 (پروتکل
برچسب
زمانی یا TSP)
است. یک TSA
میتواند
بخشی از
استقرار یک
زیرساخت
کلید عمومی
(PKI) باشد و نقش
آن ارائه
اثبات
بلندمدت
برای وجود
دادههای
مشخص است.
شرح مختصری
از این
پروتکل به
قرار زیر
است:
- کلاینت TSA یک مقدار هش یکطرفه برای فایل داده محاسبه کرده و هش را به TSA ارسال میکند.
- مرجع TSA تاریخ و زمان جاری را به مقدار هش دریافتشده ضمیمه کرده، آنها را امضا میکند و توکن برچسب زمانی را به کلاینت بازمیگرداند. با ایجاد این توکن، TSA وجود فایل داده اصلی را در زمان تولید پاسخ گواهی میکند.
- کلاینت TSA توکن برچسب زمانی را دریافت کرده و امضای روی آن را اعتبارسنجی میکند. همچنین بررسی میکند که آیا توکن شامل همان مقدار هشی است که به TSA فرستاده بود یا خیر.
یک واحد
داده
پروتکل (PDU)
کدگذاریشده
با DER برای
انتقال
درخواست
برچسب
زمانی به TSA و
یکی برای
ارسال پاسخ
برچسب
زمانی به
کلاینت
تعریف شده
است. دستور
ts سه
عملکرد
اصلی دارد:
ایجاد
درخواست
برچسب
زمانی بر
اساس یک
فایل داده؛
ایجاد پاسخ
برچسب
زمانی بر
اساس یک
درخواست؛ و
اعتبارسنجی
این که آیا
پاسخ
متناظر با
یک درخواست
خاص یا فایل
داده است یا
خیر.
هنوز هیچ پشتیبانی برای ارسال خودکار درخواستها/پاسخها از طریق HTTP یا TCP مطابق پیشنهاد RFC 3161 وجود ندارد. کاربران باید درخواستها را از طریق FTP یا ایمیل ارسال کنند.
سوئیچ
-query
میتواند
برای ایجاد
و چاپ
درخواست
برچسب
زمانی
همراه با
گزینههای
زیر
استفاده
شود:
-cert- انتظار از TSA برای گنجاندن گواهی امضای خود در پاسخ.
-configconfigfile- مشخص کردن فایل پیکربندی جایگزین. تنها بخش OID استفاده میشود.
-datafile_to_hash- فایل دادهای که درخواست برچسب زمانی باید برای آن ایجاد شود. پیشفرض ورودی استاندارد است.
-digestdigest_bytes- تعیین صریح اثر پیام (imprint) بدون فایل داده. اثر پیام باید در قالب هگزادسیمال، دو کاراکتر برای هر بایت، با امکان جداسازی بایتها با دونقطه مشخص شود. تعداد بایتها باید با الگوریتم خلاصه پیام مورد استفاده مطابقت داشته باشد.
-inrequest.tsq- یک درخواست برچسب زمانی که قبلاً در قالب DER ایجاد شده و در فایل خروجی چاپ خواهد شد. برای بررسی محتوای یک درخواست در قالب خوانا برای انسان کاربرد دارد.
-md4|-md5|-ripemd160|-sha|-sha1- الگوریتم
خلاصه پیام
برای اعمال
بر روی فایل
داده. از
تمام
الگوریتمهای
خلاصه پیام
پشتیبانیشده
توسط دستور
dgstپشتیبانی میکند. پیشفرض SHA1 است. -no_nonce- عدم درج نانس (nonce) در درخواست. درج یک نانس شبهتصادفی ۶۴ بیتی (پیشفرض) برای محافظت در برابر حملات تکرار (replay attacks) توصیه میشود.
-outrequest.tsq- فایل خروجی برای نوشتن، یا خروجی استاندارد در صورت عدم تعیین.
-policyobject_id- خطمشی (policy) مورد انتظار کلاینت از TSA برای ایجاد توکن برچسب زمانی. میتوان از نمادگذاری نقطهای OID یا نامهای OID تعریفشده در فایل پیکربندی استفاده کرد. اگر خطمشی درخواست نشود، TSA از خطمشی پیشفرض خود استفاده میکند.
-text- خروجی در قالب متنی خوانا به جای DER.
یک پاسخ
برچسب
زمانی (TimeStampResp)
شامل وضعیت
پاسخ و خود
توکن برچسب
زمانی (ContentInfo)
است، البته
اگر تولید
توکن
موفقیتآمیز
بوده باشد.
دستور -reply
برای ایجاد
یک پاسخ
برچسب
زمانی یا
توکن برچسب
زمانی بر
اساس یک
درخواست و
چاپ
پاسخ/توکن
در قالب
خوانا برای
انسان است.
اگر -token_out
مشخص نشده
باشد،
خروجی
همواره
پاسخ برچسب
زمانی (TimeStampResp)
است، در غیر
این صورت یک
توکن برچسب
زمانی (ContentInfo)
خواهد بود.
-chaincerts_file.pem- مجموعهای
از
گواهیهای
PEM که در صورت
استفاده از
گزینه
-certبرای درخواست، علاوه بر گواهی امضاکننده در پاسخ درج خواهند شد. این فایل باید شامل زنجیره گواهی برای گواهی امضاکننده از صادرکننده آن به بالا باشد. دستور-replyزنجیره گواهی را به صورت خودکار نمیسازد. -configconfigfile- مشخص کردن فایل پیکربندی جایگزین.
-inresponse.tsr- مشخص کردن
پاسخ برچسب
زمانی
قبلاً
ایجادشده
(یا توکن
برچسب
زمانی، اگر
-token_inنیز مشخص شده باشد) در قالب DER که در فایل خروجی نوشته خواهد شد. این گزینه نیازی به درخواست ندارد؛ برای نمونه جهت بررسی محتوای یک پاسخ یا توکن یا استخراج توکن برچسب زمانی از یک پاسخ کاربرد دارد. اگر ورودی یک توکن و خروجی یک پاسخ برچسب زمانی باشد، اطلاعات وضعیت پیشفرض "اعطاشده (granted)" به توکن اضافه میشود. -inkeyprivate.pem- کلید خصوصی
امضاکننده
TSA در قالب PEM.
گزینه فایل
پیکربندی
signer_keyرا بازنویسی میکند. -outresponse.tsr- پاسخ در این
فایل نوشته
میشود.
قالب و
محتوای
فایل به
سایر
گزینهها
بستگی دارد
(به
-textو-token_outمراجعه کنید). حالت پیشفرض خروجی استاندارد است. -passinarg- منبع گذرواژه کلید.
-policyobject_id- خطمشی پیشفرض مورد استفاده برای پاسخ. میتوان از نمادگذاری نقطهای OID یا نامهای OID تعریفشده در فایل پیکربندی استفاده کرد. اگر خطمشی درخواست نشود، TSA از خطمشی پیشفرض خود استفاده میکند.
-queryfilerequest.tsq- فایل حاوی درخواست برچسب زمانی با کدگذاری DER.
-sectiontsa_section- بخش فایل پیکربندی حاوی تنظیمات مربوط به تولید پاسخ.
-signertsa_cert.pem- گواهی
امضاکننده
PEM مربوط به TSA.
گواهی
امضای TSA
باید
دقیقاً یک
کاربرد
کلید
توسعهیافته
به آن
اختصاص
داده شده
باشد: timeStamping.
همچنین این
کاربرد
کلید
توسعهیافته
باید حیاتی
(critical) باشد، در
غیر این
صورت گواهی
رد خواهد
شد. متغیر
signer_certدر فایل پیکربندی را بازنویسی میکند. -text- خروجی در قالب متنی خوانا به جای DER.
-token_in- ورودی یک توکن برچسب زمانی کدگذاریشده با DER (ContentInfo) است به جای پاسخ برچسب زمانی (TimeStampResp).
-token_out- خروجی یک توکن برچسب زمانی (ContentInfo) است به جای پاسخ برچسب زمانی (TimeStampResp).
دستور
-verify برای
بررسی و
اعتبارسنجی
این است که
آیا پاسخ یا
توکن برچسب
زمانی
معتبر بوده
و با یک
درخواست یا
فایل داده
خاص مطابقت
دارد یا خیر.
دستور -verify
از فایل
پیکربندی
استفاده
نمیکند.
-CAfiletrusted_certs.pem- فایل حاوی
مجموعهای
از
گواهیهای
معتمد
خودامضاشده
PEM برای CA. برای
جزئیات
بیشتر به
verifyمراجعه کنید. باید یا این گزینه یا-CApathمشخص شوند. -CApathtrusted_cert_path- پوشه حاوی
گواهیهای
معتمد CA
برای
کلاینت.
برای
جزئیات
بیشتر به
verifyمراجعه کنید. باید یا این گزینه یا-CAfileمشخص شوند. -datafile_to_hash- پاسخ یا
توکن باید
در برابر
file_to_hash
اعتبارسنجی
شود. فایل
با
الگوریتم
خلاصه پیام
مشخصشده
در توکن هش
میشود.
گزینههای
-digestو-queryfileنباید همراه با این گزینه مشخص شوند. -digestdigest_bytes- پاسخ یا
توکن باید
در برابر
خلاصه پیام
مشخصشده
با این
گزینه
اعتبارسنجی
شود. تعداد
بایتها
باید با
الگوریتم
خلاصه پیام
مشخصشده
در توکن
مطابقت
داشته باشد.
گزینههای
-dataو-queryfileنباید همراه با این گزینه مشخص شوند. -inresponse.tsr- پاسخ برچسب زمانی که باید اعتبارسنجی شود، در قالب DER. این گزینه اجباری است.
-queryfilerequest.tsq- درخواست
اصلی برچسب
زمانی در
قالب DER.
گزینههای
-dataو-digestنباید همراه با این گزینه مشخص شوند. -token_in- ورودی یک توکن برچسب زمانی با کدگذاری DER (ContentInfo) است به جای پاسخ برچسب زمانی (TimeStampResp).
-untrustedcert_file.pem- گواهیهای PEM غیرمعتمد اضافی که ممکن است هنگام ساخت زنجیره گواهی برای گواهی امضای TSA مورد نیاز باشند. این فایل باید شامل گواهی امضای TSA و تمام گواهیهای میانی CA باشد مگر اینکه پاسخ خود شامل آنها باشد.
گزینههای مشخصشده در خط فرمان همواره تنظیمات موجود در فایل پیکربندی را بازنویسی میکنند:
tsasection,default_tsa- این بخش
اصلی است و
نام بخش
دیگری را
مشخص
میکند که
شامل تمام
گزینههای
مربوط به
گزینه
-replyاست. این بخش را میتوان با سوئیچ خط فرمان-sectionبازنویسی کرد. oid_file- برای
توضیحات به
caمراجعه کنید. oid_section- برای
توضیحات به
caمراجعه کنید. serial- فایل حاوی شماره سریال هگزادسیمال مربوط به آخرین پاسخ برچسب زمانی ایجادشده. این عدد برای هر پاسخ ۱ واحد افزایش مییابد. اگر این فایل در زمان تولید پاسخ وجود نداشته باشد، یک فایل جدید با شماره سریال ۱ ایجاد میشود. این پارامتر اجباری است.
signer_cert- گواهی
امضای TSA در
قالب PEM.
مشابه
گزینه خط
فرمان
-signer. certs- مجموعهای
از
گواهیهای
کدگذاریشده
با PEM که باید
در پاسخ
گنجانده
شوند. مشابه
گزینه خط
فرمان
-chain. signer_key- کلید خصوصی
TSA در قالب PEM.
مشابه
گزینه خط
فرمان
-inkey. default_policy- خطمشی
پیشفرض
مورد
استفاده
زمانی که
درخواست
هیچ خطمشی
خاصی را
الزامی
نکرده باشد.
مشابه
گزینه خط
فرمان
-policy. other_policies- فهرستی جداشده با کاما از خطمشیهایی که برای TSA نیز قابل قبول هستند و تنها در صورتی استفاده میشوند که درخواست صراحتاً یکی از آنها را مشخص کند.
digests- فهرست الگوریتمهای خلاصه پیام که TSA میپذیرد. حداقل یک الگوریتم باید مشخص شود. این پارامتر اجباری است.
accuracy- دقت منبع زمان TSA بر حسب ثانیه، میلیثانیه و میکروثانیه. برای نمونه secs:1, millisecs:500, microsecs:100. اگر هر یک از مولفهها وجود نداشته باشد، مقدار صفر برای آن فیلد در نظر گرفته میشود.
clock_precision_digits- حداکثر تعداد ارقام اعشار ثانیه که باید در فیلد زمان درج شوند. صفرهای پایانی باید از زمان حذف شوند، بنابراین ممکن است در عمل ارقام کمتری وجود داشته باشد یا اصلاً اعشار ثانیه نباشد. حداکثر مقدار ۶ است؛ پیشفرض ۰ است.
ordering- اگر این گزینه yes باشد، پاسخهای تولیدشده توسط این TSA همیشه قابل مرتبسازی هستند، حتی اگر اختلاف زمانی میان دو پاسخ کمتر از مجموع دقتهای آنها باشد. پیشفرض no است.
tsa_name- اگر نام موضوع TSA باید در فیلد نام TSA در پاسخ درج شود، این گزینه را بر روی yes تنظیم کنید. پیشفرض no است.
ess_cert_id_chain- اشیاء SignedData
ایجادشده
توسط TSA
همیشه شامل
شناسه
گواهیِ
گواهی
امضاکننده
در یک ویژگی
امضاشده
هستند (RFC 2634 را
ببینید).
اگر این
گزینه بر
روی yes تنظیم
شده باشد و
متغیر
certsیا گزینه-chainمشخص شده باشند، آنگاه شناسههای گواهی زنجیره نیز در ویژگی امضاشده SigningCertificate درج خواهند شد. اگر این متغیر بر روی no تنظیم شده باشد، تنها شناسه گواهی امضاکننده درج میشود. پیشفرض no است.
VERIFY
openssl verify- [
-CAfilefile] [-CApathdirectory] [-check_ss_sig] [-CRLfilefile] [-crl_check] [-crl_check_all] [-explicit_policy] [-extended_crl] [-help] [-ignore_critical] [-inhibit_any] [-inhibit_map] [-issuer_checks] [-legacy_verify] [-policy_check] [-purposepurpose] [-trustedfile] [-untrustedfile] [-verbose] [-x509_strict] [certificates]
دستور
verify
زنجیرههای
گواهی را
اعتبارسنجی
میکند.
گزینهها به شرح زیر هستند:
-CAfilefile- یک file از گواهیهای معتمد. این file باید شامل چندین گواهی در قالب PEM باشد که به یکدیگر الحاق شدهاند.
-CApathdirectory- یک directory از
گواهیهای
معتمد.
گواهیها
یا
پیوندهای
نمادین به
آنها باید
نامهایی
به فرم hash.0
داشته
باشند، که
در آن hash
نام موضوع
هششده
گواهی است
(گزینه
-hashاز ابزارx509را ببینید). -check_ss_sig- اعتبارسنجی امضا روی CA ریشه خودامضاشده. این گزینه به طور پیشفرض غیرفعال است زیرا امنیت بیشتری ایجاد نمیکند.
-CRLfilefile- فایل file باید شامل یک یا چند CRL در قالب PEM باشد.
-crl_check- بررسی اعتبار گواهی موجودیت نهایی با تلاش برای جستجوی یک CRL معتبر. اگر CRL معتبری یافت نشود، خطایی رخ میدهد.
-crl_check_all- بررسی اعتبار تمام گواهیهای موجود در زنجیره با تلاش برای یافتن CRLهای معتبر.
-explicit_policy- تنظیم متغیر خطمشی require-explicit-policy (طبق RFC 3280).
-extended_crl- فعالسازی ویژگیهای توسعهیافته CRL مانند CRLهای غیرمستقیم و کلیدهای امضای جایگزین CRL.
-help- چاپ پیام نحوه استفاده.
-ignore_critical- نادیده گرفتن افزونههای حیاتی به جای رد کردن گواهی.
-inhibit_any- تنظیم متغیر خطمشی inhibit-any-policy (طبق RFC 3280).
-inhibit_map- تنظیم متغیر خطمشی inhibit-policy-mapping (طبق RFC 3280).
-issuer_checks- چاپ اطلاعات تشخیصی مربوط به جستجوهای گواهی صادرکننده برای گواهی جاری که نشان میدهد چرا هر گواهی صادرکننده نامزد رد شده است. وجود پیامهای رد شدن لزوماً به این معنا نیست که مشکلی وجود دارد: در طول فرآیند عادی اعتبارسنجی ممکن است چندین مورد رد شدن رخ دهد.
-legacy_verify- استفاده از کد موروثی اعتبارسنجی زنجیره گواهی X.509.
-policy_check- فعالسازی پردازش خطمشی گواهی.
-purposepurpose- کاربرد
مورد نظر
برای گواهی.
بدون این
گزینه هیچ
اعتبارسنجی
زنجیرهای
انجام
نخواهد شد.
کاربردهای
پذیرفتهشده
فعلی
عبارتند از:
sslclient ، sslserver ،nssslserver ، smimesign ،smimeencrypt ، crlsign ،anyوocsphelper. -trustedfile- یک file از گواهیهای معتمد. این file باید شامل چندین گواهی باشد.
-untrustedfile- یک file از گواهیهای غیرمعتمد. این file باید شامل چندین گواهی باشد.
-verbose- چاپ اطلاعات بیشتر درباره عملیات در حال انجام.
-x509_strict- غیرفعال کردن راهکارهای ترمیمی برای گواهیهای خراب که جهت تطابق سختگیرانه با X.509 باید غیرفعال شوند.
- certificates
- یک یا چند certificates در قالب PEM برای اعتبارسنجی. اگر هیچ فایل گواهیای درج نشود، تلاشی برای خواندن یک گواهی از ورودی استاندارد انجام میشود. اگر نام فایل اولین گواهی با خط تیره آغاز شود، از یک خط تیره تنها برای نشانهگذاری آخرین گزینه استفاده کنید.
برنامه
verify از
همان
توابعی
استفاده
میکند که
در
اعتبارسنجی
داخلی SSL و S/MIME
به کار
میروند،
با یک تفاوت
اساسی: تا
جای ممکن
تلاشی برای
ادامه کار
پس از وقوع
خطا انجام
میشود، در
حالی که
معمولاً
عملیات
اعتبارسنجی
با اولین
خطا متوقف
میشود. این
کار اجازه
میدهد تا
تمام
مشکلات یک
زنجیره
گواهی مشخص
و شناسایی
شوند.
عملیات اعتبارسنجی شامل چندین مرحله جداگانه است. ابتدا یک زنجیره گواهی از گواهی ارائهشده آغاز شده و به CA ریشه ختم میشود. اگر نتوان کل زنجیره را ساخت، یک خطا رخ داده است. زنجیره با جستجوی گواهی صادرکننده برای گواهی جاری ساخته میشود. اگر گواهیای پیدا شود که صادرکننده خودش باشد، فرض میشود که CA ریشه است.
تمام
گواهیهایی
که نام
موضوع
آنها با
نام
صادرکننده
گواهی جاری
مطابقت
دارد، تحت
آزمونهای
بعدی قرار
میگیرند.
مولفههای
مربوط به
شناسه کلید
مرجع (authority key identifier) در
گواهی جاری
(در صورت
وجود) باید
با شناسه
کلید موضوع
(در صورت
وجود) و
صادرکننده
و شماره
سریال
صادرکننده
نامزد
مطابقت
داشته
باشند؛
علاوه بر
این،
افزونه
keyUsage در
صادرکننده
نامزد (در
صورت وجود)
باید اجازه
امضای
گواهی را
بدهد.
جستجو ابتدا در فهرست گواهیهای غیرمعتمد انجام میشود و اگر تطابقی یافت نشود، سایر جستجوها از میان گواهیهای معتمد صورت میگیرد. مرجع صدور گواهی ریشه (Root CA) همواره در فهرست گواهیهای معتمد جستجو میشود: اگر گواهی مورد اعتبارسنجی یک گواهی ریشه باشد، باید یک تطابق دقیق در فهرست معتمد پیدا شود.
عملیات
دوم بررسی
افزونههای
تمام
گواهیهای
غیرمعتمد
از نظر
سازگاری با
کاربرد
ارائهشده
است. اگر
گزینه -purpose
درج نشده
باشد، هیچ
بررسیای
انجام
نمیشود.
گواهی
ارائهشده
یا "برگ (leaf)"
باید
افزونههایی
سازگار با
کاربرد
ارائهشده
داشته باشد
و سایر
گواهیها
نیز باید
گواهیهای
معتبر CA
باشند.
افزونههای
دقیق مورد
نیاز با
جزئیات
بیشتر در
بخش X509 در
ادامه شرح
داده
شدهاند.
عملیات سوم بررسی تنظیمات اعتماد روی CA ریشه است. CA ریشه باید برای کاربرد ارائهشده معتمد باشد. گواهی بدون تنظیمات اعتماد برای همه کاربردها معتبر در نظر گرفته میشود.
عملیات
نهایی
بررسی
اعتبار
زمانی
زنجیره
گواهی است.
دوره
اعتبار در
برابر زمان
جاری سیستم
و
تاریخهای
notBefore و notAfter
در گواهی
بررسی
میشود.
امضاهای
گواهی نیز
در این
مرحله
بررسی
میشوند.
اگر تمام عملیات با موفقیت انجام شوند، گواهی معتبر شناخته میشود. اگر هر یک از عملیات شکست بخورد، گواهی معتبر نخواهد بود. هنگامی که عملیات اعتبارسنجی شکست میخورد، پیامهای خروجی ممکن است تا حدی مبهم باشند. فرم کلی پیام خطا به صورت زیر است:
server.pem: /C=AU/ST=Queensland/O=CryptSoft Pty Ltd/CN=Test CA (1024-bit) error 24 at 1 depth lookup:invalid CA certificate
سطر اول
شامل نام
گواهی در
حال
اعتبارسنجی
و به دنبال
آن نام
موضوع
گواهی است.
سطر دوم
شامل شماره
خطا
همانطور
که توسط
ثابتهای
X509_V_ERR_* در
فایل
<openssl/x509_vfy.h>
تعریف شده
است، پیام
خطای مرتبط
مستندشده
در
X509_STORE_CTX_get_error(3)
و عمق خطا
میباشد.
عمق (depth)،
شماره
گواهی در
حال
اعتبارسنجی
هنگام
شناسایی
مشکل است که
با صفر برای
خود گواهی
تحت
اعتبارسنجی
آغاز شده،
سپس ۱ برای CA
امضاکننده
گواهی و به
همین ترتیب
ادامه
مییابد.
نسخه (VERSION)
openssl version
[-abdfpv]
دستور
version برای
چاپ
اطلاعات
نسخه
درباره
openssl
استفاده
میشود.
گزینهها به شرح زیر هستند:
X509
openssl x509- [
-addrejectarg] [-addtrustarg] [-alias] [-CAfile] [-CAcreateserial] [-CAformder|pem] [-CAkeyfile] [-CAkeyformder|pem] [-CAserialfile] [-certoptoption] [-checkendarg] [-clrext] [-clrreject] [-clrtrust] [-dates] [-daysarg] [-email] [-enddate] [-extensionssection] [-extfilefile] [-fingerprint] [-force_pubkeykey] [-hash] [-infile] [-informder|net|pem] [-issuer] [-issuer_hash] [-issuer_hash_old] [-keyformder|pem] [-md5|-sha1] [-modulus] [-multivalue-rdn] [-nameoptoption] [-new] [-next_serial] [-noout] [-ocsp_uri] [-ocspid] [-outfile] [-outformder|net|pem] [-passinarg] [-pubkey] [-purpose] [-req] [-serial] [-set_issuername] [-set_serialn] [-set_subjectname] [-setaliasarg] [-signkeyfile] [-sigoptnm:v] [-startdate] [-subject] [-subject_hash] [-subject_hash_old] [-text] [-trustout] [-utf8] [-x509toreq]
دستور
x509 یک
ابزار
همهمنظوره
برای کار با
گواهیها
است.
میتوان از
آن برای
نمایش
اطلاعات
گواهی،
تبدیل
گواهیها
به
قالبهای
مختلف،
امضای
درخواستهای
گواهی به
عنوان یک "CA
کوچک" یا
ویرایش
تنظیمات
اعتماد
گواهی
استفاده
کرد.
موارد زیر گزینههای ورودی، خروجی و عمومی x509 هستند:
-infile- فایل ورودی
برای
خواندن، یا
ورودی
استاندارد
در صورت
مشخص نشدن.
این گزینه
نمیتواند
همراه با
-newاستفاده شود. -informder|net|pem- قالب ورودی.
به طور
معمول،
دستور
انتظار یک
گواهی X.509 را
دارد، اما
اگر
گزینههای
دیگری
مانند
-inیا-reqحاضر باشند، ممکن است این حالت تغییر کند. -md5|-sha1- خلاصه پیام
مورد
استفاده.
این بر روی
هر گزینه
امضا یا
نمایشی که
از یک خلاصه
پیام
استفاده
میکند اثر
میگذارد،
مانند
گزینههای
-fingerprint-،-signkeyو-CA. در صورت مشخص نشدن، از MD5 استفاده میشود. برای کلیدهای DSA همیشه از SHA1 استفاده میشود. -outfile- فایل خروجی برای نوشتن، یا خروجی استاندارد در صورتی که فایلی مشخص نشود.
-outformder|net|pem- قالب خروجی.
-passinarg- منبع گذرواژه کلید.
موارد زیر گزینههای نمایش x509 هستند:
-certoptoption- سفارشیسازی
قالب خروجی
مورد
استفاده با
-text-،خواه با استفاده از فهرستی از گزینههای جداشده با کاما یا با مشخص کردن چندباره-certopt. رفتار پیشفرض چاپ تمامی فیلدها است. گزینهها به شرح زیر هستند:ca_default- معادل
no_issuer ، no_pubkey ، no_header ،no_version ، no_sigdumpوno_signame. compatible- معادل عدم استفاده از هیچ گزینه خروجی.
ext_default- چاپ افزونههای پشتیبانینشده گواهی.
ext_dump- دامپ هگزادسیمال افزونههای پشتیبانینشده.
ext_error- چاپ پیام خطا برای افزونههای پشتیبانینشده گواهی.
ext_parse- تجزیه ASN.1 افزونههای پشتیبانینشده.
no_aux- عدم چاپ اطلاعات اعتماد گواهی.
no_extensions- عدم چاپ افزونههای X509V3.
no_header- عدم چاپ اطلاعات سرایند (Certificate و Data).
no_issuer- عدم چاپ نام صادرکننده.
no_pubkey- عدم چاپ کلید عمومی.
no_serial- عدم چاپ شماره سریال.
no_sigdump- عدم ارائه دامپ هگزادسیمال از امضای گواهی.
no_signame- عدم چاپ الگوریتم امضای استفادهشده.
no_subject- عدم چاپ نام موضوع (subject).
no_validity- عدم چاپ
فیلدهای
اعتبار
notBeforeوnotAfter. no_version- عدم چاپ شماره نسخه.
-dates- چاپ تاریخ شروع و انقضای یک گواهی.
-email- خروجی دادن نشانیهای ایمیل، در صورت وجود.
-enddate- چاپ تاریخ
انقضای
گواهی؛
یعنی تاریخ
notAfter. -fingerprint- چاپ خلاصه (digest) نسخه با کدگذاری DER از کل گواهی.
-hash- مترادفی
برای
-subject_hash. -issuer- چاپ نام صادرکننده (issuer).
-issuer_hash- چاپ هش نام صادرکننده گواهی.
-issuer_hash_old- چاپ هش نام
صادرکننده
گواهی با
استفاده از
الگوریتم
قدیمیتر
که توسط
نسخههای
opensslپیش از 1.0.0 استفاده میشد. -modulus- چاپ مقدار مدول (modulus) کلید عمومی موجود در گواهی.
-multivalue-rdn- این گزینه
موجب
میشود
آرگومان
-subjبا پشتیبانی کامل از RDNهای چندمقداری تفسیر شود، به عنوان مثال "/DC=org/DC=OpenSSL/DC=users/UID=123456+CN=John Doe". اگر-multivalue-rdnاستفاده نشود، مقدار UID روی "123456+CN=John Doe" تنظیم میشود. -nameoptoption- سفارشیسازی
نحوه نمایش
نامهای
موضوع یا
صادرکننده،
خواه با
استفاده از
فهرستی از
گزینههای
جداشده با
کاما یا با
مشخص کردن
چندباره
-nameopt. رفتار پیشفرض استفاده از قالبcompatاست. گزینهها که میتوان قبل از آنها خط تیره قرار داد تا غیرفعال شوند، به شرح زیر هستند:align- تراز کردن مقادیر فیلدها برای خروجی خواناتر. فقط همراه با sep_multiline قابل استفاده است.
compat- استفاده از قالب قدیمی، معادل مشخص نکردن هیچ گزینهای.
dn_rev- معکوس کردن فیلدهای DN، طبق الزامات RFC 2253. به عنوان یک اثر جانبی، ترتیب چندین AVA را نیز معکوس میکند.
dump_all- دامپ تمام فیلدها. هنگام استفاده با dump_der ، امکان تعیین بدون ابهام کدگذاری DER ساختار را فراهم میکند.
dump_der- هر فیلدی که نیاز به دامپ هگزادسیمال داشته باشد با استفاده از کدگذاری DER فیلد دامپ میشود. در غیر این صورت تنها بایتهای محتوا نمایش داده خواهند شد. هر دو گزینه از قالب RFC 2253 #XXXX... استفاده میکنند.
dump_nostr- دامپ انواع رشته غیر نویسهای (به عنوان مثال OCTET STRING)؛ معمولاً انواع رشتههای غیر نویسهای به گونهای نمایش داده میشوند که گویی هر بایت محتوا نشاندهنده یک نویسه منفرد است.
dump_unknown- دامپ هر
فیلدی که OID
آن توسط
opensslشناخته شده نیست. esc_2253- اسکیپ کردن نویسههای "ویژه" مورد نیاز RFC 2253 در یک فیلد، یعنی “ ,+"<>;”. علاوه بر این، ‘#’ در ابتدای رشته و نویسه فاصله در ابتدا یا انتهای یک رشته اسکیپ میشوند.
esc_ctrl- اسکیپ کردن نویسههای کنترلی؛ یعنی نویسههایی با مقادیر اسکی کمتر از 0x20 (فاصله) و نویسه حذف (0x7f). آنها با استفاده از نمادگذاری RFC 2253 \XX اسکیپ میشوند (که در آن XX دو رقم هگزادسیمال نشاندهنده مقدار نویسه هستند).
esc_msb- اسکیپ کردن نویسههایی با بیت پرارزش (MSB) تنظیمشده؛ یعنی با مقادیر اسکی بزرگتر از ۱۲۷.
multiline- قالب
چندخطی.
معادل
esc_ctrl ، esc_msb ، sep_multiline ،space_eq ، lnameوalign. no_type- تلاش نکردن برای تفسیر نویسههای چندبایتی. به این معنی که بایتهای محتوا صرفاً طوری دامپ میشوند که انگار یک بایت نمایانگر یک نویسه است. این گزینه برای اهداف عیبیابی مفید است اما منجر به خروجی نسبتاً عجیبی میشود.
nofname,sname,lname,oid- تغییر
نحوه
نمایش نام
فیلد:
nofnameفیلد را اصلاً نمایش نمیدهد؛snameاز شکل نام کوتاه استفاده میکند (برای مثال CN برایcommonName )؛lnameاز شکل طولانی استفاده میکند.oidشناسه OID را به شکل عددی نشان میدهد و برای اهداف تشخیصی مفید است. oneline- قالب
تکخطی که
خواناتر
از
RFC2253است. معادلesc_2253 ، esc_ctrl ، esc_msb ، utf8 ،dump_nostr ، dump_der ، use_quote ، sep_comma_plus_space ،space_eqوsname. RFC2253- نمایش
نامها
سازگار با RFC
2253. معادل
esc_2253 ، esc_ctrl ،esc_msb ، utf8 ، dump_nostr ، dump_unknown ،dump_der ، sep_comma_plus ، dn_revوsname. sep_comma_plus,sep_comma_plus_space,sep_semi_plus_space,sep_multiline- تعیین
جداکنندههای
فیلد:
نویسه اول
میان RDNها و
دومی میان
چندین AVA است
(استفاده
از چندین AVA
بسیار
نادر بوده
و توصیه
نمیشود).
گزینههایی
که به "space"
ختم
میشوند،
علاوه بر
این یک
فاصله پس
از
جداکننده
قرار
میدهند
تا
خواناتر
شود.
sep_multilineاز نویسه خط جدید برای جداکننده RDN و از یک ‘+’ به همراه فاصله برای جداکننده AVA استفاده میکند، و همچنین فیلدها را چهار نویسه تورفتگی میدهد. اگر هیچ جداکننده فیلدی مشخص نشده باشد،sep_comma_plus_spaceبه عنوان پیشفرض استفاده میشود. show_type- نمایش نوع رشته نویسهای ASN.1. نوع قبل از محتوای فیلد قرار میگیرد. برای مثال "BMPSTRING: Hello World".
space_eq- قرار دادن فاصله در اطراف نویسه ‘=’ که پس از نام فیلد میآید.
use_quote- اسکیپ کردن برخی نویسهها با قرار دادن کل رشته در نویسههای ‘"’. بدون این گزینه، تمام اسکیپ کردنها با نویسه ‘\’ انجام میشود.
utf8- ابتدا
تبدیل
تمام
رشتهها
به قالب UTF8،
طبق
الزامات RFC 2253.
در
ترمینالهای
سازگار با
UTF8، استفاده
از این
گزینه (و
تنظیم
نکردن
esc_msb) ممکن است منجر به نمایش صحیح نویسههای چندبایتی شود. معمولاً نویسههای چندبایتی بزرگتر از 0xff با استفاده از قالب \UXXXX برای ۱۶ بیتی و \WXXXXXXXX برای ۳۲ بیتی نشان داده میشوند، و هر رشته UTF8String ابتدا به شکل نویسهای خود تبدیل میشود.
-next_serial- چاپ شماره سریال بعدی.
-noout- خروجی ندادن نسخه کدگذاریشده درخواست.
-ocsp_uri- چاپ نشانیهای پاسخدهنده OCSP، در صورت وجود.
-ocspid- چاپ مقادیر هش OCSP برای نام موضوع و کلید عمومی.
-pubkey- چاپ کلید عمومی.
-serial- چاپ شماره سریال گواهی.
-sigoptnm:v- ارسال گزینهها به الگوریتم امضا در حین عملیات امضا یا صدور گواهی. نامها و مقادیر این گزینهها وابسته به الگوریتم هستند.
-startdate- چاپ تاریخ
شروع
گواهی؛
یعنی تاریخ
notBefore. -subject- چاپ نام موضوع (subject).
-subject_hash- چاپ هش نام
موضوع
گواهی. این
مقدار در
opensslبرای تشکیل یک شاخص استفاده میشود تا امکان جستجوی گواهیها در یک پوشه بر اساس نام موضوع فراهم شود. -subject_hash_old- چاپ هش نام
موضوع
گواهی با
استفاده از
الگوریتم
قدیمیتر
که توسط
نسخههای
opensslپیش از 1.0.0 استفاده میشد. -text- چاپ کامل گواهی در قالب متنی.
یک گواهی مورد اعتماد گواهیای است که چندین بخش اطلاعات اضافی به آن ضمیمه شده است، مانند کاربردهای مجاز و ممنوع گواهی و یک نام مستعار. هنگام اعتبارسنجی یک گواهی، حداقل یک گواهی باید مورد اعتماد باشد. به طور پیشفرض، یک گواهی معتمد باید به صورت محلی ذخیره شده و یک مرجع صدور ریشه (root CA) باشد. موارد زیر گزینههای تنظیمات اعتماد x509 هستند:
-addrejectarg- افزودن یک
کاربرد
ممنوع. همان
مقادیر
گزینه
-addtrustرا میپذیرد. -addtrustarg- افزودن یک
کاربرد
گواهی
معتمد. هر
نام شیئی
میتواند
در اینجا
استفاده
شود، اما در
حال حاضر
فقط
clientAuth(کاربرد کلاینت SSL)،serverAuth(کاربرد سرور SSL) وemailProtection(ایمیل S/MIME) استفاده میشوند. -alias- خروجی دادن نام مستعار گواهی.
-clrreject- پاک کردن تمام کاربردهای ممنوع یا ردشده گواهی.
-clrtrust- پاک کردن تمام کاربردهای مجاز یا معتمد گواهی.
-purpose- انجام
آزمونها
روی
افزونههای
گواهی. همان
کد هنگام
اعتبارسنجی
گواهیهای
غیرمعتمد
در
زنجیرهها
استفاده
میشود،
بنابراین
اگر یک
زنجیره
توسط کد
اعتبارسنجی
رد شود، این
بخش مفید
است.
پرچم CA در افزونه
basicConstraintsبرای تعیین این که آیا گواهی میتواند به عنوان یک CA استفاده شود یا خیر به کار میرود. اگر پرچم CA برابر با true باشد، یک CA است؛ اگر پرچم CA برابر با false باشد، CA نیست. همه CAها باید پرچم CA را روی true تنظیم کرده باشند.اگر افزونه
basicConstraintsغایب باشد، گواهی یک CA احتمالی در نظر گرفته میشود؛ سایر افزونهها با توجه به کاربرد مورد نظر گواهی بررسی میشوند. در این حالت یک هشدار داده میشود زیرا واقعاً نباید گواهی به عنوان یک CA در نظر گرفته شود. با این حال، برای دور زدن مشکل برخی نرمافزارهای معیوب، به آن اجازه داده میشود که یک CA باشد.اگر گواهی یک گواهی V1 باشد (و در نتیجه هیچ افزونهای نداشته باشد) و خودامضا باشد، فرض میشود که یک CA است اما باز هم یک هشدار داده میشود. این کار برای دور زدن مشکل ریشههای Verisign است که گواهیهای خودامضای V1 هستند.
اگر افزونه
keyUsageحاضر باشد، محدودیتهای بیشتری بر کاربردهای گواهی اعمال میشود. اگر افزونهkeyUsageحاضر باشد، گواهی CA باید بیتkeyCertSignرا تنظیم کرده باشد.افزونه کاربرد کلید گسترشیافته (extended key usage) محدودیتهای بیشتری را بر کاربردهای گواهی اعمال میکند. اگر این افزونه وجود داشته باشد، چه بحرانی باشد و چه نباشد، کلید تنها برای اهداف مشخصشده قابل استفاده است.
شرح کامل هر آزمون در زیر آورده شده است. توضیحات مربوط به
basicConstraintsوkeyUsageو گواهیهای V1 در بالا برای تمام گواهیهای CA اعمال میشود.- SSL Client
- افزونه extended key usage
باید غایب
باشد یا OID
احراز
هویت وب
کلاینت را
در بر گیرد.
keyUsageباید غایب باشد یا باید بیتdigitalSignatureآن تنظیم شده باشد. نوع گواهی Netscape باید غایب باشد یا بیت SSL client آن تنظیم شده باشد. - SSL Client CA
- افزونه extended key usage
باید غایب
باشد یا
شامل OID
احراز
هویت وب
کلاینت
باشد. نوع
گواهی Netscape
باید غایب
باشد یا
بیت SSL CA آن
تنظیم شده
باشد: این
مورد به
عنوان
راهکاری
برای زمان
غایب بودن
افزونه
basicConstraintsاستفاده میشود. - SSL Server
- افزونه extended key usage
باید غایب
باشد یا
شامل
احراز
هویت وب
سرور و/یا
یکی از OIDهای
SGC باشد.
keyUsageباید غایب باشد یا بیتdigitalSignature ،بیتkeyEnciphermentیا هر دو بیت آن تنظیم شده باشد. نوع گواهی Netscape باید غایب باشد یا بیت SSL server آن تنظیم شده باشد. - SSL Server CA
- افزونه extended key usage
باید غایب
باشد یا
شامل
احراز
هویت وب
سرور و/یا
یکی از OIDهای
SGC باشد. نوع
گواهی Netscape
باید غایب
باشد یا
بیت SSL CA آن
باید
تنظیم شده
باشد: این
به عنوان
یک راهکار
در صورت
عدم وجود
افزونه
basicConstraintsاستفاده میشود. - Netscape SSL Server
- برای
اتصال
کلاینتهای
Netscape SSL به یک
سرور SSL؛ در
صورت وجود
افزونه
keyUsage ،باید بیتkeyEnciphermentآن تنظیم شده باشد. این حالت همیشه معتبر نیست زیرا برخی از مجموعههای رمزنگاری از کلید برای امضای دیجیتال استفاده میکنند. در غیر این صورت همانند یک سرور معمولی SSL است. - Common S/MIME Client Tests
- افزونه extended key usage باید غایب باشد یا شامل OID حفاظت از ایمیل باشد. نوع گواهی Netscape باید غایب باشد یا باید بیت S/MIME آن تنظیم شده باشد. اگر بیت S/MIME در نوع گواهی Netscape تنظیم نشده باشد، بیت SSL client به عنوان جایگزین پذیرفته میشود اما یک هشدار نمایش داده میشود: این به این دلیل است که برخی از گواهیهای Verisign بیت S/MIME را تنظیم نمیکنند.
- S/MIME Signing
- علاوه بر
آزمونهای
متداول
کلاینت S/MIME،
در صورت
وجود
افزونه
keyUsage ،بیتdigitalSignatureباید تنظیم شده باشد. - S/MIME Encryption
- علاوه بر
آزمونهای
متداول S/MIME،
در صورت
وجود
افزونه
keyUsage ،بیتkeyEnciphermentباید تنظیم شده باشد. - S/MIME CA
- افزونه extended key usage
باید غایب
باشد یا
شامل OID
حفاظت از
ایمیل
باشد. نوع
گواهی Netscape
باید غایب
باشد یا
باید بیت S/MIME CA
آن تنظیم
شده باشد:
این مورد
به عنوان
راهکاری
برای
مواقع
غیبت
افزونه
basicConstraintsاستفاده میشود. - CRL Signing
- افزونه
keyUsageباید غایب باشد یا بیت امضای CRL آن تنظیم شده باشد. - CRL Signing CA
- آزمونهای
معمول CA
اعمال
میشوند،
به جز
اینکه
افزونه
basicConstraintsباید حضور داشته باشد.
-setaliasarg- تنظیم نام مستعار گواهی، که امکان ارجاع به گواهی با استفاده از یک نام مستعار مانند "Steve's Certificate" را فراهم میسازد.
-trustout- خروجی دادن یک گواهی معتمد (حالت پیشفرض در صورت تغییر هرگونه تنظیمات اعتماد). یک گواهی معمولی یا معتمد میتواند به عنوان ورودی داده شود، اما به طور پیشفرض یک گواهی معمولی در خروجی داده شده و هرگونه تنظیمات اعتماد کنار گذاشته میشود.
ابزار
x509
میتواند
برای امضای
گواهیها و
درخواستها
استفاده
شود:
بنابراین
میتواند
مانند یک CA
کوچک رفتار
کند. موارد
زیر
گزینههای
امضای x509
هستند:
-CAfile- گواهی CA
برای
استفاده در
امضا.
هنگامی که
این گزینه
حاضر باشد،
x509مانند یک CA کوچک رفتار میکند. فایل ورودی توسط CA با استفاده از این گزینه امضا میشود؛ یعنی نام صادرکننده آن بر روی نام موضوع CA تنظیم شده و با استفاده از کلید خصوصی CA به صورت دیجیتال امضا میشود.این گزینه معمولاً با گزینه
-reqترکیب میشود. بدون گزینه-req-،ورودی گواهیای است که باید خودامضا باشد. -CAcreateserial- ایجاد فایل شماره سریال CA در صورت عدم وجود آن به جای ایجاد خطا. فایل حاوی شماره سریال ‘02’ خواهد بود و گواهی در حال امضا شماره سریال ‘1’ را خواهد داشت.
-CAformder|pem- قالب فایل
گواهی CA.
پیشفرض
pemاست. -CAkeyfile- تنظیم کلید خصوصی CA برای امضای یک گواهی با آن. در غیر این صورت فرض میشود که کلید خصوصی CA در فایل گواهی CA موجود است.
-CAkeyformder|pem- قالب کلید
خصوصی CA.
پیشفرض
pemاست. -CAserialfile- استفاده از
شماره
سریال
موجود در
file برای
امضای یک
گواهی. فایل
باید شامل
یک سطر با
تعداد زوجی
از ارقام
هگزادسیمال
با شماره
سریال مورد
استفاده
باشد. پس از
هر بار
استفاده،
شماره
سریال
افزایش
یافته و
دوباره در
فایل نوشته
میشود.
نام فایل پیشفرض شامل نام پایه فایل گواهی CA با پسوند .srl است. برای مثال اگر فایل گواهی CA با نام mycacert.pem باشد، انتظار میرود فایلی با نام mycacert.srl پیدا کند.
-checkendarg- بررسی این که آیا گواهی در طول arg ثانیه آینده منقضی میشود یا خیر. در صورت انقضا با مقدار خروجی 1 خارج میشود؛ در غیر این صورت با مقدار 0 خارج میشود.
-clrext- حذف تمام
افزونهها
از یک
گواهی. این
گزینه
زمانی
استفاده
میشود که
یک گواهی از
روی گواهی
دیگری
ایجاد
میشود
(برای مثال
با
گزینههای
-signkeyیا-CA-).به طور معمول، تمام افزونهها حفظ میشوند. -daysarg- تعداد روزهایی که گواهی باید معتبر باشد. پیشفرض ۳۰ روز است.
-extensionssection- بخشی که افزونههای گواهی از آن اضافه میشوند. اگر این گزینه مشخص نشده باشد، افزونهها باید در بخش بدون نام (پیشفرض) موجود باشند یا بخش پیشفرض باید حاوی متغیری به نام "extensions" باشد که شامل نام بخش مورد استفاده است.
-extfilefile- فایل حاوی افزونههای گواهی برای استفاده. در صورت مشخص نشدن، هیچ افزونهای به گواهی اضافه نخواهد شد.
-force_pubkeykey- تنظیم کلید عمومی گواهی بر روی کلید عمومی موجود در key.
-keyformder|pem- قالب فایل
کلید
استفادهشده
در
گزینههای
-force_pubkeyو-signkey. -new- تولید یک
گواهی جدید
با استفاده
از موضوع
مشخصشده
توسط
-set_subjectو امضاشده توسط-signkey. اگر هیچ کلید عمومی با-force_pubkeyارائه نشود، گواهی حاصل خودامضا خواهد بود. این گزینه نمیتواند همراه با-inیا-reqاستفاده شود. -req- انتظار یک
درخواست
گواهی در
ورودی به
جای یک
گواهی. این
گزینه
نمیتواند
همراه با
-newاستفاده شود. -set_issuername- نام صادرکننده مورد استفاده. name باید به قالب /type0=value0/type1=value1/type2=... باشد؛ نویسهها را میتوان با ‘\’ (بکاسلش) اسکیپ کرد؛ هیچ فاصلهای نادیده گرفته نمیشود.
-set_serialn- شماره
سریال مورد
استفاده.
این گزینه
را میتوان
همراه با هر
یک از
گزینههای
-signkeyیا-CAاستفاده کرد. اگر همراه با گزینه-CAاستفاده شود، فایل شماره سریال (همانطور که توسط گزینههای-CAserialیا-CAcreateserialمشخص شده) استفاده نخواهد شد.شماره سریال میتواند دهدهی یا هگزادسیمال (در صورت پیشوند داشتن با ‘0x’) باشد. شماره سریالهای منفی نیز میتوانند مشخص شوند اما استفاده از آنها توصیه نمیشود.
-set_subjectname- نام موضوع مورد استفاده. name باید به قالب /type0=value0/type1=value1/type2=... باشد؛ نویسهها را میتوان با ‘\’ (بکاسلش) اسکیپ کرد؛ هیچ فاصلهای نادیده گرفته نمیشود.
-signkeyfile- خودامضا
کردن file
با استفاده
از کلید
خصوصی
ارائهشده.
اگر فایل ورودی یک گواهی باشد، نام صادرکننده را روی نام موضوع تنظیم میکند (یعنی آن را خودامضا میکند)، کلید عمومی را به مقدار ارائهشده تغییر میدهد، و تاریخهای شروع و پایان را تغییر میدهد. تاریخ شروع روی زمان کنونی تنظیم میشود و تاریخ پایان روی مقداری که توسط گزینه
-daysمشخص شده تنظیم میگردد. تمام افزونههای گواهی حفظ میشوند مگر اینکه گزینه-clrextارائه شده باشد.اگر ورودی یک درخواست گواهی باشد، یک گواهی خودامضا با استفاده از کلید خصوصی ارائهشده و با استفاده از نام موضوع موجود در درخواست ایجاد میشود.
-utf8- تفسیر مقادیر فیلدهای خواندهشده از ترمینال یا بهدستآمده از فایل پیکربندی به عنوان رشتههای UTF-8. به طور پیشفرض، آنها به عنوان ASCII تفسیر میشوند.
-x509toreq- تبدیل یک
گواهی به یک
درخواست
گواهی.
گزینه
-signkeyبرای ارسال کلید خصوصی مورد نیاز استفاده میشود.
قراردادهای متداول (COMMON NOTATION)
چندین دستور دارای نحو مشترکی هستند، همانطور که در ادامه به تفصیل آمده است.
آرگومانهای
گذرواژه،
که معمولاً
با استفاده
از -passin و
-passout برای
گذرواژههای
ورودی و
خروجی مشخص
میشوند،
امکان
دریافت
گذرواژهها
را از منابع
گوناگون
فراهم
میکنند. هر
دو گزینه یک
آرگومان
منفرد
میپذیرند
که در ادامه
شرح داده
شده است. اگر
هیچ
آرگومان
گذرواژهای
داده نشود و
به گذرواژه
نیاز باشد،
از کاربر
خواسته
میشود تا
آن را وارد
کند: این
مقدار
معمولاً از
ترمینال
فعلی و با
خاموش بودن
بازتاب
نویسهها (echo)
خوانده
میشود.
pass:password- گذرواژه واقعی password است. از آنجا که گذرواژه برای سایر ابزارها قابل رویت است، این شکل تنها در جاهایی باید استفاده شود که امنیت اهمیتی ندارد.
env:var- دریافت گذرواژه از متغیر محیطی var. از آنجا که محیط فرآیندهای دیگر قابل مشاهده است، این گزینه باید با احتیاط استفاده شود.
file:path- سطر اول
path
گذرواژه
است. اگر
همان
آرگومان
path به هر
دو گزینه
-passinو-passoutداده شود، سطر اول برای گذرواژه ورودی و سطر بعدی برای گذرواژه خروجی استفاده خواهد شد. path نیازی نیست که حتماً به یک فایل معمولی اشاره کند: برای مثال میتواند به یک دستگاه یا لوله نامگذاریشده (named pipe) اشاره داشته باشد. fd:number- خواندن گذرواژه از توصیفگر فایل (file descriptor) number. برای مثال میتوان از این قابلیت برای ارسال داده از طریق لوله استفاده کرد.
stdin- خواندن گذرواژه از ورودی استاندارد.
قالبهای
ورودی/خروجی،
که معمولاً
با استفاده
از -inform و
-outform مشخص
میشوند،
نشاندهنده
قالبی
هستند که
دادهها از
آن خوانده
یا در آن
نوشته
میشوند.
آرگومان
نسبت به
بزرگی و
کوچکی حروف
حساس نیست.
محیط (ENVIRONMENT)
متغیرهای
محیطی زیر
بر اجرای
openssl اثر
میگذارند:
OPENSSL_CONF- مکان فایل پیکربندی اصلی.
فایلها (FILES)
- /etc/ssl/
- پوشه
پیکربندی
پیشفرض
برای
openssl. - /etc/ssl/lib/
- استفادهنشده.
- /etc/ssl/private/
- پوشه کلید خصوصی پیشفرض.
- /etc/ssl/openssl.cnf
- فایل
پیکربندی
پیشفرض
برای
openssl. - /etc/ssl/x509v3.cnf
- فایل
پیکربندی
پیشفرض
برای
گواهیهای
x509.
همچنین ببینید (SEE ALSO)
acme-client(1), nc(1), openssl.cnf(5), x509v3.cnf(5), ssl(8), starttls(8)
استانداردها (STANDARDS)
T. Dierks and C. Allen, The TLS Protocol Version 1.0, RFC 2246, January 1999.
M. Wahl, S. Killie, and T. Howes, Lightweight Directory Access Protocol (v3): UTF-8 String Representation of Distinguished Names, RFC 2253, December 1997.
B. Kaliski, PKCS #7: Cryptographic Message Syntax Version 1.5, RFC 2315, March 1998.
R. Housley, W. Ford, W. Polk, and D. Solo, Internet X.509 Public Key Infrastructure Certificate and CRL Profile, RFC 2459, January 1999.
M. Myers, R. Ankney, A. Malpani, S. Galperin, and C. Adams, X.509 Internet Public Key Infrastructure Online Certificate Status Protocol – OCSP, RFC 2560, June 1999.
R. Housley, Cryptographic Message Syntax, RFC 2630, June 1999.
P. Chown, Advanced Encryption Standard (AES) Ciphersuites for Transport Layer Security (TLS), RFC 3268, June 2002.
| March 14, 2026 | Linux 6.12.107+deb13-amd64 |