certtool(1) دستورات کاربر (User Commands) certtool(1)

certtool - ابزار دستکاری و صدور گواهینامه‌های GnuTLS

certtool [-flags] [-flag [value]] [--option-name[[=| ]value]]

تمامی آرگومان‌ها باید گزینه باشند.

ابزاری برای تجزیه و تولید گواهینامه‌ها، درخواست‌ها و کلیدهای خصوصی X.509. این ابزار می‌تواند به‌صورت تعاملی یا با مشخص کردن گزینه خط فرمان الگو به‌صورت غیرتعاملی استفاده شود.

این ابزار فایل‌ها یا URIهای پشتیبانی‌شده را از طریق گزینه --infile می‌پذیرد. در صورتی که برای دسترسی به URI به پین (PIN) نیاز باشد، می‌توانید آن را با استفاده از متغیرهای محیطی GNUTLS_PIN و GNUTLS_SO_PIN فراهم کنید.


فعال‌سازی اشکال‌زدایی (دیباگ). این گزینه یک عدد صحیح را به عنوان آرگومان دریافت می‌کند. مقدار num محدود به موارد زیر است:
در محدوده 0 تا 9999

سطح اشکال‌زدایی را مشخص می‌کند.


خروجی با جزئیات بیشتر.

فایل ورودی.

فایل خروجی.

اعتبارسنجی را به‌جای زمان سیستم، در برچسب زمانی داده‌شده انجام می‌دهد.

برچسب زمانی یک نمونه زمانی است که به‌صورت زمان یونیکس یا در قالب یک رشته زمانی خوانا برای انسان مانند "29 Feb 2004" یا "2004-02-29" کدگذاری شده است. مستندات کامل در https://www.gnu.org/software/coreutils/manual/html_node/Date-input-formats.html یا به‌صورت محلی از طریق 'info '(coreutils) date invocation در دسترس است.


چاپ اطلاعات گواهینامه داده‌شده.

چاپ اطلاعات یک کلید عمومی.

این گزینه در ترکیب با --load-request ،--load-pubkey ،--load-privkey و --load-certificate کلید عمومی شیء مورد نظر را استخراج می‌کند.


تولید یک گواهینامه خودامضا.

تولید یک گواهینامه امضاشده.

تولید یک گواهینامه پروکسی.

به‌روزرسانی یک گواهینامه امضاشده.

چاپ اثر انگشت (فینگرپرینت) گواهینامه داده‌شده.

این یک هش ساده از کدگذاری DER گواهینامه است. می‌تواند با پارامتر --hash ترکیب شود. با این حال، برای شناسایی توصیه می‌شود از key-id استفاده شود که تنها به کلید گواهینامه وابسته است.


چاپ شناسه کلید (Key ID) گواهینامه داده‌شده.

این یک هش از کلید عمومی گواهینامه داده‌شده است. این مقدار کلید را به‌طور یکتا مشخص می‌کند، در هنگام تمدید گواهینامه ثابت می‌ماند و تنها به فیلدهای امضاشده گواهینامه وابسته است.


چاپ کلید عمومی گواهینامه.

این گزینه به دلیل تکراری بودن با --pubkey-info منسوخ شده است.

نکته: این گزینه منسوخ شده است


تولید یک گواهینامه نسخه ۱ X.509 (بدون افزونه‌ها).

امضای یک گواهینامه با یک الگوریتم امضای مشخص.

این گزینه می‌تواند با --generate-certificate ترکیب شود تا گواهینامه را با گونه خاصی از الگوریتم امضا کند. تنها گزینه پشتیبانی‌شده 'RSA-PSS' است و باید زمانی مشخص شود که امضاکننده گواهینامه‌ای ندارد که فقط برای استفاده از RSA-PSS علامت‌گذاری شده باشد.


چاپ اطلاعات درخواست گواهینامه داده‌شده.

تولید یک درخواست گواهینامه PKCS #10. این گزینه نباید در ترکیب با هیچ‌یک از گزینه‌های زیر ظاهر شود: infile.

یک درخواست گواهینامه PKCS #10 تولید خواهد کرد. برای مشخص کردن کلید خصوصی از --load-privkey استفاده کنید.


عدم استفاده از افزونه‌ها در درخواست‌های گواهینامه.

چاپ اطلاعات مربوط به یک ساختار PKCS #12.

این گزینه محتویات را استخراج کرده و متاداده‌های ساختار PKCS #12 ارائه‌شده را چاپ می‌کند.


نام آشنا (friendly name) مورد استفاده در PKCS #12.

نامی که برای گواهینامه اصلی و کلید خصوصی در یک فایل PKCS #12 استفاده می‌شود.


تولید یک ساختار PKCS #12.

نیاز به مشخص شدن یک گواهینامه، یک کلید خصوصی و احتمالاً یک گواهینامه CA دارد.


استفاده از PBMAC1 در یک ساختار PKCS #12.

چاپ اطلاعات مربوط به یک کلید خصوصی.

چاپ اطلاعات مربوط به یک ساختار PKCS #8.

این گزینه اطلاعاتی درباره ساختارهای رمزشده PKCS #8 چاپ می‌کند. این گزینه نیازی به رمزگشایی ساختار ندارد.


تبدیل یک کلید RSA-PSS به قالب خام RSA.

به یک کلید RSA-PSS به عنوان ورودی نیاز دارد و یک کلید خام RSA را در خروجی می‌دهد. این دستور برای سازگاری با برنامه‌هایی که نمی‌توانند کلیدهای RSA-PSS را بخوانند ضروری است.


تولید یک کلید خصوصی.

هنگام تولید کلیدهای خصوصی RSA-PSS یا RSA-OAEP، گزینه --hash هَش مجاز برای کلید را محدود می‌کند؛ برای کلیدهای RSA-PSS گزینه --salt-size نیز قابل قبول است.


