.\" -*- mode: troff; coding: utf-8 -*- .\" Automatically generated by Pod::Man v6.0.2 (Pod::Simple 3.45) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie n \{\ . ds C` "" . ds C' "" 'br\} .el\{\ . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Required to disable full justification in groff 1.23.0. .if n .ds AD l .\" ======================================================================== .\" .IX Title "X509V3_CONFIG 5ssl" .TH X509V3_CONFIG 5ssl 2026-08-25 3.6.4 OpenSSL .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "نام (NAME)" x509v3_config \- قالب پیکربندی افزونه‌های گواهی X.509 V3 .SH "توضیحات (DESCRIPTION)" .IX Header "DESCRIPTION" چندین دستور OpenSSL می‌توانند بر اساس محتوای یک فایل پیکربندی و گزینه‌های خط فرمان (CLI) مانند .B \-addext افزونه‌هایی را به یک گواهی یا درخواست گواهی اضافه کنند. نحو فایل‌های پیکربندی در \fBconfig\fR\|(5) شرح داده شده است. این دستورات معمولاً گزینه‌ای برای مشخص کردن نام فایل پیکربندی و بخشی درون آن فایل دارند؛ برای جزئیات به مستندات دستور مربوطه مراجعه کنید. .PP این صفحه در صورت نیاز در مثال‌ها، از .B extensions به‌عنوان نام بخش استفاده می‌کند. .PP هر مدخل در بخش افزونه به شکل زیر است: .PP .Vb 1 \& name = [critical, ]value(s) .Ve .PP اگر .B critical وجود داشته باشد، افزونه به‌عنوان حیاتی (بحرانی) علامت‌گذاری خواهد شد. .PP اگر چندین مدخل برای نام افزونه یکسانی پردازش شوند، مدخل‌های بعدی جایگزین مدخل‌های قبلی با همان نام می‌شوند. .PP قالب .B values به مقدار .B name بستگی دارد؛ بسیاری از آن‌ها دارای یک جفت نوع\-مقدار هستند که در آن نوع و مقدار با دو‌نقطه از هم جدا می‌شوند. چهار نوع اصلی افزونه وجود دارد: .PP .Vb 4 \& string \& multi\-valued \& raw \& arbitrary .Ve .PP هر کدام در بندهای زیر شرح داده شده‌اند. .PP افزونه‌های رشته‌ای (string) صرفاً دارای یک رشته هستند که یا خود مقدار یا نحوه به‌دست آوردن آن را در بر دارد. .PP افزونه‌های چندمقداری (multi\-valued) دارای یک قالب کوتاه و یک قالب بلند هستند. قالب کوتاه فهرستی جداشده با کاما از نام‌ها و مقادیر است: .PP .Vb 1 \& basicConstraints = critical, CA:true, pathlen:1 .Ve .PP قالب بلند امکان قرار دادن مقادیر را در یک بخش مجزا فراهم می‌کند: .PP .Vb 2 \& [extensions] \& basicConstraints = critical, @basic_constraints \& \& [basic_constraints] \& CA = true \& pathlen = 1 .Ve .PP هر دو قالب معادل یکدیگر هستند. .PP اگر یک افزونه چندمقداری باشد و مقدار یک فیلد حاوی کاما باشد، باید از قالب بلند استفاده شود؛ در غیر این صورت کاما به‌اشتباه به‌عنوان جداکننده فیلد تفسیر خواهد شد. برای مثال: .PP .Vb 1 \& subjectAltName = URI:ldap://somehost.com/CN=foo,OU=bar .Ve .PP خطا ایجاد خواهد کرد، اما شکل معادل آن: .PP .Vb 2 \& [extensions] \& subjectAltName = @subject_alt_section \& \& [subject_alt_section] \& subjectAltName = URI:ldap://somehost.com/CN=foo,OU=bar .Ve .PP معتبر است. .PP نرم‌افزار OpenSSL از تکرار چندباره یک فیلد درون یک بخش پشتیبانی نمی‌کند. در این مثال: .PP .Vb 2 \& [extensions] \& subjectAltName = @alt_section \& \& [alt_section] \& email = steve@example.com \& email = steve@example.org .Ve .PP فقط آخرین مقدار شناسایی خواهد شد. برای مشخص کردن چندین مقدار، همان‌طور که در اینجا نشان داده شده است، یک شناسه عددی اضافه کنید: .PP .Vb 2 \& [extensions] \& subjectAltName = @alt_section \& \& [alt_section] \& email.1 = steve@example.com \& email.2 = steve@example.org .Ve .PP نحو افزونه‌های خام (raw) توسط کد منبعی که افزونه را تجزیه می‌کند تعریف می‌شود، اما باید مستندسازی شود. برای نمونه‌ای از یک افزونه خام، به «سیاست‌های گواهی» (Certificate Policies) مراجعه کنید. .PP اگر نوع افزونه‌ای پشتیبانی نشود، باید از نحو افزونه .I arbitrary (دلخواه) استفاده شود؛ برای جزئیات بیشتر به بخش «افزونه‌های دلخواه (ARBITRARY EXTENSIONS)» مراجعه کنید. .SH "افزونه‌های استاندارد (STANDARD EXTENSIONS)" .IX Header "STANDARD EXTENSIONS" بخش‌های زیر نحو هر یک از افزونه‌های پشتیبانی‌شده را شرح می‌دهند. این بخش‌ها معناشناسی (semantics) افزونه را تعریف نمی‌کنند. .SS "محدودیت‌های پایه (Basic Constraints)" .IX Subsection "Basic Constraints" این یک افزونه چندمقداری است که مشخص می‌کند آیا یک گواهی، گواهی مرجع صدور گواهی (CA) است یا خیر. مقدار نخست .B CA به همراه .B TRUE یا .B FALSE است. اگر .B CA برابر .B TRUE باشد، می‌توان نام اختیاری .B pathlen به همراه یک مقدار غیرمنفی را نیز گنجاند. .PP برای مثال: .PP .Vb 1 \& basicConstraints = CA:TRUE \& \& basicConstraints = CA:FALSE \& \& basicConstraints = critical, CA:TRUE, pathlen:1 .Ve .PP یک گواهی CA .I باید نام .B basicConstraints را همراه با پارامتر .B CA تنظیم‌شده روی .B TRUE داشته باشد. یک گواهی کاربر نهایی باید مقدار .B CA:FALSE داشته باشد یا این افزونه را به‌طور کامل حذف کند. پارامتر .B pathlen حداکثر تعداد CAهایی را که می‌توانند در یک زنجیره پس از این گواهی قرار گیرند مشخص می‌کند. مقدار صفر برای .B pathlen به این معنی است که این CA نمی‌تواند هیچ زیر\-CAای را امضا کند و فقط می‌تواند گواهی‌های نهاد نهایی (end\-entity) را امضا نماید. .SS "کاربرد کلید (Key Usage)" .IX Subsection "Key Usage" کاربرد کلید یک افزونه چندمقداری شامل فهرستی از نام‌های کاربردهای مجاز کلید است. مقادیر تعریف‌شده عبارتند از: \f(CW\*(C`digitalSignature\*(C'\fR، \&\f(CW\*(C`nonRepudiation\*(C'\fR (با نام جایگزین \f(CW\*(C`contentCommitment\*(C'\fR)، \&\f(CW\*(C`keyEncipherment\*(C'\fR، \f(CW\*(C`dataEncipherment\*(C'\fR، \f(CW\*(C`keyAgreement\*(C'\fR، \f(CW\*(C`keyCertSign\*(C'\fR، \&\f(CW\*(C`cRLSign\*(C'\fR، \f(CW\*(C`encipherOnly\*(C'\fR و \f(CW\*(C`decipherOnly\*(C'\fR. .PP مثال‌ها: .PP .Vb 1 \& keyUsage = digitalSignature, nonRepudiation \& \& keyUsage = digitalSignature, contentCommitment \& \& keyUsage = critical, keyCertSign .Ve .SS "کاربرد گسترش‌یافته کلید (Extended Key Usage)" .IX Subsection "Extended Key Usage" این افزونه شامل فهرستی از مقادیر است که اهداف مجاز برای استفاده از کلید عمومی گواهی را مشخص می‌کند. هر مقدار می‌تواند یک نام متنی کوتاه یا یک OID باشد. نام‌های متنی زیر و معانی مورد نظر آن‌ها شناخته‌شده هستند: .PP .Vb 10 \& Value Meaning according to RFC 5280 etc. \& \-\-\-\-\- \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- \& serverAuth SSL/TLS WWW Server Authentication \& clientAuth SSL/TLS WWW Client Authentication \& codeSigning Code Signing \& emailProtection E\-mail Protection (S/MIME) \& timeStamping Trusted Timestamping \& OCSPSigning OCSP Signing \& ipsecIKE ipsec Internet Key Exchange \& msCodeInd Microsoft Individual Code Signing (authenticode) \& msCodeCom Microsoft Commercial Code Signing (authenticode) \& msCTLSign Microsoft Trust List Signing \& msEFS Microsoft Encrypted File System .Ve .PP در حالی که سند RFC 5280 کارگروه IETF بیان می‌کند که .B id\-kp\-serverAuth و .B id\-kp\-clientAuth فقط برای استفاده در وب (WWW) هستند، در عمل برای انواع کلاینت‌ها و سرورهای TLS به کار می‌روند و این همان فرضی است که OpenSSL نیز در نظر می‌گیرد. .PP مثال‌ها: .PP .Vb 1 \& extendedKeyUsage = critical, codeSigning, 1.2.3.4 \& \& extendedKeyUsage = serverAuth, clientAuth .Ve .SS "شناسه کلید موضوع (Subject Key Identifier)" .IX Subsection "Subject Key Identifier" مشخصات افزونه SKID دارای مقداری با سه گزینه انتخابی است. .IP \fBnone\fR 4 .IX Item "none" هیچ افزونه SKIDای گنجانده نخواهد شد. .IP \fBhash\fR 4 .IX Item "hash" فرایند مشخص‌شده در بخش 4.2.1.2. (1) سند RFC 5280 دنبال می‌شود: مقدار keyIdentifier از درهم‌سازی ۱۶۰ بیتی SHA\-1 مقدار رشته بیتی (BIT STRING) مربوط به subjectPublicKey (به استثنای برچسب، طول و تعداد بیت‌های استفاده‌نشده) تشکیل می‌شود. .ie n .IP "یک رشته هگزادسیمال (احتمالاً با "":"" برای جداسازی بایت‌ها)" 4 .el .IP "یک رشته هگزادسیمال (احتمالاً با \f(CW:\fR برای جداسازی بایت‌ها)" 4 .IX Item "A hex string (possibly with : separating bytes)" مقدار ارائه‌شده مستقیماً خروجی داده می‌شود. استفاده از این گزینه اکیداً منع شده است. .PP به‌طور پیش‌فرض برنامه‌های \fBx509\fR، \fBreq\fR و \fBca\fR طوری عمل می‌کنند که گویی .B hash داده شده است. .PP مثال: .PP .Vb 1 \& subjectKeyIdentifier = hash .Ve .SS "شناسه کلید مرجع صدور (Authority Key Identifier)" .IX Subsection "Authority Key Identifier" مشخصات افزونه AKID ممکن است مقدار .B none داشته باشد که نشان می‌دهد هیچ AKIDای نباید گنجانده شود. در غیر این صورت ممکن است مقدار .B keyid یا .B issuer یا هر دوی آن‌ها باشد که با \f(CW\*(C`,\*(C'\fR از هم جدا می‌شوند. هر یک یا هر دوی آن‌ها می‌توانند گزینه .B always را داشته باشند که با قرار دادن دو‌نقطه \f(CW\*(C`:\*(C'\fR بین مقدار و این گزینه مشخص می‌شود. برای گواهی‌های خودامضا (self\-signed)، مقدار AKID نادیده گرفته می‌شود مگر اینکه .B always حضور داشته باشد. .PP به‌طور پیش‌فرض برنامه‌های \fBx509\fR، \fBreq\fR و \fBca\fR برای گواهی‌های خودامضا طوری رفتار می‌کنند که گویی .B none داده شده است، و در غیر این صورت مانند \fBkeyid\fR\f(CW\*(C`,\*(C'\fR \fBissuer\fR عمل می‌کنند. .PP اگر .B keyid حضور داشته باشد، تلاشی برای کپی کردن شناسه کلید موضوع (SKID) از گواهی صادرکننده صورت می‌گیرد، مگر اینکه گواهی صادرکننده همان گواهی جاری بوده و خودامضا نباشد. اگر گواهی صادرکننده همان گواهی جاری باشد، هش کلید عمومی مربوط به کلید امضا به‌عنوان جایگزین (fallback) در نظر گرفته می‌شود. اگر .B always وجود داشته باشد اما هیچ مقداری حاصل نشود، یک خطا برگردانده می‌شود. .PP اگر .B issuer حضور داشته باشد و علاوه بر آن گزینه .B always مشخص شده باشد یا .B keyid وجود نداشته باشد، نام متمایز (DN) صادرکننده و شماره سریال از گواهی صادرکننده کپی می‌شوند. اگر این کار ناموفق باشد، یک خطا برگردانده می‌شود. .PP مثال‌ها: .PP .Vb 1 \& authorityKeyIdentifier = keyid, issuer \& \& authorityKeyIdentifier = keyid, issuer:always .Ve .SS "نام جایگزین موضوع (Subject Alternative Name)" .IX Subsection "Subject Alternative Name" این یک افزونه چندمقداری است که از چندین نوع شناسه نام پشتیبانی می‌کند، از جمله: \&\fBemail\fR (یک نشانی ایمیل)، \&\fBURI\fR (شناسه یکنواخت منبع)، \&\fBDNS\fR (نام دامنه DNS)، \&\fBRID\fR (یک شناسه ثبت‌شده: OBJECT IDENTIFIER)، \&\fBIP\fR (یک نشانی IP)، \&\fBdirName\fR (یک نام متمایز)، و .B otherName . نحو هر یک در بندهای زیر شرح داده شده است. .PP گزینه .B email دو مقدار ویژه دارد. \&\f(CW\*(C`copy\*(C'\fR به‌طور خودکار هر نشانی ایمیلی را که در نام موضوع گواهی وجود دارد در افزونه می‌گنجاند. \&\f(CW\*(C`move\*(C'\fR به‌طور خودکار هر نشانی ایمیلی را از نام موضوع گواهی به افزونه منتقل می‌کند. .PP نشانی IP مورد استفاده در گزینه .B IP می‌تواند در قالب IPv4 یا IPv6 باشد. .PP مقدار .B dirName بخش پیکربندی شامل نام متمایز مورد استفاده را به‌صورت مجموعه‌ای از جفت‌های نام\-مقدار مشخص می‌کند. ویژگی‌های AVA چندمقداری را می‌توان با افزودن نویسه .B + قبل از نام تشکیل داد. .PP مقدار .B otherName می‌تواند شامل داده‌های دلخواه مرتبط با یک OID باشد؛ مقدار باید OID باشد که به دنبال آن یک نقطه‌ویرگول و محتوای مشخص‌شده با استفاده از نحو \fBASN1_generate_nconf\fR\|(3) می‌آید. .PP مثال‌ها: .PP .Vb 1 \& subjectAltName = email:copy, email:my@example.com, URI:http://my.example.com/ \& \& subjectAltName = IP:192.168.7.1 \& \& subjectAltName = IP:13::17 \& \& subjectAltName = email:my@example.com, RID:1.2.3.4 \& \& subjectAltName = otherName:1.2.3.4;UTF8:some other identifier \& \& [extensions] \& subjectAltName = dirName:dir_sect \& \& [dir_sect] \& C = UK \& O = My Organization \& OU = My Unit \& CN = My Name .Ve .PP نشانی‌های ایمیل غیراسکی (Non\-ASCII) منطبق با نحو تعریف‌شده در بخش 3.3 سند RFC 6531 به‌صورت otherName.SmtpUTF8Mailbox ارائه می‌شوند. طبق سند RFC 8398، نشانی ایمیل باید به‌صورت UTF8String ارائه گردد. برای اعمال نمایش معتبر در گواهی، SmtpUTF8Mailbox باید به‌صورت زیر ارائه شود: .PP .Vb 3 \& subjectAltName=@alts \& [alts] \& otherName = 1.3.6.1.5.5.7.8.9;FORMAT:UTF8,UTF8String:nonasciiname.example.com .Ve .SS "نام جایگزین صادرکننده (Issuer Alternative Name)" .IX Subsection "Issuer Alternative Name" این افزونه از اکثر گزینه‌های نام جایگزین موضوع پشتیبانی می‌کند؛ اما از .B email:copy پشتیبانی نمی‌کند. همچنین .B issuer:copy را به‌عنوان یک مقدار مجاز اضافه می‌کند که در صورت امکان، هر نام جایگزین موضوعی را از گواهی صادرکننده کپی می‌کند. .PP مثال: .PP .Vb 1 \& issuerAltName = issuer:copy .Ve .SS "دسترسی به اطلاعات مرجع صدور (Authority Info Access)" .IX Subsection "Authority Info Access" این افزونه جزئیاتی درباره نحوه بازیابی اطلاعات مربوط به گواهی که CA در دسترس قرار می‌دهد، ارائه می‌کند. نحو آن به‌صورت \&\fBaccess_id;location\fR است که در آن .B access_id یک شناسه شیء (OID) است (اگرچه فقط چند مقدار شناخته‌شده هستند) و .B location دارای همان نحو نام جایگزین موضوع است (به جز اینکه .B email:copy پشتیبانی نمی‌شود). .PP مقادیر ممکن برای access_id شامل .B OCSP (پاسخ‌دهنده OCSP)، \&\fBcaIssuers\fR (صادرکنندگان CA)، \&\fBad_timestamping\fR (برچسب‌گذاری زمانی AD)، \&\fBAD_DVCS\fR (سرویس ad dvcs) و .B caRepository (مخزن CA) است. .PP مثال‌ها: .PP .Vb 1 \& authorityInfoAccess = OCSP;URI:http://ocsp.example.com/,caIssuers;URI:http://myca.example.com/ca.cer \& \& authorityInfoAccess = OCSP;URI:http://ocsp.example.com/ .Ve .SS "نقاط توزیع CRL (CRL distribution points)" .IX Subsection "CRL distribution points" این یک افزونه چندمقداری است که مقادیر آن می‌توانند یک جفت نام\-مقدار با همان قالب نام جایگزین موضوع، یا یک مقدار منفرد باشند که نام بخش حاوی تمام مقادیر نقطه توزیع را مشخص می‌کند. .PP هنگامی که از یک جفت نام\-مقدار استفاده می‌شود، افزونه DistributionPoint با مقدار ارائه‌شده به‌عنوان فیلد fullName برای مقدار distributionPoint تنظیم می‌شود و فیلدهای reasons و cRLIssuer نادیده گرفته می‌شوند. .PP هنگامی که از یک گزینه منفرد استفاده می‌شود، مقدار آن بخش را مشخص می‌کند و آن بخش می‌تواند شامل موارد زیر باشد: .IP fullname 4 .IX Item "fullname" نام کامل نقطه توزیع، با همان قالب نام جایگزین موضوع. .IP relativename 4 .IX Item "relativename" مقدار به‌عنوان تکه‌ای از نام متمایز در نظر گرفته می‌شود که به‌عنوان مقدار فیلد nameRelativeToCRLIssuer تنظیم می‌گردد. .IP CRLIssuer 4 .IX Item "CRLIssuer" مقدار باید در همان قالب نام جایگزین موضوع باشد. .IP reasons 4 .IX Item "reasons" یک فیلد چندمقداری حاوی دلایل ابطال. مقادیر شناخته‌شده عبارتند از: \f(CW\*(C`keyCompromise\*(C'\fR، \f(CW\*(C`CACompromise\*(C'\fR، \f(CW\*(C`affiliationChanged\*(C'\fR، \&\f(CW\*(C`superseded\*(C'\fR، \f(CW\*(C`cessationOfOperation\*(C'\fR، \f(CW\*(C`certificateHold\*(C'\fR، \&\f(CW\*(C`privilegeWithdrawn\*(C'\fR و \f(CW\*(C`AACompromise\*(C'\fR. .PP فقط یکی از گزینه‌های .B fullname یا .B relativename باید مشخص شود. .PP مثال‌های ساده: .PP .Vb 1 \& crlDistributionPoints = URI:http://example.com/myca.crl \& \& crlDistributionPoints = URI:http://example.com/myca.crl, URI:http://example.org/my.crl .Ve .PP مثال کامل نقطه توزیع: .PP .Vb 2 \& [extensions] \& crlDistributionPoints = crldp1_section \& \& [crldp1_section] \& fullname = URI:http://example.com/myca.crl \& CRLissuer = dirName:issuer_sect \& reasons = keyCompromise, CACompromise \& \& [issuer_sect] \& C = UK \& O = Organisation \& CN = Some Name .Ve .SS "نقطه توزیع صادرکننده (Issuing Distribution Point)" .IX Subsection "Issuing Distribution Point" این افزونه فقط باید در CRLها ظاهر شود. این یک افزونه چندمقداری است که نحو آن شبیه به «بخشی» است که توسط افزونه نقاط توزیع CRL به آن ارجاع داده می‌شود. نام‌های زیر دارای معنی هستند: .IP fullname 4 .IX Item "fullname" نام کامل نقطه توزیع، با همان قالب نام جایگزین موضوع. .IP relativename 4 .IX Item "relativename" مقدار به‌عنوان تکه‌ای از نام متمایز در نظر گرفته می‌شود که به‌عنوان مقدار فیلد nameRelativeToCRLIssuer تنظیم می‌گردد. .IP onlysomereasons 4 .IX Item "onlysomereasons" یک فیلد چندمقداری حاوی دلایل ابطال. مقادیر شناخته‌شده عبارتند از: \f(CW\*(C`keyCompromise\*(C'\fR، \f(CW\*(C`CACompromise\*(C'\fR، \f(CW\*(C`affiliationChanged\*(C'\fR، \&\f(CW\*(C`superseded\*(C'\fR، \f(CW\*(C`cessationOfOperation\*(C'\fR، \f(CW\*(C`certificateHold\*(C'\fR، \&\f(CW\*(C`privilegeWithdrawn\*(C'\fR و \f(CW\*(C`AACompromise\*(C'\fR. .IP "onlyuser, onlyCA, onlyAA, indirectCRL" 4 .IX Item "onlyuser, onlyCA, onlyAA, indirectCRL" مقدار هر یک از این نام‌ها یک مقدار بولی (boolean) است. .PP مثال: .PP .Vb 2 \& [extensions] \& issuingDistributionPoint = critical, @idp_section \& \& [idp_section] \& fullname = URI:http://example.com/myca.crl \& indirectCRL = TRUE \& onlysomereasons = keyCompromise, CACompromise .Ve .SS "سیاست‌های گواهی (Certificate Policies)" .IX Subsection "Certificate Policies" این یک افزونه .I خام (raw) است که از تمام فیلدهای تعریف‌شده افزونه گواهی پشتیبانی می‌کند. .PP سیاست‌های بدون توصیف‌کننده (qualifier) با مشخص کردن OID تعیین می‌شوند. چندین سیاست با کاما از هم جدا می‌شوند. برای مثال: .PP .Vb 1 \& certificatePolicies = 1.2.4.5, 1.1.3.4 .Ve .PP برای گنجاندن توصیف‌کننده‌های سیاست، از نحو «‎@section‎» برای ارجاع به بخشی که تمام اطلاعات را مشخص می‌کند استفاده کنید. .PP بخش مورد ارجاع باید شامل OID سیاست با استفاده از نام .B policyIdentifier باشد. توصیف‌کننده‌های cPSuri را می‌توان با استفاده از نحو زیر گنجاند: .PP .Vb 1 \& CPS.nnn = value .Ve .PP که در آن \f(CW\*(C`nnn\*(C'\fR یک عدد است. .PP توصیف‌کننده‌های userNotice را می‌توان با استفاده از نحو زیر تنظیم کرد: .PP .Vb 1 \& userNotice.nnn = @notice .Ve .PP مقدار توصیف‌کننده userNotice در بخش مربوطه مشخص می‌شود. این بخش می‌تواند شامل گزینه‌های \fBexplicitText\fR، \fBorganization\fR و .B noticeNumbers باشد. گزینه‌های explicitText و organization رشته‌های متنی هستند، و noticeNumbers فهرستی جداشده با کاما از اعداد است. گزینه‌های organization و noticeNumbers (در صورت گنجانده شدن) باید هر دو با هم وجود داشته باشند. برخی نرم‌افزارها ممکن است به گزینه .B ia5org در سطح بالا نیاز داشته باشند؛ این گزینه نوع کدگذاری را از Displaytext به IA5String تغییر می‌دهد. .PP مثال: .PP .Vb 2 \& [extensions] \& certificatePolicies = ia5org, 1.2.3.4, 1.5.6.7.8, @polsect \& \& [polsect] \& policyIdentifier = 1.3.5.8 \& CPS.1 = "http://my.host.example.com" \& CPS.2 = "http://my.your.example.com" \& userNotice.1 = @notice \& \& [notice] \& explicitText = "Explicit Text Here" \& organization = "Organisation Name" \& noticeNumbers = 1, 2, 3, 4 .Ve .PP کدگذاری نویسه‌های explicitText را می‌توان با افزودن پیشوند \fBUTF8\fR، \fBBMP\fR یا .B VISIBLE به همراه دو‌نقطه قبل از مقدار مشخص کرد. برای مثال: .PP .Vb 2 \& [notice] \& explicitText = "UTF8:Explicit Text Here" .Ve .SS "محدودیت‌های سیاست (Policy Constraints)" .IX Subsection "Policy Constraints" این یک افزونه چندمقداری است که از نام‌های .B requireExplicitPolicy یا .B inhibitPolicyMapping و یک مقدار عدد صحیح غیرمنفی تشکیل شده است. حداقل یک جزء باید وجود داشته باشد. .PP مثال: .PP .Vb 1 \& policyConstraints = requireExplicitPolicy:3 .Ve .SS "منع هرگونه سیاست (Inhibit Any Policy)" .IX Subsection "Inhibit Any Policy" این یک افزونه رشته‌ای است که مقدار آن باید یک عدد صحیح غیرمنفی باشد. .PP مثال: .PP .Vb 1 \& inhibitAnyPolicy = 2 .Ve .SS "محدودیت‌های نام (Name Constraints)" .IX Subsection "Name Constraints" این یک افزونه چندمقداری است. نام باید با کلمه .B permitted یا .B excluded به همراه یک .B ; آغاز شود. ادامه نام و مقدار از نحو subjectAltName پیروی می‌کند، به جز اینکه .B email:copy پشتیبانی نمی‌شود و قالب .B IP باید شامل یک نشانی IP و ماسک زیرشبکه باشد که با یک .B / از هم جدا شده‌اند. .PP مثال‌ها: .PP .Vb 1 \& nameConstraints = permitted;IP:192.168.0.0/255.255.0.0 \& \& nameConstraints = permitted;email:.example.com \& \& nameConstraints = excluded;email:.com .Ve .SS "عدم بررسی OCSP (OCSP No Check)" .IX Subsection "OCSP No Check" این یک افزونه رشته‌ای است. این افزونه تجزیه می‌شود، اما نادیده گرفته خواهد شد. .PP مثال: .PP .Vb 1 \& noCheck = ignored .Ve .SS "ویژگی TLS (یا همان Must Staple)" .IX Subsection "TLS Feature (aka Must Staple)" این یک افزونه چندمقداری شامل فهرستی از شناسه‌های افزونه TLS است. هر شناسه می‌تواند یک عدد (0..65535) یا یک نام پشتیبانی‌شده باشد. هنگامی که یک کلاینت TLS افزونه‌ای از این فهرست را ارسال می‌کند، انتظار می‌رود که سرور TLS آن افزونه را در پاسخ خود بگنجاند. .PP نام‌های پشتیبانی‌شده عبارتند از: .B status_request و .B status_request_v2 .PP مثال: .PP .Vb 1 \& tlsfeature = status_request .Ve .SH "افزونه‌های منسوخ‌شده (DEPRECATED EXTENSIONS)" .IX Header "DEPRECATED EXTENSIONS" افزونه‌های زیر غیراستاندارد، مختص نت‌اسکیپ (Netscape) و تا حد زیادی منسوخ هستند. استفاده از آن‌ها در برنامه‌های جدید منع شده است. .SS "افزونه‌های رشته‌ای نت‌اسکیپ (Netscape String extensions)" .IX Subsection "Netscape String extensions" یادداشت نت‌اسکیپ .RB ( nsComment ) یک افزونه رشته‌ای شامل توضیحی است که هنگام مشاهده گواهی در برخی مرورگرها نمایش داده می‌شود. افزونه‌های دیگر از این نوع عبارتند از: \fBnsBaseUrl\fR، \&\fBnsRevocationUrl\fR، \fBnsCaRevocationUrl\fR، \fBnsRenewalUrl\fR، \fBnsCaPolicyUrl\fR و .B nsSslServerName .SS "نوع گواهی نت‌اسکیپ (Netscape Certificate Type)" .IX Subsection "Netscape Certificate Type" این یک افزونه چندمقداری است که شامل فهرستی از پرچم‌ها برای گنجانده شدن است. این افزونه برای مشخص کردن اهدافی که گواهی می‌تواند برای آن‌ها استفاده شود به کار می‌رفت. امروزه افزونه‌های basicConstraints، keyUsage و کاربرد گسترش‌یافته کلید به‌جای آن استفاده می‌شوند. .PP مقادیر قابل قبول برای nsCertType عبارتند از: \fBclient\fR، \fBserver\fR، \fBemail\fR، \&\fBobjsign\fR، \fBreserved\fR، \fBsslCA\fR، \fBemailCA\fR، .B objCA .SH "افزونه‌های دلخواه (ARBITRARY EXTENSIONS)" .IX Header "ARBITRARY EXTENSIONS" اگر افزونه‌ای توسط کد OpenSSL پشتیبانی نشود، باید با استفاده از قالب افزونه دلخواه کدگذاری شود. همچنین می‌توان از قالب دلخواه برای افزونه‌های پشتیبانی‌شده نیز استفاده کرد. برای اطمینان از قالب‌بندی صحیح داده‌ها برای نوع افزونه مربوطه، باید نهایت دقت به خرج داده شود. .PP دو راه برای کدگذاری افزونه‌های دلخواه وجود دارد. .PP روش اول استفاده از کلمه ASN1 و به دنبال آن محتوای افزونه با استفاده از همان نحو \fBASN1_generate_nconf\fR\|(3) است. برای مثال: .PP .Vb 3 \& [extensions] \& 1.2.3.4 = critical, ASN1:UTF8String:Some random data \& 1.2.3.4.1 = ASN1:SEQUENCE:seq_sect \& \& [seq_sect] \& field1 = UTF8:field1 \& field2 = UTF8:field2 .Ve .PP همچنین می‌توان از کلمه DER برای گنجاندن داده‌های کدگذاری‌شده خام در هر افزونه‌ای استفاده کرد. .PP .Vb 2 \& 1.2.3.4 = critical, DER:01:02:03:04 \& 1.2.3.4.1 = DER:01020304 .Ve .PP مقدار پس از DER یک تخلیه هگزادسیمال (hex dump) از کدگذاری DER افزونه است. هر افزونه‌ای را می‌توان در این قالب قرار داد تا رفتار پیش‌فرض بازنویسی شود. برای مثال: .PP .Vb 1 \& basicConstraints = critical, DER:00:01:02:03 .Ve .SH "هشدارها (WARNINGS)" .IX Header "WARNINGS" هیچ تضمینی وجود ندارد که یک پیاده‌سازی خاص، یک افزونه معین را پردازش کند. بنابراین ممکن است گاهی بتوان از گواهی‌ها برای اهدافی که توسط افزونه‌هایشان منع شده است استفاده کرد، چرا که یک برنامه خاص ممکن است مقادیر افزونه‌های مربوطه را شناسایی نکرده یا به آن‌ها پایبند نباشد. .PP گزینه‌های DER و ASN1 باید با احتیاط استفاده شوند. در صورت عدم استفاده دقیق، امکان ایجاد افزونه‌های نامعتبر وجود دارد. .SH "همچنین ببینید (SEE ALSO)" .IX Header "SEE ALSO" \&\fBopenssl\-req\fR\|(1), \fBopenssl\-ca\fR\|(1), \fBopenssl\-x509\fR\|(1), \&\fBASN1_generate_nconf\fR\|(3) .SH "حق نشر (COPYRIGHT)" .IX Header "COPYRIGHT" حق نشر 2004\-2025 متعلق به پدیدآورندگان پروژه OpenSSL است. کلیه حقوق محفوظ است. .PP تحت مجوز آپاچی نسخه 2.0 («مجوز») منتشر شده است. شما نمی‌توانید از این پرونده استفاده کنید مگر در انطباق با این مجوز. می‌توانید نسخه‌ای از مجوز را در پرونده LICENSE در توزیع کد منبع یا در به‌دست آورید.