.\" -*- 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 "CONFIG 5ssl" .TH 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)" config \- فایل‌های پیکربندی کتابخانه CONF در OpenSSL .SH "توضیحات (DESCRIPTION)" .IX Header "DESCRIPTION" این صفحه نحو (سینتکس) فایل‌های پیکربندی OpenSSL را به گونه‌ای که توسط \fBNCONF_load\fR\|(3) و توابع مرتبط تجزیه می‌شود، مستند می‌کند. این قالب توسط بسیاری از دستورهای OpenSSL و همچنین برای مقداردهی اولیه کتابخانه‌ها هنگام استفاده توسط برنامه‌ها به کار می‌رود. .PP بخش اول نحو کلی فایل‌های پیکربندی را شرح می‌دهد و بخش‌های بعدی معناشناسی (semantics) ماژول‌های مجزا را بیان می‌کنند. سایر ماژول‌ها در \fBfips_config\fR\|(5) و \fBx509v3_config\fR\|(5) توضیح داده شده‌اند. نحو تعریف مقادیر ASN.1 در \fBASN1_generate_nconf\fR\|(3) شرح داده شده است. .SH "نحو (SYNTAX)" .IX Header "SYNTAX" یک فایل پیکربندی مجموعه‌ای از خطوط است. خطوط خالی و فاصله‌های خالی (whitespace) بین عناصر یک خط هیچ اهمیتی ندارند. یک یادداشت (کامنت) با نویسه \fB#\fR شروع می‌شود؛ باقی‌مانده خط نادیده گرفته می‌شود. اگر \fB#\fR اولین نویسه غیرفاصله در یک خط باشد، کل خط نادیده گرفته می‌شود. .SS "دستورالعمل‌ها (Directives)" .IX Subsection "Directives" برای کنترل تجزیه فایل‌های پیکربندی می‌توان از دو دستورالعمل استفاده کرد: \&\fB.include\fR و \fB.pragma\fR. .PP برای سازگاری با نسخه‌های قدیمی‌تر OpenSSL، علامت مساوی پس از دستورالعمل نادیده گرفته می‌شود. نسخه‌های قدیمی‌تر آن را به عنوان یک انتساب (assignment) در نظر می‌گیرند، بنابراین اگر تفاوت معنایی اهمیت دارد، باید احتیاط کرد. .PP یک فایل می‌تواند با استفاده از نحو include فایل‌های دیگر را شامل شود: .PP .Vb 1 \& .include [=] pathname .Ve .PP اگر \fBpathname\fR یک نام فایل ساده باشد، آن فایل مستقیماً در همان نقطه درج می‌شود. فایل‌های درج‌شده نیز می‌توانند دارای عبارات \fB.include\fR باشند که فایل‌های دیگری را مشخص می‌کنند. اگر \fBpathname\fR یک دایرکتوری باشد، تمام فایل‌های درون آن دایرکتوری که پسوند \f(CW\*(C`.cnf\*(C'\fR یا \f(CW\*(C`.conf\*(C'\fR دارند گنجانده خواهند شد. (این ویژگی تنها روی سیستم‌هایی با پشتیبانی از POSIX IO در دسترس است.) زیردایرکتوری‌های درون \fBpathname\fR به طور کامل \fBنادیده گرفته می‌شوند\fR. به طور مشابه، اگر فایلی هنگام پیمایش یک دایرکتوری باز شود و آن فایل دارای دستورالعمل \fB.include\fR باشد که دایرکتوری دیگری را مشخص کند، آن نیز نادیده گرفته خواهد شد. .PP به عنوان یک قاعده کلی، \fBpathname\fR باید یک مسیر مطلق باشد؛ این مورد را می‌توان با عملگرهای کاربردی (pragma) \fBabspath\fR و \fBincludedir\fR که در ادامه شرح داده شده‌اند، تحمیل کرد. متغیر محیطی \fBOPENSSL_CONF_INCLUDE\fR، در صورت وجود، به ابتدای تمام مسیرهای نسبی اضافه می‌شود. اگر مسیر همچنان نسبی باشد، بر اساس دایرکتوری کاری فعلی تفسیر خواهد شد. .PP برای الزام تمام فایل‌های درج‌شده به استفاده از مسیرهای مطلق، از دستورالعمل زیر استفاده کنید: .PP .Vb 1 \& .pragma [=] abspath:value .Ve .PP رفتار پیش‌فرض، که در آن \fBvalue\fR برابر \fBfalse\fR یا \fBoff\fR است، اجازه استفاده از مسیرهای نسبی را می‌دهد. برای الزام تمام مسیرهای \fB.include\fR به مطلق بودن، از مقدار (\fBvalue\fR) \fBtrue\fR یا \fBon\fR استفاده کنید. .PP در این فایل‌ها، علامت دلار \fB$\fR برای ارجاع به یک متغیر استفاده می‌شود، همان‌طور که در ادامه توضیح داده شده است. با این حال، در برخی پلتفرم‌ها معمول است که \fB$\fR به عنوان یک نویسه معمولی در نام نمادها در نظر گرفته شود. پشتیبانی از این رفتار را می‌توان با دستورالعمل زیر انجام داد: .PP .Vb 1 \& .pragma [=] dollarid:value .Ve .PP رفتار پیش‌فرض، که در آن \fBvalue\fR برابر \fBfalse\fR یا \fBoff\fR است، علامت دلار را نشان‌دهنده نام متغیر در نظر می‌گیرد؛ \f(CW\*(C`foo$bar\*(C'\fR به عنوان \f(CW\*(C`foo\*(C'\fR به دنبال گسترش متغیر \f(CW\*(C`bar\*(C'\fR تفسیر می‌شود. اگر \fBvalue\fR برابر \fBtrue\fR یا \fBon\fR باشد، آنگاه \f(CW\*(C`foo$bar\*(C'\fR یک نام هفت‌نویسه‌ای واحد است و گسترش‌های متغیر باید با استفاده از آکولاد یا پرانتز مشخص شوند. .PP .Vb 1 \& .pragma [=] includedir:value .Ve .PP اگر یک مسیر نسبی در دستورالعمل \fB.include\fR مشخص شده باشد و متغیر محیطی \fBOPENSSL_CONF_INCLUDE\fR وجود نداشته باشد، مقدار pragmaی \fBincludedir\fR در صورت وجود به ابتدای مسیر اضافه می‌شود. .SS "تنظیمات (Settings)" .IX Subsection "Settings" یک فایل پیکربندی به چندین \fIبخش (section)\fR تقسیم می‌شود. یک بخش با نام بخش درون قلاب‌ها (کروشه‌ها) آغاز می‌شود و زمانی که بخش جدیدی شروع شود یا در انتهای فایل به پایان می‌رسد. نام بخش می‌تواند شامل نویسه‌های الفبایی-عددی و زیرخط (underscore) باشد. فاصله‌های خالی بین نام و قلاب‌ها حذف می‌شوند. .PP اولین بخش یک فایل پیکربندی خاص است و بخش \fBdefault\fR (پیش‌فرض) نامیده می‌شود. این بخش معمولاً بدون نام است و از ابتدای فایل تا اولین بخش نام‌گذاری‌شده ادامه دارد. هنگامی که یک نام جستجو می‌شود، ابتدا در بخش فعلی یا نام‌گذاری‌شده، و سپس در صورت نیاز در بخش پیش‌فرض جستجو می‌شود. .PP محیط سیستم بر روی بخشی به نام \fBENV\fR نگاشت می‌شود. .PP درون یک بخش، مجموعه‌ای از انتساب‌های نام/مقدار (name/value) قرار دارد که در ادامه با جزئیات بیشتر شرح داده شده است. یادآوری می‌شود که قلاب‌های نشان داده شده در این مثال الزامی هستند، نه اختیاری: .PP .Vb 7 \& [ section ] \& name1 = This is value1 \& name2 = Another value \& ... \& [ newsection ] \& name1 = New value1 \& name3 = Value 3 .Ve .PP مقدار \fBname\fR می‌تواند شامل هر نویسه الفبایی-عددی و همچنین چند علامت نگارشی مانند \fB.\fR، \fB,\fR، \fB;\fR و \fB_\fR باشد. فاصله‌های خالی پس از نام و قبل از علامت مساوی نادیده گرفته می‌شوند. .PP اگر یک نام در همان بخش تکرار شود، تمام مقادیر به جز آخرین مقدار نادیده گرفته می‌شوند. در شرایط خاصی، مانند DNهای گواهی (Certificate DNs)، ممکن است یک فیلد چندین بار تکرار شود. برای پشتیبانی از این حالت، دستوراتی مانند \fBopenssl\-req\fR\|(1) هر متن ابتدایی را که بعد از آن یک نقطه آمده باشد نادیده می‌گیرند. به عنوان مثال: .PP .Vb 2 \& 1.OU = First OU \& 2.OU = Second OU .Ve .PP مقدار \fBvalue\fR شامل رشته‌ای است که پس از نویسه \fB=\fR تا انتهای خط قرار دارد و تمام فاصله‌های خالی ابتدا و انتهای آن حذف می‌شود. .PP رشته مقدار تحت گسترش متغیرها (variable expansion) قرار می‌گیرد. متن \f(CW$var\fR یا \f(CW\*(C`${var}\*(C'\fR مقدار متغیر نام‌برده را از بخش فعلی درج می‌کند. برای استفاده از یک مقدار از بخش دیگر، از \f(CW$section::name\fR یا \f(CW\*(C`${section::name}\*(C'\fR استفاده کنید. با استفاده از \f(CW$ENV::name\fR، مقدار متغیر محیطی مشخص‌شده جایگزین خواهد شد. .PP متغیرها باید قبل از ارجاع به مقدارشان تعریف شوند، در غیر این صورت یک خطا گزارش شده و فایل بارگذاری نخواهد شد. می‌توان با مشخص کردن یک مقدار پیش‌فرض در بخش \fBdefault\fR قبل از استفاده از متغیر، این مشکل را برطرف کرد. .PP هرگونه تنظیمات نام/مقدار در بخش \fBENV\fR برای فایل پیکربندی در دسترس است، اما به محیط سیستم منتقل (propagate) نمی‌شود. .PP اگر طول مقدار در نهایت بیش از ۶۴ کیلوبایت شود، یک خطا محسوب می‌شود. .PP می‌توان نویسه‌های خاصی را با استفاده از نقل‌قول تکی \fB\*(Aq\fR یا دوتایی \fB"\fR در اطراف مقدار، یا با استفاده از بک‌اسلش \fB\e\fR قبل از نویسه، گریز داد (escape کرد). با قرار دادن \fB\e\fR به عنوان آخرین نویسه یک خط، یک رشته \fBvalue\fR می‌تواند در چندین خط گسترش یابد. علاوه بر این، توالی‌های \fB\en\fR، \fB\er\fR، \fB\eb\fR و \fB\et\fR شناسایی می‌شوند. .PP قواعد گسترش و گریز که در بالا برای \fBvalue\fR توضیح داده شد، برای مسیر فایل (pathname) در دستورالعمل \fB.include\fR نیز اعمال می‌شوند. .SH "پیکربندی کتابخانه OPENSSL (OPENSSL LIBRARY CONFIGURATION)" .IX Header "OPENSSL LIBRARY CONFIGURATION" بخش‌های زیر از اصطلاح غیررسمی \fIماژول (module)\fR برای ارجاع به بخشی از عملکردهای OpenSSL استفاده می‌کنند. این مفهوم با اصطلاح رسمی مانند \fIماژول FIPS\fR یکسان نیست. .PP پیکربندی OpenSSL مقدار \fBopenssl_conf\fR را در بخش پیش‌فرض جستجو کرده و آن را به عنوان نام بخشی در نظر می‌گیرد که نحوه پیکربندی هر ماژول در کتابخانه را مشخص می‌کند. باقی گذاشتن هر ماژول در پیکربندی پیش‌فرض خود خطا نیست. یک برنامه می‌تواند مستقیماً نام دیگری را با فراخوانی \fBCONF_modules_load_file()\fR، به عنوان مثال، مشخص کند. .PP همچنین OpenSSL مقدار \fBconfig_diagnostics\fR را جستجو می‌کند. اگر این گزینه وجود داشته باشد و مقدار عددی غیر صفر داشته باشد، هر پرچم نادیده‌گیری خطا که به \fBCONF_modules_load()\fR ارسال شده باشد، نادیده گرفته خواهد شد. این گزینه برای عیب‌یابی پیکربندی‌های نادرست مفید است، اما استفاده از آن در محیط عملیاتی (production) نیازمند بررسی بیشتر است. با فعال بودن این گزینه، یک خطای پیکربندی کاملاً از دسترسی به یک سرویس جلوگیری می‌کند. بدون این گزینه و در صورت بروز خطای پیکربندی، دسترسی مجاز خواهد بود اما پیکربندی مورد نظر اعمال \fBنخواهد\fR شد. .PP .Vb 3 \& # این مقادیر باید در بخش پیش‌فرض باشند \& config_diagnostics = 1 \& openssl_conf = openssl_init \& \& [openssl_init] \& oid_section = oids \& providers = providers \& alg_section = evp_properties \& ssl_conf = ssl_configuration \& engines = engines \& random = random \& \& [oids] \& ... oids جدید در اینجا ... \& \& [providers] \& ... موارد ارائه‌دهنده در اینجا ... \& \& [evp_properties] \& ... ویژگی‌های EVP در اینجا ... \& \& [ssl_configuration] \& ... ویژگی‌های پیکربندی SSL/TLS در اینجا ... \& \& [engines] \& ... ویژگی‌های engine در اینجا ... \& \& [random] \& ... ویژگی‌های random در اینجا ... .Ve .PP معناشناسی هر ماژول در ادامه شرح داده شده است. عبارت «در بخش مقداردهی اولیه» به بخشی اشاره دارد که توسط \fBopenssl_conf\fR یا نام دیگر (که در مثال بالا به صورت \fBopenssl_init\fR آمده است) مشخص شده است. مثال‌های زیر فرض می‌کنند که از پیکربندی بالا برای مشخص کردن بخش‌های مجزا استفاده شده است. .SS "پیکربندی شناسه شیء ASN.1 (ASN.1 Object Identifier Configuration)" .IX Subsection "ASN.1 Object Identifier Configuration" نام \fBoid_section\fR در بخش مقداردهی اولیه، نام بخشی را مشخص می‌کند که شامل جفت‌های نام/مقدار مربوط به OIDها است. نام، همان نام کوتاه است؛ مقدار، یک نام طولانی اختیاری به همراه یک کاما و سپس مقدار عددی است. در حالی که برخی دستورات OpenSSL بخش اختصاصی خود را برای مشخص کردن OIDها دارند، این بخش آن‌ها را برای تمام دستورات و برنامه‌ها در دسترس قرار می‌دهد. .PP .Vb 4 \& [oids] \& shortName = a very long OID name, 1.2.3.4 \& newoid1 = 1.2.3.4.1 \& some_other_oid = 1.2.3.5 .Ve .PP اگر یک پیکربندی کامل با قطعه‌کد بالا در فایل \fIexample.cnf\fR قرار داشته باشد، دستور خط فرمان زیر: .PP .Vb 1 \& OPENSSL_CONF=example.cnf openssl asn1parse \-genstr OID:1.2.3.4.1 .Ve .PP خروجی زیر را تولید خواهد کرد: .PP .Vb 1 \& 0:d=0 hl=2 l= 4 prim: OBJECT :newoid1 .Ve .PP که نشان می‌دهد OID با عنوان "newoid1" به عنوان "1.2.3.4.1" افزوده شده است. .SS "پیکربندی ارائه‌دهنده (Provider Configuration)" .IX Subsection "Provider Configuration" نام \fBproviders\fR در بخش مقداردهی اولیه، نام بخشی را مشخص می‌کند که شامل پیکربندی ارائه‌دهنده رمزنگاری (cryptographic provider) است. انتساب‌های نام/مقدار در این بخش هر کدام یک ارائه‌دهنده را نام برده و به بخش پیکربندی آن ارائه‌دهنده اشاره می‌کنند. بخش اختصاصی ارائه‌دهنده برای مشخص کردن نحوه بارگذاری ماژول، فعال‌سازی آن و تنظیم سایر پارامترها استفاده می‌شود. .PP درون بخش یک ارائه‌دهنده، نام‌های زیر دارای معنا هستند: .IP \fBidentity\fR 4 .IX Item "identity" برای مشخص کردن یک نام جایگزین استفاده می‌شود و نام پیش‌فرض مشخص‌شده در لیست ارائه‌دهندگان را بازنویسی می‌کند. برای مثال: .Sp .Vb 2 \& [providers] \& foo = foo_provider \& \& [foo_provider] \& identity = my_fips_module .Ve .IP \fBmodule\fR 4 .IX Item "module" مسیر فایل ماژول (معمولاً یک کتابخانه مشترک - shared library) را برای بارگذاری مشخص می‌کند. .IP \fBactivate\fR 4 .IX Item "activate" اگر وجود داشته باشد و روی یکی از مقادیر yes، on، true یا 1 تنظیم شود، ارائه‌دهنده مرتبط فعال خواهد شد. برعکس، تنظیم این مقدار روی no، off، false یا 0 از فعال شدن ارائه‌دهنده جلوگیری می‌کند. تنظیمات را می‌توان با حروف کوچک یا بزرگ نوشت. تنظیم activate روی هر مقدار دیگری، یا حذف مقدار، منجر به خطا خواهد شد. .Sp = item \fBsoft_load\fR .Sp در صورت فعال بودن، به کتابخانه اطلاع می‌دهد که در صورت عدم موفقیت در فعال‌سازی ارائه‌دهنده درخواستی، پشته خطا (error stack) را پاک کند. مقدار 1، yes، true یا on (با حروف کوچک یا بزرگ) این تنظیم را فعال می‌کند، در حالی که مقدار 0، no، false یا off (مجدداً با حروف کوچک یا بزرگ) این تنظیم را غیرفعال خواهد کرد. هر مقدار دیگری خطا تولید می‌کند. توجه داشته باشید که اگر این تنظیم ارائه نشود، پیش‌فرض آن off است. .PP تمام پارامترهای موجود در این بخش و همچنین زیربخش‌ها در اختیار ارائه‌دهنده قرار می‌گیرند. .PP \fIارائه‌دهنده پیش‌فرض و فعال‌سازی آن\fR .IX Subsection "Default provider and its activation" .PP اگر هیچ ارائه‌دهنده‌ای به صورت صریح فعال نشود، ارائه‌دهنده پیش‌فرض به صورت ضمنی فعال خواهد شد. برای جزئیات بیشتر به \fBOSSL_PROVIDER\-default\fR\|(7) مراجعه کنید. .PP اگر بخشی را اضافه کنید که صریحاً ارائه‌دهنده(های) دیگری را فعال کند، به احتمال زیاد نیاز دارید که ارائه‌دهنده پیش‌فرض را نیز به صورت صریح فعال کنید، در غیر این صورت در openssl در دسترس نخواهد بود. این امر ممکن است سیستم را از راه دور غیرقابل دسترس کند. .SS "پیکربندی EVP (EVP Configuration)" .IX Subsection "EVP Configuration" نام \fBalg_section\fR در بخش مقداردهی اولیه، نام بخش حاوی ویژگی‌های الگوریتمی هنگام استفاده از رابط برنامه‌نویسی \fBEVP\fR را مشخص می‌کند. .PP درون بخش ویژگی‌های الگوریتم، نام‌های زیر دارای معنا هستند: .IP \fBdefault_properties\fR 4 .IX Item "default_properties" مقدار می‌تواند هر چیزی باشد که به عنوان یک رشته پرسمان ویژگی (property query string) برای \fBEVP_set_default_properties()\fR قابل قبول است. .IP "\fBfips_mode\fR (منسوخ شده)" 4 .IX Item "fips_mode (deprecated)" مقدار یک بولی است که می‌تواند \fByes\fR یا \fBno\fR باشد. اگر مقدار \fByes\fR باشد، این دقیقاً معادل دستور زیر است: .Sp .Vb 1 \& default_properties = fips=yes .Ve .Sp اگر مقدار \fBno\fR باشد، هیچ اتفاقی نمی‌افتد. استفاده از این نام منسوخ شده است و در صورت استفاده، باید تنها نام موجود در آن بخش باشد. .SS "پیکربندی SSL (SSL Configuration)" .IX Subsection "SSL Configuration" نام \fBssl_conf\fR در بخش مقداردهی اولیه، نام بخش حاوی فهرست پیکربندی‌های SSL/TLS را مشخص می‌کند. همانند ارائه‌دهنده‌ها، هر نام در این بخش، بخشی را با پیکربندی مربوط به آن نام مشخص می‌کند. به عنوان مثال: .PP .Vb 4 \& [ssl_configuration] \& server = server_tls_config \& client = client_tls_config \& system_default = tls_system_default \& \& [server_tls_config] \& ... پیکربندی برای سرورهای SSL/TLS ... \& \& [client_tls_config] \& ... پیکربندی برای کلاینت‌های SSL/TLS ... .Ve .PP نام پیکربندی \fBsystem_default\fR دارای معنای خاصی است. اگر وجود داشته باشد، هر زمان که یک شیء \fBSSL_CTX\fR ایجاد شود، اعمال می‌گردد. به عنوان مثال، برای اعمال حداقل نسخه پروتکل TLS و DTLS در سطح سیستم: .PP .Vb 3 \& [tls_system_default] \& MinProtocol = TLSv1.2 \& MinProtocol = DTLSv1.2 .Ve .PP حداقل پروتکل TLS روی اشیاء \fBSSL_CTX\fR که مبتنی بر TLS هستند اعمال می‌شود و حداقل پروتکل DTLS روی اشیایی که مبتنی بر DTLS هستند اعمال می‌گردد. همین مورد برای حداکثر نسخه‌های تعیین‌شده با \fBMaxProtocol\fR نیز صدق می‌کند. .PP هر بخش پیکربندی شامل جفت‌های نام/مقدار است که توسط \fBSSL_CONF_cmd\fR\|(3) تجزیه می‌شوند، که بر حسب مورد توسط \fBSSL_CTX_config()\fR یا \fBSSL_config()\fR فراخوانی خواهد شد. توجه داشته باشید که هر نویسه‌ای قبل از نقطه اولیه در بخش پیکربندی نادیده گرفته می‌شود، به طوری که می‌توان از یک دستور چندین بار استفاده کرد. این ویژگی احتمالاً برای بارگذاری انواع مختلف کلید بسیار مفید است، همان‌طور که در اینجا نشان داده شده است: .PP .Vb 3 \& [server_tls_config] \& RSA.Certificate = server\-rsa.pem \& ECDSA.Certificate = server\-ecdsa.pem .Ve .SS "پیکربندی Engine (Engine Configuration)" .IX Subsection "Engine Configuration" نام \fBengines\fR در بخش مقداردهی اولیه، نام بخش حاوی فهرست پیکربندی‌های ENGINE را مشخص می‌کند. همانند ارائه‌دهنده‌ها، هر نام در این بخش یک engine را به همراه پیکربندی آن مشخص می‌کند. بخش اختصاصی engine برای تعیین نحوه بارگذاری engine، فعال‌سازی آن و تنظیم سایر پارامترها استفاده می‌شود. .PP درون بخش engine، نام‌های زیر دارای معنا هستند: .IP \fBengine_id\fR 4 .IX Item "engine_id" برای تعیین یک نام جایگزین استفاده می‌شود و نام پیش‌فرض مشخص‌شده در لیست engineها را بازنویسی می‌کند. در صورت وجود، باید اولین مورد باشد. برای مثال: .Sp .Vb 2 \& [engines] \& foo = foo_engine \& \& [foo_engine] \& engine_id = myfoo .Ve .IP \fBdynamic_path\fR 4 .IX Item "dynamic_path" یک ENGINE را از مسیر داده‌شده بارگذاری و اضافه می‌کند. این معادل ارسال ctrlهای \fBSO_PATH\fR با آرگومان مسیر، و به دنبال آن \fBLIST_ADD\fR با مقدار \fB2\fR و \fBLOAD\fR به ENGINE پویا است. اگر این رفتار مورد نظر نیست، می‌توان ctrlهای جایگزین را مستقیماً با استفاده از دستورات ctrl به ENGINE پویا ارسال کرد. .IP \fBinit\fR 4 .IX Item "init" مشخص می‌کند که آیا ENGINE مقداردهی اولیه شود یا خیر. اگر مقدار \fB0\fR باشد، ENGINE مقداردهی اولیه نخواهد شد؛ اگر مقدار \fB1\fR باشد، تلاشی برای مقداردهی اولیه فوری ENGINE صورت می‌گیرد. اگر دستور \fBinit\fR وجود نداشته باشد، پس از پردازش تمام دستورات موجود در بخش آن، تلاشی برای مقداردهی اولیه ENGINE انجام خواهد شد. .IP \fBdefault_algorithms\fR 4 .IX Item "default_algorithms" الگوریتم‌های پیش‌فرضی را که یک ENGINE با استفاده از تابع \fBENGINE_set_default_string()\fR ارائه می‌دهد، تنظیم می‌کند. .PP تمام نام‌های دیگر به عنوان نام یک دستور ctrl که به ENGINE ارسال می‌شود در نظر گرفته می‌شوند و مقدار آن‌ها، آرگومان ارسال‌شده همراه با دستور است. مقدار ویژه \fBEMPTY\fR به این معنی است که هیچ مقداری همراه با دستور ارسال نمی‌شود. برای مثال: .PP .Vb 2 \& [engines] \& foo = foo_engine \& \& [foo_engine] \& dynamic_path = /some/path/fooengine.so \& some_ctrl = some_value \& default_algorithms = ALL \& other_ctrl = EMPTY .Ve .SS "پیکربندی تصادفی (Random Configuration)" .IX Subsection "Random Configuration" نام \fBrandom\fR در بخش مقداردهی اولیه، نام بخش حاوی تنظیمات مولد اعداد تصادفی را مشخص می‌کند. .PP درون بخش random، نام‌های زیر دارای معنا هستند: .IP \fBrandom\fR 4 .IX Item "random" برای تعیین مولد بیت‌های تصادفی (random bit generator) استفاده می‌شود. برای مثال: .Sp .Vb 2 \& [random] \& random = CTR\-DRBG .Ve .Sp مولدهای بیت تصادفی در دسترس عبارتند از: .RS 4 .IP \fBCTR\-DRBG\fR 4 .IX Item "CTR-DRBG" .PD 0 .IP \fBHASH\-DRBG\fR 4 .IX Item "HASH-DRBG" .IP \fBHMAC\-DRBG\fR 4 .IX Item "HMAC-DRBG" .PD .RE .RS 4 .RE .IP \fBcipher\fR 4 .IX Item "cipher" مشخص می‌کند که مولد بیت تصادفی \fBCTR\-DRBG\fR از چه رمزی (cipher) استفاده خواهد کرد. سایر مولدهای بیت تصادفی این نام را نادیده می‌گیرند. مقدار پیش‌فرض \fBAES\-256\-CTR\fR است. .IP \fBdigest\fR 4 .IX Item "digest" مشخص می‌کند که مولدهای بیت تصادفی \fBHASH\-DRBG\fR یا \fBHMAC\-DRBG\fR از چه دایجست (خلاصه‌ساز) استفاده خواهند کرد. سایر مولدهای بیت تصادفی این نام را نادیده می‌گیرند. .IP \fBproperties\fR 4 .IX Item "properties" پرسمان ویژگی (property query) مورد استفاده هنگام واکشی مولد بیت تصادفی و هرگونه الگوریتم زیربنایی را تنظیم می‌کند. .IP \fBseed\fR 4 .IX Item "seed" منبع تصادفی‌سازی را که باید استفاده شود تنظیم می‌کند. به طور پیش‌فرض \fBSEED\-SRC\fR خارج از ارائه‌دهنده FIPS استفاده خواهد شد. ارائه‌دهنده FIPS از callbackها برای دسترسی به همان منابع تصادفی‌سازی از خارج از مرز اعتبارسنجی‌شده استفاده می‌کند. .IP \fBseed_properties\fR 4 .IX Item "seed_properties" پرسمان ویژگی مورد استفاده هنگام واکشی منبع تصادفی‌سازی را تنظیم می‌کند. .IP \fBrandom_provider\fR 4 .IX Item "random_provider" ارائه‌دهنده‌ای را که باید برای فراخوانی‌های \fBRAND_bytes\fR\|(3) به جای منابع آنتروپی داخلی استفاده شود، تعیین می‌کند. مقدار پیش‌فرض آن "fips" است. اگر ارائه‌دهنده نام‌برده بارگذاری نشده باشد، از منابع آنتروپی داخلی استفاده خواهد شد. .SH "مثال‌ها (EXAMPLES)" .IX Header "EXAMPLES" این مثال نحوه استفاده از نقل‌قول و گریزدهی (escaping) را نشان می‌دهد. .PP .Vb 3 \& # این بخش پیش‌فرض است. \& HOME = /temp \& configdir = $ENV::HOME/config \& \& [ section_one ] \& # نقل‌قول‌ها اجازه استفاده از فاصله‌های خالی ابتدا و انتها را می‌دهند \& any = " any variable name " \& other = A string that can \e \& cover several lines \e \& by including \e\e characters \& message = Hello World\en \& \& [ section_two ] \& greeting = $section_one::message .Ve .PP این مثال نحوه گسترش ایمن متغیرهای محیطی را نشان می‌دهد. در این مثال، متغیر \fBtempfile\fR قرار است به یک فایل موقت اشاره کند و متغیرهای محیطی \fBTEMP\fR یا \fBTMP\fR در صورت وجود، دایرکتوری محل قرارگیری فایل را مشخص می‌کنند. از آنجا که اگر متغیری وجود نداشته باشد بخش پیش‌فرض بررسی می‌شود، می‌توان \fBTMP\fR را به عنوان پیش‌فرض روی \fI/tmp\fR و \fBTEMP\fR را به عنوان پیش‌فرض روی \fBTMP\fR تنظیم کرد. .PP .Vb 3 \& # این دو خط باید در بخش پیش‌فرض باشند. \& TMP = /tmp \& TEMP = $ENV::TMP \& \& # این مورد در هر جایی قابل استفاده است \& tmpfile = ${ENV::TEMP}/tmp.filename .Ve .PP این مثال نحوه تحمیل حالت FIPS را برای برنامه \fIsample\fR نشان می‌دهد. .PP .Vb 1 \& sample = fips_config \& \& [fips_config] \& alg_section = evp_properties \& \& [evp_properties] \& default_properties = "fips=yes" .Ve .SH "محیط (ENVIRONMENT)" .IX Header "ENVIRONMENT" .IP \fBOPENSSL_CONF\fR 4 .IX Item "OPENSSL_CONF" مسیر فایل پیکربندی، یا یک رشته خالی برای عدم استفاده از آن. در برنامه‌های با set\-user\-ID و set\-group\-ID نادیده گرفته می‌شود. .IP \fBOPENSSL_ENGINES\fR 4 .IX Item "OPENSSL_ENGINES" مسیر دایرکتوری engines. در برنامه‌های با set\-user\-ID و set\-group\-ID نادیده گرفته می‌شود. .IP \fBOPENSSL_MODULES\fR 4 .IX Item "OPENSSL_MODULES" مسیر دایرکتوری حاوی ماژول‌های OpenSSL مانند ارائه‌دهنده‌ها (providers). در برنامه‌های با set\-user\-ID و set\-group\-ID نادیده گرفته می‌شود. .IP \fBOPENSSL_CONF_INCLUDE\fR 4 .IX Item "OPENSSL_CONF_INCLUDE" مسیر اختیاری برای اضافه شدن به ابتدای تمام مسیرهای \fB.include\fR. .SH "گزارش باگ‌ها (BUGS)" .IX Header "BUGS" هیچ راهی برای درج نویسه‌ها با استفاده از قالب هشت‌هشتی (اکتال) \fB\ennn\fR وجود ندارد. رشته‌ها همگی به نویسه null ختم می‌شوند، بنابراین نویسه‌های null نمی‌توانند بخشی از مقدار باشند. .PP گریزدهی (escaping) کاملاً بی‌نقص نیست: اگر می‌خواهید از توالی‌هایی مانند \fB\en\fR استفاده کنید، نمی‌توانید از هیچ‌گونه نقل‌قولی در همان خط استفاده نمایید. .PP این محدودیت که تنها یک دایرکتوری می‌تواند در یک زمان باز و خوانده شود را می‌توان یک باگ در نظر گرفت و باید برطرف شود. .SH "تاریخچه (HISTORY)" .IX Header "HISTORY" یک API مستند‌نشده به نام \fBNCONF_WIN32()\fR از مجموعه قوانین تجزیه کمی متفاوتی استفاده می‌کرد که برای پلتفرم Microsoft Windows سفارشی شده بود. به طور خاص، نویسه بک‌اسلش یک نویسه گریز نبود و می‌توانست در مسیرها استفاده شود، تنها نویسه نقل‌قول دوتایی شناسایی می‌شد و توضیحات با نقطه-ویرگول (semi-colon) شروع می‌شدند. این تابع در OpenSSL 3.0 منسوخ شد؛ برنامه‌هایی که فایل‌های پیکربندی آن‌ها از آن نحو استفاده می‌کنند باید اصلاح شوند. .SH "همچنین ببینید (SEE ALSO)" .IX Header "SEE ALSO" \&\fBopenssl\-x509\fR\|(1), \fBopenssl\-req\fR\|(1), \fBopenssl\-ca\fR\|(1), \&\fBopenssl\-fipsinstall\fR\|(1), \&\fBASN1_generate_nconf\fR\|(3), \&\fBEVP_set_default_properties\fR\|(3), \&\fBCONF_modules_load\fR\|(3), \&\fBCONF_modules_load_file\fR\|(3), \&\fBRAND_bytes\fR\|(3), \&\fBfips_config\fR\|(5), and \&\fBx509v3_config\fR\|(5). .SH "حق نشر (COPYRIGHT)" .IX Header "COPYRIGHT" حق نشر ۲۰۰۰-۲۰۲۵ نویسندگان پروژه OpenSSL. کلیه حقوق محفوظ است. .PP تحت مجوز آپاچی نسخه ۲.۰ (Apache License 2.0) منتشر شده است. شما نمی‌توانید از این فایل استفاده کنید مگر با رعایت مجوز. می‌توانید یک نسخه از مجوز را در فایل LICENSE در توزیع منبع یا در دریافت کنید.