مشخص کردن نوع کلید برای استفاده در تولید کلید.

این گزینه می‌تواند با --generate-privkey ترکیب شود تا نوع کلید تولیدی را مشخص کند. گزینه‌های معتبر عبارتند از 'rsa'، 'rsa-pss'، 'rsa-oaep'، 'dsa'، 'ecdsa'، 'ed25519'، 'ed448'، 'x25519' و 'x448'. هنگام ترکیب با تولید گواهینامه، می‌تواند برای مشخص کردن یک گواهینامه RSA-PSS در صورت ارائه کلید RSA استفاده شود.


مشخص کردن قالب کلید برای استفاده در تولید کلید.

این گزینه می‌تواند با --generate-privkey ترکیب شود تا در صورتی که نوع کلید ML-DSA باشد، قالب کلید تولیدی را مشخص کند. گزینه‌های معتبر 'seed'، 'expanded' و 'both' هستند.


مشخص کردن تعداد بیت‌ها برای تولید کلید. این گزینه یک عدد صحیح را به عنوان آرگومان دریافت می‌کند.

مشخص کردن منحنی مورد استفاده برای تولید کلید EC.

مقادیر پشتیبانی‌شده عبارتند از secp192r1، secp224r1، secp256r1، secp384r1 و secp521r1.


مشخص کردن سطح امنیت [low, legacy, medium, high, ultra].

این گزینه جایگزینی برای گزینه bits است.


تبدیل یک کلید داده‌شده به ساختار PKCS #8.

این گزینه باید با --load-privkey ترکیب شود.

-8, --pkcs8

استفاده از قالب PKCS #8 برای کلیدهای خصوصی.

تولید یک کلید خصوصی یا پارامترها از یک بذر (seed) با استفاده از روش اثبات‌پذیر.

این گزینه از الگوریتم‌های FIPS PUB186-4 (مانند Shawe-Taylor) برای تولید کلید اثبات‌پذیر استفاده می‌کند. هنگامی که مشخص شود، کلیدهای خصوصی یا پارامترها از یک بذر (seed) تولید می‌شوند و بعداً می‌توانند با --verify-provable-privkey اعتبارسنجی شوند تا تایید شود به‌درستی از بذر تولید شده‌اند. می‌توانید --seed را مشخص کنید یا اجازه دهید GnuTLS یکی تولید کند (توصیه می‌شود). این گزینه می‌تواند با --generate-privkey یا --generate-dh-params ترکیب شود.

این گزینه برای کلیدهای RSA و DSA کاربرد دارد. در کلیدهای DSA پارامترهای PQG با استفاده از بذر تولید می‌شوند و در RSA دو عدد اول.


اعتبارسنجی یک کلید خصوصی تولیدشده از یک بذر با استفاده از روش اثبات‌پذیر.

این گزینه از الگوریتم‌های FIPS-186-4 برای تولید کلید اثبات‌پذیر استفاده می‌کند. می‌توانید --seed را مشخص کنید یا از بذر ذخیره‌شده در ساختار کلید خصوصی استفاده نمایید.


هنگام تولید کلید خصوصی از بذر هگزادسیمال داده‌شده استفاده کنید.

بذر به عنوان یک پارامتر امنیتی برای کلید خصوصی عمل می‌کند و بنابراین باید اندازه بذری متناسب با سطح امنیت کلید خصوصی ارائه شود (مانند بذر ۲۵۶ بیتی).


چاپ اطلاعات ساختار CRL داده‌شده.

تولید یک CRL.

این گزینه یک فهرست ابطال گواهینامه (CRL) تولید می‌کند. هنگامی که با --load-crl ترکیب شود، از CRL بارگذاری‌شده به عنوان پایه‌ای برای CRL تولیدی استفاده می‌کند (یعنی تمام گواهینامه‌های باطل‌شده در پایگاه به CRL جدید کپی می‌شوند). برای افزودن گواهینامه‌های جدید به CRL از --load-certificate استفاده کنید.


اعتبارسنجی یک فهرست ابطال گواهینامه (CRL) با استفاده از یک فهرست مورد اعتماد. این گزینه باید در ترکیب با گزینه‌های زیر ظاهر شود: load-ca-certificate.

فهرست گواهینامه‌های مورد اعتماد باید با --load-ca-certificate بارگذاری شود.


اعتبارسنجی یک زنجیره گواهینامه با کدگذاری PEM.

اعتبار یک زنجیره گواهینامه را بررسی می‌کند. یعنی مجموعه‌ای مرتب از گواهینامه‌ها که در آن هر گواهینامه صادرکننده گواهینامه قبلی است، و اولین گواهینامه همان گواهینامه نهایی است که باید اعتبارسنجی شود. در یک زنجیره مناسب، آخرین گواهینامه خودامضا است. این گزینه می‌تواند با --verify-purpose یا --verify-hostname ترکیب شود.


اعتبارسنجی یک گواهینامه (یا زنجیره) با کدگذاری PEM در برابر مجموعه‌ای معتمد.

فهرست گواهینامه‌های مورد اعتماد را می‌توان با --load-ca-certificate بارگذاری کرد. اگر فهرست گواهینامه‌ای ارائه نشود، از فهرست گواهینامه‌های مورد اعتماد سیستم استفاده می‌شود. توجه داشته باشید که در طول اعتبارسنجی ممکن است چندین مسیر بررسی شوند. در صورت اعتبارسنجی موفق، مسیر موفق آخرین مسیر خواهد بود. این گزینه می‌تواند با --verify-purpose یا --verify-hostname ترکیب شود.


مشخص کردن یک نام میزبان برای اعتبارسنجی زنجیره گواهینامه.

این گزینه باید با یکی از گزینه‌های اعتبارسنجی گواهینامه ترکیب شود.


مشخص کردن یک ایمیل برای اعتبارسنجی زنجیره گواهینامه. این گزینه نباید در ترکیب با هیچ‌یک از گزینه‌های زیر ظاهر شود: verify-hostname.

این گزینه باید با یکی از گزینه‌های اعتبارسنجی گواهینامه ترکیب شود.


مشخص کردن یک OID هدف برای اعتبارسنجی زنجیره گواهینامه.

این شناسه شیء هدف گواهینامه‌هایی را که باید اعتبارسنجی شوند محدود می‌کند. اهداف نمونه عبارتند از 1.3.6.1.5.5.7.3.1 (TLS WWW)، 1.3.6.1.5.5.7.3.4 (EMAIL) و غیره. توجه داشته باشید که گواهینامه CA بدون هدف تعیین‌شده (کاربرد گسترده کلید) برای هر هدفی معتبر است.


اجازه دادن به الگوریتم‌های شکسته و ناامن مانند MD5 برای اعتبارسنجی.

این گزینه می‌تواند با --p7-verify ،--verify یا --verify-chain ترکیب شود.


مشخص کردن یک پروفایل سطح امنیت برای اعتبارسنجی.

از این گزینه می‌توان برای مشخص کردن پروفایل اعتبارسنجی گواهینامه استفاده کرد. پروفایل‌های اعتبارسنجی گواهینامه با سطح امنیت مطابقت دارند. این مقدار باید یکی از موارد 'none'، 'very weak'، 'low'، 'legacy'، 'medium'، 'high'، 'ultra' یا 'future' باشد. توجه داشته باشید که به‌طور پیش‌فرض هیچ پروفایلی اعمال نمی‌شود، مگر اینکه در فایل پیکربندی gnutls مقداری به عنوان حداقل تنظیم شده باشد.


تولید یک ساختار PKCS #7.

این گزینه ساختار محفظه گواهینامه PKCS #7 را تولید می‌کند. برای افزودن گواهینامه‌ها به ساختار از --load-certificate و --load-crl استفاده کنید.


امضا با استفاده از ساختار PKCS #7.

این گزینه یک ساختار PKCS #7 حاوی امضا برای داده‌های ارائه‌شده از infile تولید می‌کند. داده‌ها در داخل ساختار ذخیره می‌شوند. گواهینامه امضاکننده باید با استفاده از --load-certificate و --load-privkey مشخص شود. ورودی --load-certificate می‌تواند فهرستی از گواهینامه‌ها باشد. در صورت وجود فهرست، اولین گواهینامه برای امضا استفاده می‌شود و سایر گواهینامه‌ها در ساختار گنجانده می‌شوند.


امضا با استفاده از یک ساختار مجزای PKCS #7.

این گزینه یک ساختار PKCS #7 حاوی امضا برای داده‌های ارائه‌شده از infile تولید می‌کند. گواهینامه امضاکننده باید با استفاده از --load-certificate و --load-privkey مشخص شود. ورودی --load-certificate می‌تواند فهرستی از گواهینامه‌ها باشد. در صورت وجود فهرست، اولین گواهینامه برای امضا استفاده می‌شود و سایر گواهینامه‌ها در ساختار گنجانده می‌شوند.


گواهینامه امضاکننده در فهرست گواهینامه‌ها گنجانده خواهد شد. حالت no-p7-include-cert این گزینه را غیرفعال می‌کند. این گزینه به‌طور پیش‌فرض فعال است.

این گزینه با --p7-sign یا --p7-detached-sign کار می‌کند و گواهینامه امضاکننده را در امضای تولیدشده می‌گنجاند یا حذف می‌کند.


یک برچسب زمانی را در ساختار PKCS #7 می‌گنجاند. حالت no-p7-time این گزینه را غیرفعال می‌کند.

این گزینه یک برچسب زمانی در امضای تولیدشده می‌گنجاند.


داده‌های تعبیه‌شده در ساختار PKCS #7 را نمایش می‌دهد. حالت no-p7-show-data این گزینه را غیرفعال می‌کند.

این گزینه می‌تواند با --p7-verify یا --p7-info ترکیب شود و داده‌های امضاشده تعبیه‌شده در ساختار PKCS #7 را نمایش می‌دهد.


چاپ اطلاعات یک ساختار PKCS #7.

اعتبارسنجی ساختار PKCS #7 ارائه‌شده.

این گزینه ساختار امضاشده PKCS #7 را اعتبارسنجی می‌کند. فهرست گواهینامه‌های مورد استفاده برای اعتبارسنجی را می‌توان با --load-ca-certificate مشخص کرد. هنگامی که فهرست گواهینامه‌ای ارائه نشود، از فهرست گواهینامه‌های سیستم استفاده می‌شود. همچنین می‌توان یک امضاکننده مستقیم را با استفاده از --load-certificate ارائه کرد. هدف کلید را می‌توان با گزینه --verify-purpose اجباری کرد، و گزینه --load-data از داده‌های مجزا استفاده خواهد کرد.


تبدیل S/MIME به ساختار PKCS #7.


تولید پارامترهای دیفی-هلمن (Diffie-Hellman) با کدگذاری PKCS #3.

این گزینه پارامترهای تصادفی را برای استفاده در تبادل کلید دیفی-هلمن تولید می‌کند. پارامترهای خروجی در قالب PKCS #3 خواهند بود. توجه داشته باشید که توصیه می‌شود به جای آن از گزینه --get-dh-params استفاده شود.

نکته: این گزینه منسوخ شده است


فهرست کردن پارامترهای دیفی-هلمن پیش‌فرض کدگذاری‌شده با PKCS #3.

پارامترهای ذخیره‌شده DH در GnuTLS را برمی‌گرداند. این پارامترهای بازگشتی در RFC7919 تعریف شده‌اند و می‌توان آن‌ها را پارامترهای استاندارد برای تبادل کلید TLS در نظر گرفت. این گزینه برای برنامه‌های قدیمی که نیاز به مشخص کردن پارامترهای DH دارند ارائه شده است؛ برنامه‌های مدرن GnuTLS نباید به آن‌ها نیاز داشته باشند.


چاپ اطلاعات پارامترهای دیفی-هلمن با کدگذاری PKCS #3.

بارگذاری یک فایل کلید خصوصی.

این می‌تواند یک فایل یا یک نشانی اینترنتی (URL) از نوع PKCS #11 باشد.


بارگذاری یک فایل کلید عمومی.

این می‌تواند یک فایل یا یک نشانی اینترنتی (URL) از نوع PKCS #11 باشد.


بارگذاری یک فایل درخواست گواهینامه.

از این گزینه می‌توان همراه با یک فایل استفاده کرد.


بارگذاری یک فایل گواهینامه.

از این گزینه می‌توان همراه با یک فایل استفاده کرد.


بارگذاری فایل کلید خصوصی مرجع صدور گواهی (CA).

این می‌تواند یک فایل یا یک نشانی اینترنتی (URL) از نوع PKCS #11 باشد.


بارگذاری فایل گواهینامه مرجع صدور گواهی (CA).

این می‌تواند یک فایل یا یک نشانی اینترنتی (URL) از نوع PKCS #11 باشد.


بارگذاری CRL ارائه‌شده.

از این گزینه می‌توان همراه با یک فایل استفاده کرد.


بارگذاری داده‌های کمکی.

از این گزینه می‌توان همراه با یک فایل استفاده کرد.


رمز عبور مورد استفاده.

می‌توانید از این گزینه برای مشخص کردن رمز عبور در خط فرمان به جای خواندن آن از tty استفاده کنید. توجه داشته باشید که آرگومان‌های خط فرمان برای سایر افراد حاضر در سیستم قابل مشاهده هستند. مشخص کردن رمز عبور به عنوان '' همانند مشخص نکردن هیچ رمزی است.


اجبار استفاده از رمز عبور NULL.

این گزینه استفاده از رمز عبور NULL را اجباری می‌کند. این با رمز خالی یا بدون رمز عبور در طرح‌واره‌هایی مانند PKCS #8 تفاوت دارد.


اجبار استفاده از رمز عبور خالی (empty).

این گزینه استفاده از رمز عبور خالی را اجباری می‌کند. این با رمز عبور NULL یا بدون رمز در طرح‌واره‌هایی مانند PKCS #8 تفاوت دارد.


چاپ اعداد بزرگ در قالبی که تجزیه آن آسان‌تر باشد.

در برخی عملیات‌ها اطلاعات را در قالبی مناسب زبان C چاپ می‌کند.

در برخی عملیات‌ها اطلاعات را در قالبی مناسب زبان C چاپ می‌کند که برای گنجاندن در برنامه‌های C مناسب است.


تولید کلید RSA.

هنگام ترکیب با --generate-privkey یک کلید خصوصی RSA تولید می‌کند.

نکته: این گزینه منسوخ شده است


تولید کلید DSA.

هنگام ترکیب با --generate-privkey یک کلید خصوصی DSA تولید می‌کند.

نکته: این گزینه منسوخ شده است


تولید کلید ECC (ECDSA).

هنگام ترکیب با --generate-privkey یک کلید خصوصی منحنی بیضوی تولید می‌کند تا با ECDSA استفاده شود.

نکته: این گزینه منسوخ شده است


این یک نام مستعار برای گزینه --ecc است.

نکته: این گزینه منسوخ شده است


الگوریتم درهم‌سازی (هش) مورد استفاده برای امضا.

توابع هش در دسترس عبارتند از SHA1، RMD160، SHA256، SHA384، SHA512، SHA3-224، SHA3-256، SHA3-384، SHA3-512.


مشخص کردن اندازه نمک (salt) پیش‌فرض برای کلید RSA-PSS. این گزینه یک عدد صحیح را به عنوان آرگومان دریافت می‌کند.

کلیدهای معمولی نباید این گزینه را تنظیم یا محدود کنند.


مشخص کردن برچسب RSA-OAEP با کدگذاری هگزادسیمال.

کلیدهای معمولی نباید این گزینه را تنظیم یا محدود کنند.


استفاده از قالب DER برای گواهینامه‌ها، کلیدهای خصوصی و پارامترهای DH ورودی. حالت no-inder این گزینه را غیرفعال می‌کند.

فرض خواهد شد که فایل‌های ورودی در قالب DER یا RAW هستند. برخلاف گزینه‌هایی که در ورودی PEM اجازه ورود چندین داده (مانند چندین گواهینامه) را می‌دهند، هنگام خواندن در قالب DER یک ساختار داده منفرد خوانده می‌شود.


این یک نام مستعار برای گزینه --inder است.

استفاده از قالب DER برای گواهینامه‌ها، کلیدهای خصوصی و پارامترهای DH خروجی. حالت no-outder این گزینه را غیرفعال می‌کند.

خروجی در قالب DER یا RAW خواهد بود.


این یک نام مستعار برای گزینه --outder است.

بدون اثر.

نکته: این گزینه منسوخ شده است


فایل الگو برای استفاده در عملیات غیرتعاملی.

چاپ اطلاعات در خروجی استاندارد (stdout) به‌جای خطای استاندارد (stderr).

فعال‌سازی تعامل برای وارد کردن رمز عبور در حالت دسته‌ای (batch).

این گزینه تعامل برای وارد کردن رمز عبور را در حالت دسته‌ای فعال می‌کند. این قابلیت زمانی که گزینه template مشخص شده باشد مفید است.


رمز متقارن مورد استفاده برای عملیات‌های PKCS #8 و #12.

رمز می‌تواند یکی از موارد 3des، 3des-pkcs12، aes-128، aes-192، aes-256، rc2-40، arcfour باشد.


مشخص کردن کتابخانه ارائه‌دهنده PKCS #11.

این گزینه تنظیمات پیش‌فرض در /etc/gnutls/pkcs11.conf را بازنویسی می‌کند.


خروجی دادن اطلاعات متنی قبل از گواهینامه‌ها، کلیدهای خصوصی و غیره با کدگذاری PEM. حالت no-text این گزینه را غیرفعال می‌کند. این گزینه به‌طور پیش‌فرض فعال است.

خروجی دادن اطلاعات متنی پیش از داده‌های کدگذاری‌شده با PEM


نمایش نسخه برنامه و خروج. حالت پیش‌فرض 'v' است که نسخه ساده را نمایش می‌دهد. حالت 'c' اطلاعات حق نشر را چاپ می‌کند و 'n' اطلاعیه کامل حق نشر را چاپ می‌کند.

نمایش اطلاعات نحوه استفاده و خروج.
-!, --more-help

ارسال اطلاعات گسترده نحوه استفاده به یک صفحه‌بندی‌کننده (pager).

قالب فایل الگوی Certtool
می‌توان از یک فایل الگو برای جلوگیری از سوالات تعاملی certtool استفاده کرد. در ابتدا فایلی با نام 'cert.cfg' ایجاد کنید که حاوی اطلاعات گواهینامه باشد. این الگو می‌تواند به‌صورت زیر استفاده شود:


$ certtool --generate-certificate --load-privkey key.pem     --template cert.cfg --outfile cert.pem    --load-ca-certificate ca-cert.pem --load-ca-privkey ca-key.pem

در ادامه نمونه‌ای از فایل الگوی certtool آمده است که می‌تواند برای تولید یک درخواست گواهینامه یا یک گواهینامه خودامضا استفاده شود.


# X.509 Certificate options
#
# گزینه‌های DN

# سازمان سوژه (صاحب گواهینامه).
organization = "Koko inc."

# واحد سازمانی سوژه.
unit = "sleeping dept."

# شهر / محل سوژه.
# locality =

# استان / ایالت دارنده گواهینامه.
state = "Attiki"

# کشور سوژه (کد دوحرفی).
country = GR

# نام مشترک (CN) دارنده گواهینامه.
cn = "Cindy Lauper"

# شناسه کاربری دارنده گواهینامه.
#uid = "clauper"

# تنظیم مؤلفه‌های دامنه
#dc = "name"
#dc = "domain"

# در صورتی که OIDهای پشتیبانی‌شده DN کافی نباشند،
# می‌توانید هر OIDای را در اینجا تنظیم کنید.
# برای نمونه تنظیم عنوان X.520 و نام مستعار X.520
# با استفاده از جفت‌های OID و رشته.
#dn_oid = "2.5.4.12 Dr."
#dn_oid = "2.5.4.65 jackal"

# این گزینه منسوخ شده و نباید در گواهینامه‌های جدید
# استفاده شود.
# pkcs9_email = "none@none.org"

# روش جایگزین برای تنظیم مستقیم نام مشخصه (DN) گواهینامه
# با گزینه "dn" است. نام ویژگی‌های مجاز عبارتند از:
# C (کشور)، street، O (سازمان)، OU (واحد سازمانی)، title، CN (نام مشترک)،
# L (محل/شهر)، ST (استان)، placeOfBirth، gender، countryOfCitizenship، 
# countryOfResidence، serialNumber، telephoneNumber، surName، initials، 
# generationQualifier، givenName، pseudonym، dnQualifier، postalCode، name، 
# businessCategory، DC، UID، jurisdictionOfIncorporationLocalityName، 
# jurisdictionOfIncorporationStateOrProvinceName،
# jurisdictionOfIncorporationCountryName، XmppAddr و OIDهای عددی.

#dn = "cn = Nikos,st = New Something,C=GR,surName=Mavrogiannopoulos,2.5.4.9=Arkadias"

# شماره سریال گواهینامه
# این مقدار در مبنای ده (مانند 1963) یا هگز (مانند 0x07ab) است.
# برای یک شماره سریال تصادفی، این فیلد را کامنت کنید.
serial = 007

# تعداد روزهایی که از امروز تا انقضای این گواهینامه باقی مانده است.
# در صورتی که تاریخ انقضا وجود ندارد از -1 استفاده کنید.
expiration_days = 700

# همچنین می‌توانید تاریخ و زمان مشخصی را تعیین کنید. قالب‌های رشته تاریخ GNU
# پذیرفته می‌شوند. ببینید:
# https://www.gnu.org/software/tar/manual/html_node/Date-input-formats.html

#activation_date = "2004-02-29 16:21:42"
#expiration_date = "2025-02-29 16:24:41"

# افزونه‌های X.509 v3

# نام دامنه (dnsname) در صورت سرور وب.
#dns_name = "www.none.org"
#dns_name = "www.morethanone.org"

# یک othername تعریف‌شده با OID و یک رشته با کدگذاری هگزادسیمال
#other_name = "1.3.6.1.5.2.2 302ca00d1b0b56414e5245494e2e4f5247a11b3019a006020400000002a10f300d1b047269636b1b0561646d696e"
#other_name_utf8 = "1.2.4.5.6 A UTF8 string"
#other_name_octet = "1.2.4.5.6 A string that will be encoded as ASN.1 octet string"

# امکان نوشتن یک شناسه XmppAddr را فراهم می‌کند
#xmpp_name = juliet@im.example.com

# نام‌های مورد استفاده در PKINIT
#krb5_principal = user@REALM.COM
#krb5_principal = HTTP/user@REALM.COM

# یک URI از نوع نام جایگزین موضوع (SAN)
#uri = "https://www.example.com"

# یک نشانی IP در صورت سرور بودن.
#ip_address = "192.168.1.1"

# یک نشانی ایمیل در صورت شخص بودن
email = "none@none.org"

# افزونه قابلیت‌های TLS (rfc7633). این می‌تواند برای تعیین ویژگی‌های افزونه
# الزامی TLS که باید توسط سرور ارائه شوند استفاده شود. در عمل از این افزونه
# برای الزام افزونه Status Request (extid: 5) از سرور استفاده می‌شود؛
# یعنی ملزم کردن سرور دارای این گواهینامه به ارائه یک پاسخ OCSP منگنه‌شده (stapled).
# می‌توانید چندین خط برای چندین قابلیت TLS داشته باشید.

# برای درخواست وضعیت OCSP از این خط استفاده کنید:
#tls_feature = 5

# رمز عبور چالش (challenge password) مورد استفاده در درخواست‌های گواهینامه
challenge_password = 123456

# رمز عبور هنگام رمزگذاری یک کلید خصوصی
#password = secret

# یک URL که CRLها (فهرست‌های ابطال گواهینامه) در آن در دسترس است.
# مورد نیاز در گواهینامه‌های CA.
#crl_dist_points = "https://www.getcrl.crl/getcrl"

# این‌که آیا این یک گواهینامه CA است یا خیر
#ca

# شناسه یکتای سوژه (در قالب هگز)
#subject_unique_id = 00153224

# شناسه یکتای صادرکننده (در قالب هگز)
#issuer_unique_id = 00153225

#### کاربرد کلید (Key usage)

# پرچم‌های کاربرد کلید زیر توسط CAها و گواهینامه‌های نهایی استفاده می‌شوند

# این‌که آیا این گواهینامه برای امضای داده‌ها استفاده خواهد شد یا خیر
# (مورد نیاز در مجموعه‌رمزهای TLS DHE). این پرچم digitalSignature
# در اصطلاحات RFC5280 است.
signing_key

# این‌که آیا این گواهینامه برای رمزگذاری داده‌ها استفاده خواهد شد یا خیر
# (مورد نیاز در مجموعه‌رمزهای TLS RSA). توجه داشته باشید که بهتر است از کلیدهای
# متفاوتی برای رمزگذاری و امضا استفاده شود. این پرچم keyEncipherment
# در اصطلاحات RFC5280 است.
encryption_key

# این‌که آیا این کلید برای امضای گواهینامه‌های دیگر استفاده خواهد شد یا خیر.
# پرچم keyCertSign در اصطلاحات RFC5280.
#cert_signing_key

# این‌که آیا این کلید برای امضای CRLها استفاده خواهد شد یا خیر.
# پرچم cRLSign در اصطلاحات RFC5280.
#crl_signing_key

# پرچم keyAgreement در RFC5280. هدف آن به‌طور تقریبی تعریف شده است.
# از آن استفاده نکنید مگر این‌که توسط پروتکلی الزامی باشد.
#key_agreement

# پرچم dataEncipherment در RFC5280. هدف آن به‌طور تقریبی تعریف شده است.
# از آن استفاده نکنید مگر این‌که توسط پروتکلی الزامی باشد.
#data_encipherment

# پرچم nonRepudiation در RFC5280. هدف آن به‌طور تقریبی تعریف شده است.
# از آن استفاده نکنید مگر این‌که توسط پروتکلی الزامی باشد.
#non_repudiation

#### کاربرد گسترده کلید (اهداف کلید)

# افزونه‌های زیر در یک گواهینامه نهایی برای روشن کردن هدف آن استفاده می‌شوند.
# برخی از CAها نیز از آن برای نشان دادن انواع گواهینامه‌هایی که مجاز به امضای آن‌ها هستند استفاده می‌کنند.


# این‌که آیا این گواهینامه برای کلاینت TLS استفاده خواهد شد یا خیر؛
# این گزینه شناسه id-kp-clientAuth (1.3.6.1.5.5.7.3.2) را در
# کاربرد گسترده کلید تنظیم می‌کند.
#tls_www_client

# این‌که آیا این گواهینامه برای سرور TLS استفاده خواهد شد یا خیر؛
# این گزینه شناسه id-kp-serverAuth (1.3.6.1.5.5.7.3.1) را در
# کاربرد گسترده کلید تنظیم می‌کند.
#tls_www_server

# این‌که آیا این کلید برای امضای کد استفاده خواهد شد یا خیر. این گزینه شناسه
# id-kp-codeSigning (1.3.6.1.5.5.7.3.3) افزونه کاربرد گسترده کلید
# را تنظیم می‌کند.
#code_signing_key

# این‌که آیا این کلید برای امضای داده‌های OCSP استفاده خواهد شد یا خیر. این گزینه شناسه
# id-kp-OCSPSigning (1.3.6.1.5.5.7.3.9) افزونه کاربرد گسترده کلید را تنظیم می‌کند.
#ocsp_signing_key

# این‌که آیا این کلید برای ثبت برچسب زمانی استفاده خواهد شد یا خیر. این گزینه شناسه
# id-kp-timeStamping (1.3.6.1.5.5.7.3.8) افزونه کاربرد گسترده کلید را تنظیم می‌کند.
#time_stamping_key

# این‌که آیا این کلید برای حفاظت از ایمیل استفاده خواهد شد یا خیر. این گزینه شناسه
# id-kp-emailProtection (1.3.6.1.5.5.7.3.4) افزونه کاربرد گسترده کلید را تنظیم می‌کند.
#email_protection_key

# این‌که آیا این کلید برای عملیات‌های IPsec IKE استفاده خواهد شد یا خیر (1.3.6.1.5.5.7.3.17).
#ipsec_ike_key

## افزودن OIDهای هدف کلید سفارشی

# برای ورود به سیستم با کارت هوشمند مایکروسافت
# key_purpose_oid = 1.3.6.1.4.1.311.20.2.2

# برای حفاظت از ایمیل
# key_purpose_oid = 1.3.6.1.5.5.7.3.4

# برای هر هدفی (نباید در گواهینامه‌های CA میانی استفاده شود)
# key_purpose_oid = 2.5.29.37.0

### پایان OIDهای هدف کلید

### افزودن افزونه‌های دلخواه
# این کار مستلزم ارائه OIDهای افزونه و همچنین داده‌های افزونه در
# قالب هگز است. دو گزینه زیر از نسخه GnuTLS 3.5.3 در دسترس هستند.
#add_extension = "1.2.3.4 0x0AAB01ACFE"

# مانند بالا اما داده‌ها را به عنوان یک رشته هشت‌بیتی (octet string) کدگذاری کنید
#add_extension = "1.2.3.4 octet_string(0x0AAB01ACFE)"

# برای سازگاری، افزونه‌های بحرانی نباید برای گواهینامه‌ها تنظیم شوند.
#add_critical_extension = "5.6.7.8 0x1AAB01ACFE"

# هنگام تولید گواهینامه از روی درخواست گواهینامه، افزونه‌های ذخیره‌شده
# در درخواست را رعایت کرده و آن‌ها را در گواهینامه واقعی ذخیره کنید.
#honor_crq_extensions

# به عنوان روش جایگزین، تنها افزونه‌های مشخصی را می‌توان کپی کرد.
#honor_crq_ext = 2.5.29.17
#honor_crq_ext = 2.5.29.15

# محدودیت طول مسیر. حداکثر تعداد گواهینامه‌هایی را تعیین می‌کند که
# می‌توانند برای صدور این گواهینامه استفاده شوند.
# (یعنی طول زنجیره گواهینامه)
#path_len = -1
#path_len = 2

# نشانی URI سرور OCSP
# ocsp_uri = https://my.ocsp.server/ocsp

# نشانی URI صادرکنندگان CA
# ca_issuers_uri = https://my.ca.issuer

# خط‌مشی‌های گواهینامه (Certificate policies)
#policy1 = 1.3.6.1.4.1.5484.1.10.99.1.0
#policy1_txt = "This is a long policy to summarize"
#policy1_url = https://www.example.com/a-policy-to-read

#policy2 = 1.3.6.1.4.1.5484.1.10.99.1.1
#policy2_txt = "This is a short policy"
#policy2_url = https://www.example.com/another-policy-to-read

# تعداد گواهینامه‌های اضافی که ممکن است قبل از غیرقابل‌قبول شدن
# anyPolicy در یک مسیر ظاهر شوند.
#inhibit_anypolicy_skip_certs 1

# محدودیت‌های نام (Name constraints)

# DNS
#nc_permit_dns = example.com
#nc_exclude_dns = test.example.com

# EMAIL
#nc_permit_email = "nmav@ex.net"

# رد زیردامنه‌های example.com
#nc_exclude_email = .example.com

# رد تمام آدرس‌های ایمیل example.com
#nc_exclude_email = example.com

# IP
#nc_permit_ip = 192.168.0.0/16
#nc_exclude_ip = 192.168.5.0/24
#nc_permit_ip = fc0a:eef2:e7e7:a56e::/64


# گزینه‌های مربوط به گواهینامه‌های پروکسی
#proxy_policy_language = 1.3.6.1.5.5.7.21.1


# گزینه‌های مربوط به تولید CRL

# تعداد روزهایی که تا به‌روزرسانی بعدی CRL باقی مانده است.
# به‌روزرسانی بعدی CRL در 43 روز آینده خواهد بود
#crl_next_update = 43

# این پنجمین CRL توسط این CA است
# مقدار به‌صورت ده‌دهی (مانند 1963) یا هگز (مانند 0x07ab) است.
# برای یک شماره مبتنی بر زمان، این فیلد را کامنت کنید.
# شماره‌های مبتنی بر زمان CRL تولیدشده در GnuTLS 3.6.3 و بالاتر
# به‌طور قابل‌توجهی بزرگتر از شماره‌های تولیدشده در نسخه‌های قبلی هستند.
# از آنجا که شماره‌های CRL باید یکنواخت صعودی باشند،
# اگر قصد دارید پس از انتشار CRL به نسخه‌ای قدیمی‌تر از 3.6.3 برگردید،
# باید شماره CRL را به‌صورت دستی در اینجا تعیین کنید زیرا در آن نسخه‌ها
# مشخص کردن شماره‌های CRL بزرگتر از 2**63-2 با استفاده از نشانه‌گذاری هگز امکان‌پذیر نیست.
#crl_number = 5

# تاریخ‌های به‌روزرسانی را با دقت بیشتری مشخص کنید.
#crl_this_update_date = "2004-02-29 16:21:42"
#crl_next_update_date = "2025-02-29 16:24:41"

# تاریخی که گواهینامه‌ها به عنوان باطل‌شده دیده خواهند شد.
#crl_revocation_date = "2025-02-29 16:24:41"


تولید کلیدهای خصوصی
برای ایجاد یک کلید خصوصی RSA، دستور زیر را اجرا کنید:

$ certtool --generate-privkey --outfile key.pem --rsa

برای ایجاد یک کلید خصوصی DSA یا منحنی‌های بیضوی (ECDSA) از دستور فوق در ترکیب با گزینه‌های 'dsa' یا 'ecc' استفاده کنید.

تولید درخواست‌های گواهینامه
برای ایجاد یک درخواست گواهینامه (زمانی که گواهینامه توسط نهاد دیگری صادر می‌شود نیاز است)، دستور زیر را اجرا کنید:

certtool --generate-request --load-privkey key.pem    --outfile request.pem

اگر کلید خصوصی در یک کارت هوشمند ذخیره شده باشد، می‌توانید با مشخص کردن URL شیء کلید خصوصی، یک درخواست تولید کنید:

$ ./certtool --generate-request --load-privkey "pkcs11:..."   --load-pubkey "pkcs11:..." --outfile request.pem

تولید یک گواهینامه خودامضا
برای ایجاد یک گواهینامه خودامضا، از دستور زیر استفاده کنید:

$ certtool --generate-privkey --outfile ca-key.pem
$ certtool --generate-self-signed --load-privkey ca-key.pem    --outfile ca-cert.pem

توجه داشته باشید که یک گواهینامه خودامضا معمولاً متعلق به یک مرجع صدور گواهی (CA) است که گواهینامه‌های دیگر را امضا می‌کند.

تولید یک گواهینامه
برای تولید یک گواهینامه با استفاده از درخواست قبلی، از دستور زیر استفاده کنید:

$ certtool --generate-certificate --load-request request.pem    --outfile cert.pem --load-ca-certificate ca-cert.pem    --load-ca-privkey ca-key.pem

برای تولید یک گواهینامه تنها با استفاده از کلید خصوصی، از دستور زیر استفاده کنید:

$ certtool --generate-certificate --load-privkey key.pem    --outfile cert.pem --load-ca-certificate ca-cert.pem    --load-ca-privkey ca-key.pem

اطلاعات گواهینامه
برای مشاهده اطلاعات گواهینامه، از دستور زیر استفاده کنید:

$ certtool --certificate-info --infile cert.pem

تغییر قالب گواهینامه
برای تبدیل گواهینامه از قالب PEM به قالب DER، از دستور زیر استفاده کنید:

$ certtool --certificate-info --infile cert.pem --outder --outfile cert.der

تولید ساختار PKCS #12
برای تولید یک ساختار PKCS #12 با استفاده از کلید و گواهینامه قبلی، از دستور زیر استفاده کنید:

$ certtool --load-certificate cert.pem --load-privkey key.pem    --to-p12 --outder --outfile key.p12

برخی ابزارها (طبق گزارش‌ها مرورگرهای وب) با این فایل مشکل دارند زیرا فاقد گواهینامه CA مربوط به آن گواهینامه است. برای رفع این مشکل در آن ابزارها، می‌توانید پارامتر --load-ca-certificate را به‌صورت زیر استفاده کنید:


$ certtool --load-ca-certificate ca.pem   --load-certificate cert.pem --load-privkey key.pem   --to-p12 --outder --outfile key.p12

دریافت پارامترهای دیفی-هلمن
برای به دست آوردن پارامترهای RFC7919 برای تبادل کلید دیفی-هلمن، از دستور زیر استفاده کنید:

$ certtool --get-dh-params --outfile dh.pem --sec-param medium

اعتبارسنجی یک گواهینامه
برای اعتبارسنجی یک گواهینامه موجود در یک فایل در برابر مخزن اعتماد CA سیستم، از دستور زیر استفاده کنید:

$ certtool --verify --infile cert.pem

همچنین امکان شبیه‌سازی اعتبارسنجی نام میزبان با گزینه‌های زیر وجود دارد:

$ certtool --verify --verify-hostname www.example.com --infile cert.pem

تولید گواهینامه پروکسی
گواهینامه پروکسی را می‌توان برای واگذاری اعتبارنامه خود به یک گواهینامه موقت، معمولاً کوتاه‌مدت، استفاده کرد. برای ایجاد یکی از روی گواهینامه‌ای که پیش‌تر ایجاد شده، ابتدا یک کلید موقت بسازید و سپس با دستورات زیر یک گواهینامه پروکسی برای آن تولید کنید:


$ certtool --generate-privkey > proxy-key.pem
$ certtool --generate-proxy --load-ca-privkey key.pem   --load-privkey proxy-key.pem --load-certificate cert.pem   --outfile proxy-cert.pem

تولید فهرست ابطال گواهینامه (CRL)
برای ایجاد یک فهرست ابطال گواهینامه (CRL) خالی، دستور زیر را اجرا کنید:


$ certtool --generate-crl --load-ca-privkey x509-ca-key.pem            --load-ca-certificate x509-ca.pem

برای ایجاد یک CRL حاوی برخی گواهینامه‌های باطل‌شده، گواهینامه‌ها را در یک فایل قرار دهید و از --load-certificate به‌صورت زیر استفاده کنید:


$ certtool --generate-crl --load-ca-privkey x509-ca-key.pem   --load-ca-certificate x509-ca.pem --load-certificate revoked-certs.pem

برای اعتبارسنجی یک فهرست ابطال گواهینامه (CRL)، دستور زیر را اجرا کنید:


$ certtool --verify-crl --load-ca-certificate x509-ca.pem < crl.pem

یکی از مقادیر خروج زیر بازگردانده خواهد شد:

0 (EXIT_SUCCESS)

اجرای موفق برنامه.
1 (EXIT_FAILURE)

عملیات ناموفق بود یا نحو دستور معتبر نبود.

p11tool(1)، psktool(1)، srptool(1)

بنیاد نرم‌افزار آزاد و دیگر مشارکت‌کنندگان GnuTLS.

حق نشر © 2020-2023 Free Software Foundation و دیگران. تمامی حقوق محفوظ است.
این برنامه تحت شرایط مجوز عمومی همگانی گنو (GNU General Public License)، نسخه ۳ یا جدیدتر منتشر شده است.

لطفاً گزارش‌های اشکال را به نشانی bugs@gnutls.org ارسال کنید.

29 Apr 2026 3.8.13