'\" t .\" Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved. .\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. .\" .\" This code is free software; you can redistribute it and/or modify it .\" under the terms of the GNU General Public License version 2 only, as .\" published by the Free Software Foundation. .\" .\" This code is distributed in the hope that it will be useful, but WITHOUT .\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or .\" FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License .\" version 2 for more details (a copy is included in the LICENSE file that .\" accompanied this code). .\" .\" You should have received a copy of the GNU General Public License version .\" 2 along with this work; if not, write to the Free Software Foundation, .\" Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. .\" .\" Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA .\" or visit www.oracle.com if you need additional information or have any .\" questions. .\" .\" Arch: generic .\" Software: JDK 8 .\" Date: 03 March 2015 .\" SectDesc: Security Tools .\" Title: keytool.1 .\" .if n .pl 99999 .TH keytool 1 "03 March 2015" "JDK 8" "ابزارهای امنیتی" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "نام (NAME)" keytool \- مدیریت انبار کلید (پایگاه‌داده) کلیدهای رمزنگاری، زنجیره‌های گواهی X\&.509 و گواهی‌های مورد اعتماد .SH "خلاصه دستور (SYNOPSIS)" .sp .nf \fBkeytool\fR [\fIدستورات\fR] .fi .sp .TP \fIدستورات\fR بخش دستورات را ببینید\&. این دستورات بر اساس وظیفه به شرح زیر دسته‌بندی شده‌اند: .RS .TP 0.2i \(bu ایجاد یا افزودن داده به انبار کلید .RS .TP 0.2i \(bu -gencert .TP 0.2i \(bu -genkeypair .TP 0.2i \(bu -genseckey .TP 0.2i \(bu -importcert .TP 0.2i \(bu -importpassword .RE .TP 0.2i \(bu وارد کردن محتوا از یک انبار کلید دیگر .RS .TP 0.2i \(bu -importkeystore .RE .TP 0.2i \(bu تولید درخواست گواهی .RS .TP 0.2i \(bu -certreq .RE .TP 0.2i \(bu صدور داده .RS .TP 0.2i \(bu -exportcert .RE .TP 0.2i \(bu نمایش داده‌ها .RS .TP 0.2i \(bu -list .TP 0.2i \(bu -printcert .TP 0.2i \(bu -printcertreq .TP 0.2i \(bu -printcrl .RE .TP 0.2i \(bu مدیریت انبار کلید .RS .TP 0.2i \(bu -storepasswd .TP 0.2i \(bu -keypasswd .TP 0.2i \(bu -delete .TP 0.2i \(bu -changealias .RE .TP 0.2i \(bu دریافت راهنما .RS .TP 0.2i \(bu -help .RE .RE .SH "توضیحات (DESCRIPTION)" دستور \f3keytool\fR ابزاری برای مدیریت کلید و گواهی است\&. این ابزار به کاربران امکان می‌دهد جفت‌کلیدهای عمومی/خصوصی و گواهی‌های مرتبط خود را برای خوداحراز‌هویت (جایی که کاربر خود را به سایر کاربران و سرویس‌ها احراز هویت می‌کند) یا خدمات یکپارچگی داده و احراز هویت با استفاده از امضاهای دیجیتال مدیریت کنند\&. دستور \f3keytool\fR همچنین به کاربران اجازه می‌دهد کلیدهای عمومی طرف‌های ارتباطی خود را (در قالب گواهی‌ها) ذخیره موقت (کش) کنند\&. .PP یک گواهی، بیانیه‌ای با امضای دیجیتال از سوی یک هویت (شخص، شرکت و غیره) است که بیان می‌کند کلید عمومی (و برخی اطلاعات دیگر) هویتی دیگر دارای مقداری مشخص است\&. (بخش گواهی را ببینید\&.) هنگامی که داده‌ها به صورت دیجیتال امضا می‌شوند، امضا می‌تواند برای بررسی یکپارچگی داده و اصالت آن اعتبارسنجی شود\&. یکپارچگی به این معناست که داده‌ها دستکاری یا اصلاح نشده‌اند، و اصالت به این معناست که داده‌ها از سوی همان فردی آمده که ادعای ایجاد و امضای آن را دارد\&. .PP دستور \f3keytool\fR همچنین به کاربران امکان می‌دهد کلیدهای مخفی و عبارت‌های عبور مورد استفاده در رمزنگاری و رمزگشایی متقارن (DES) را مدیریت نمایند\&. .PP دستور \f3keytool\fR کلیدها و گواهی‌ها را در یک انبار کلید (keystore) ذخیره می‌کند\&. نام‌های مستعار انبار کلید را ببینید\&. .SH "نکات مربوط به دستورات و گزینه‌ها (COMMAND AND OPTION NOTES)" برای فهرست و شرح دستورات مختلف به بخش دستورات مراجعه کنید\&. .TP 0.2i \(bu نام تمام دستورات و گزینه‌ها با یک علامت خط تیره (-) آغاز می‌شود\&. .TP 0.2i \(bu گزینه‌های هر دستور را می‌توان به هر ترتیبی ارائه داد\&. .TP 0.2i \(bu تمام مواردی که مورب نبوده یا داخل آکولاد یا قلاب قرار ندارند، باید دقیقاً به همان صورت درج شوند\&. .TP 0.2i \(bu آکولادها در اطراف یک گزینه نشان‌دهنده آن است که در صورت عدم تعیین گزینه در خط فرمان، از یک مقدار پیش‌فرض استفاده خواهد شد\&. بخش مقادیر پیش‌فرض گزینه‌ها را ببینید\&. همچنین در اطراف گزینه‌های \f3-v\fR، \f3-rfc\fR و \f3-J\fR از آکولاد استفاده شده که تنها هنگام حضور در خط فرمان معنا دارند\&. آن‌ها مقدار پیش‌فرضی جز عدم وجود ندارند\&. .TP 0.2i \(bu قلاب‌ها در اطراف یک گزینه نشان‌دهنده آن است که اگر گزینه در خط فرمان مشخص نشود، از کاربر برای مقدار آن سوال خواهد شد\&. برای گزینه \f3-keypass\fR، اگر گزینه را در خط فرمان مشخص نکنید، دستور \f3keytool\fR ابتدا تلاش می‌کند از گذرواژه انبار کلید برای بازیابی کلید خصوصی/مخفی استفاده کند\&. اگر این تلاش ناموفق باشد، دستور \f3keytool\fR گذرواژه کلید خصوصی/مخفی را از شما درخواست می‌کند\&. .TP 0.2i \(bu موارد مورب (مقادیر گزینه‌ها) نشان‌دهنده مقادیر واقعی هستند که باید فراهم شوند\&. برای نمونه، قالب دستور \f3-printcert\fR به این صورت است: .sp .nf \f3keytool \-printcert {\-file \fIcert_file\fR} {\-v}\fP .fi .sp هنگامی که دستور \f3-printcert\fR را مشخص می‌کنید، \fIcert_file\fR را با نام فایل واقعی جایگزین کنید، مانند: \f3keytool -printcert -file VScert\&.cer\fR .TP 0.2i \(bu مقادیر گزینه‌ها در صورتی که حاوی فاصله (space) باشند، باید داخل علامت نقل‌قول (کوتیشن) قرار گیرند\&. .TP 0.2i \(bu گزینه \f3-help\fR پیش‌فرض است\&. دستور \f3keytool\fR به تنهایی همانند \f3keytool -help\fR عمل می‌کند\&. .SH "مقادیر پیش‌فرض گزینه‌ها (OPTION DEFAULTS)" مثال‌های زیر پیش‌فرض‌های مقادیر گزینه‌های مختلف را نشان می‌دهند\&. .sp .nf \f3\-alias "mykey"\fP .fi .nf \f3\fP .fi .nf \f3\-keyalg\fP .fi .nf \f3 "DSA" (هنگام استفاده از \-genkeypair)\fP .fi .nf \f3 "DES" (هنگام استفاده از \-genseckey)\fP .fi .nf \f3\fP .fi .nf \f3\-keysize\fP .fi .nf \f3 2048 (هنگام استفاده از \-genkeypair و مقدار "RSA" برای \-keyalg)\fP .fi .nf \f3 1024 (هنگام استفاده از \-genkeypair و مقدار "DSA" برای \-keyalg)\fP .fi .nf \f3 256 (هنگام استفاده از \-genkeypair و مقدار "EC" برای \-keyalg)\fP .fi .nf \f3 56 (هنگام استفاده از \-genseckey و مقدار "DES" برای \-keyalg)\fP .fi .nf \f3 168 (هنگام استفاده از \-genseckey و مقدار "DESede" برای \-keyalg)\fP .fi .nf \f3\fP .fi .nf \f3\-validity 90\fP .fi .nf \f3\fP .fi .nf \f3\-keystore <فایل به نام \&.keystore در دایرکتوری خانگی کاربر>\fP .fi .nf \f3\fP .fi .nf \f3\-storetype <مقدار مشخصه "keystore\&.type" در\fP .fi .nf \f3 فایل مشخصه‌های امنیتی، که توسط متد ایستا\fP .fi .nf \f3 getDefaultType در java\&.security\&.KeyStore برگردانده می‌شود>\fP .fi .nf \f3\fP .fi .nf \f3\-file\fP .fi .nf \f3 stdin (در صورت خواندن)\fP .fi .nf \f3 stdout (در صورت نوشتن)\fP .fi .nf \f3\fP .fi .nf \f3\-protected false\fP .fi .nf \f3\fP .fi .sp در تولید یک جفت‌کلید عمومی/خصوصی، الگوریتم امضا (گزینه \f3-sigalg\fR) از الگوریتم کلید خصوصی زیربنایی مشتق می‌شود: .TP 0.2i \(bu اگر کلید خصوصی زیربنایی از نوع DSA باشد، گزینه \f3-sigalg\fR به طور پیش‌فرض روی SHA1withDSA تنظیم می‌شود\&. .TP 0.2i \(bu اگر کلید خصوصی زیربنایی از نوع RSA باشد، گزینه \f3-sigalg\fR به طور پیش‌فرض روی SHA256withRSA تنظیم می‌شود\&. .TP 0.2i \(bu اگر کلید خصوصی زیربنایی از نوع EC باشد، گزینه \f3-sigalg\fR به طور پیش‌فرض روی SHA256withECDSA تنظیم می‌شود\&. .PP برای مشاهده فهرست کامل آرگومان‌های \f3-keyalg\fR و \f3-sigalg\fR، راهنمای مرجع معماری رمزنگاری جاوا (JCA) را در نشانی زیر ببینید: http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/security/crypto/CryptoSpec\&.html#AppA .SH "گزینه‌های عمومی (COMMON OPTIONS)" گزینه \f3-v\fR می‌تواند برای تمام دستورات به جز \f3-help\fR استفاده شود\&. هنگامی که گزینه \f3-v\fR درج می‌شود، نشان‌دهنده حالت پرگو (verbose) است، به این معنی که اطلاعات بیشتری در خروجی ارائه می‌گردد\&. .PP همچنین یک آرگومان \f3-Jjavaoption\fR وجود دارد که می‌تواند برای هر دستوری استفاده شود\&. هنگامی که \f3-Jjavaoption\fR درج می‌شود، رشته \f3javaoption\fR مشخص‌شده مستقیماً به مفسر جاوا ارسال می‌گردد\&. این گزینه نباید حاوی هیچ فاصله‌ای باشد\&. برای تنظیم محیط اجرا یا مصرف حافظه کاربرد دارد\&. برای مشاهده فهرستی از گزینه‌های ممکن مفسر، دستور \f3java -h\fR یا \f3java -X\fR را در خط فرمان وارد کنید\&. .PP این گزینه‌ها می‌توانند برای تمامی دستوراتی که روی یک انبار کلید عمل می‌کنند درج شوند: .TP -storetype \fIstoretype\fR .br این توصیف‌کننده نوع انبار کلیدی را که باید نمونه‌سازی شود مشخص می‌کند\&. .TP -keystore \fIkeystore\fR .br محل قرارگیری انبار کلید\&. اگر از \f3storetype\fR نوع JKS استفاده شود و فایل انبار کلید هنوز وجود نداشته باشد، برخی دستورات \f3keytool\fR می‌توانند باعث ایجاد یک فایل انبار کلید جدید شوند\&. برای نمونه، اگر \f3keytool -genkeypair\fR فراخوانی شود و گزینه \f3-keystore\fR مشخص نشده باشد، فایل انبار کلید پیش‌فرض با نام \f3\&.keystore\fR در دایرکتوری خانگی کاربر در صورت عدم وجود ایجاد می‌شود\&. به طور مشابه، اگر گزینه \f3-keystore ks_file\fR مشخص شود اما ks_file وجود نداشته باشد، ایجاد خواهد شد\&. برای اطلاعات بیشتر در مورد \f3storetype\fR نوع JKS، بخش \fIپیاده‌سازی انبار کلید\fR در نام‌های مستعار انبار کلید را ببینید\&. توجه داشته باشید که جریان ورودی از گزینه \f3-keystore\fR به متد \f3KeyStore\&.load\fR ارسال می‌شود\&. اگر \f3NONE\fR به عنوان نشانی URL مشخص شود، یک جریان تهی (null) به متد \f3KeyStore\&.load\fR ارسال می‌گردد\&. در صورتی که انبار کلید مبتنی بر فایل نباشد، مانند زمانی که روی یک دستگاه توکن سخت‌افزاری قرار دارد، باید مقدار \f3NONE\fR مشخص شود\&. .TP -storepass[:\fIenv\fR| :\fIfile\fR] argument .br گذرواژه‌ای که برای محافظت از یکپارچگی انبار کلید استفاده می‌شود\&. اگر اصلاح‌کننده \f3env\fR یا \f3file\fR مشخص نشده باشد، گذرواژه دارای مقدار آرگومان \f3argument\fR خواهد بود که باید حداقل ۶ کاراکتر باشد\&. در غیر این صورت، گذرواژه به صورت زیر بازیابی می‌شود: .RS .TP 0.2i \(bu \f3env\fR: بازیابی گذرواژه از متغیر محیطی با نام \f3argument\fR\&. .TP 0.2i \(bu \f3file\fR: بازیابی گذرواژه از فایل با نام argument\&. .RE \fIنکته:\fR تمام گزینه‌های دیگری که نیازمند گذرواژه هستند، مانند \f3-keypass\fR، \f3-srckeypass\fR، \f3-destkeypass\fR، \f3-srcstorepass\fR و \f3-deststorepass\fR، اصلاح‌کننده‌های \fIenv\fR و \fIfile\fR را می‌پذیرند\&. به یاد داشته باشید که گزینه گذرواژه و اصلاح‌کننده را با یک دونقطه (:) جدا کنید\&. گذرواژه باید برای تمام دستوراتی که به محتویات انبار کلید دسترسی دارند فراهم شود\&. برای چنین دستوراتی، هنگامی که گزینه \f3-storepass\fR در خط فرمان ارائه نشود، از کاربر خواسته می‌شود آن را وارد کند\&. هنگام بازیابی اطلاعات از انبار کلید، گذرواژه اختیاری است\&. اگر گذرواژه‌ای مشخص نشود، یکپارچگی اطلاعات بازیابی‌شده قابل اعتبارسنجی نیست و هشداری نمایش داده می‌شود\&. .TP -providerName \fIprovider_name\fR .br برای شناسایی نام یک ارائه‌دهنده سرویس رمزنگاری هنگامی که در فایل مشخصه‌های امنیتی فهرست شده است استفاده می‌شود\&. .TP -providerClass \fIprovider_class_name\fR .br برای مشخص کردن نام فایل کلاس اصلی یک ارائه‌دهنده سرویس رمزنگاری هنگامی که ارائه‌دهنده در فایل مشخصه‌های امنیتی فهرست نشده است استفاده می‌شود\&. .TP -providerArg \fIprovider_arg\fR .br همراه با گزینه \f3-providerClass\fR برای نمایش یک آرگومان ورودی رشته‌ای اختیاری برای سازنده \f3provider_class_name\fR استفاده می‌شود\&. .TP -protected .br مقدار \f3true\fR یا \f3false\fR\&. این مقدار زمانی باید \f3true\fR مشخص شود که گذرواژه باید از طریق یک مسیر احراز هویت محافظت‌شده مانند یک دستگاه اختصاصی کارت‌خوان پین مشخص گردد\&. از آنجا که دو انبار کلید در دستور \f3-importkeystore\fR درگیر هستند، دو گزینه \f3-srcprotected\fR و \f3-destprotected\fR به ترتیب برای انبار کلید مبدأ و مقصد ارائه شده‌اند\&. .TP -ext \fI{name{:critical} {=value}}\fR .br نشان‌دهنده یک پسوند گواهی X\&.509 است\&. این گزینه می‌تواند در \f3-genkeypair\fR و \f3-gencert\fR برای گنجاندن پسوندها در گواهی تولیدشده، یا در \f3-certreq\fR برای نشان دادن پسوندهای درخواست‌شده در درخواست گواهی استفاده شود\&. این گزینه می‌تواند چندین بار درج شود\&. آرگومان \f3name\fR می‌تواند نام یک پسوند پشتیبانی‌شده (بخش پسوندهای نام‌دار را ببینید) یا یک شماره اختیاری OID باشد\&. آرگومان \f3value\fR در صورت ارائه، نشان‌دهنده آرگومان مربوط به پسوند است\&. هنگامی که \fIvalue\fR حذف شود، به معنای مقدار پیش‌فرض پسوند است یا اینکه پسوند نیازی به آرگومان ندارد\&. اصلاح‌کننده \f3:critical\fR در صورت ارائه، نشان می‌دهد که ویژگی \f3isCritical\fR پسوند برابر با \f3true\fR است؛ در غیر این صورت \f3false\fR خواهد بود\&. می‌توانید به جای \f3:critical\fR از \f3:c\fR استفاده کنید\&. .SH "پسوندهای نام‌دار (NAMED EXTENSIONS)" دستور \f3keytool\fR از این پسوندهای نام‌دار پشتیبانی می‌کند\&. نام‌ها به بزرگی و کوچکی حروف حساس نیستند\&. .TP BC یا BasicContraints \fIمقادیر\fR: شکل کامل آن: \f3ca:{true|false}[,pathlen:]\fR یا \f3\fR است که شکل کوتاه \f3ca:true,pathlen:\fR می‌باشد\&. هنگامی که <\f3len\fR> حذف شود، برابر با \f3ca:true\fR است\&. .TP KU یا KeyUsage \fIمقادیر\fR: \f3usage\fR(,\f3usage\fR)*، که در آن \fIusage\fR می‌تواند یکی از مقادیر \f3digitalSignature\fR، \f3nonRepudiation\fR (محتوای تعهد یا contentCommitment)، \f3keyEncipherment\fR، \f3dataEncipherment\fR، \f3keyAgreement\fR، \f3keyCertSign\fR، \f3cRLSign\fR، \f3encipherOnly\fR یا \f3decipherOnly\fR باشد\&. تا زمانی که ابهامی وجود نداشته باشد، آرگومان \fIusage\fR می‌تواند با چند حرف اول (\f3dig\fR برای \f3digitalSignature\fR) یا به سبک شتری (\f3dS\fR برای \f3digitalSignature\fR یا \f3cRLS\fR برای \f3cRLSign\fR) مخفف شود\&. مقادیر \f3usage\fR به بزرگی و کوچکی حروف حساس هستند\&. .TP EKU یا ExtendedKeyUsage \fIمقادیر\fR: \f3usage\fR(,\f3usage\fR)*، که در آن \fIusage\fR می‌تواند یکی از مقادیر \f3anyExtendedKeyUsage\fR، \f3serverAuth\fR، \f3clientAuth\fR، \f3codeSigning\fR، \f3emailProtection\fR، \f3timeStamping\fR، \f3OCSPSigning\fR یا هر \fIرشته OID\fR باشد\&. تا زمانی که ابهامی وجود نداشته باشد، آرگومان \fIusage\fR می‌تواند با چند حرف اول یا به سبک شتری مخفف شود\&. مقادیر \f3usage\fR به بزرگی و کوچکی حروف حساس هستند\&. .TP SAN یا SubjectAlternativeName \fIمقادیر\fR: \f3type\fR:\f3value\fR(,\f3type:value\fR)*، که در آن \f3type\fR می‌تواند \f3EMAIL\fR، \f3URI\fR، \f3DNS\fR، \f3IP\fR یا \f3OID\fR باشد\&. آرگومان \f3value\fR مقدار فرمت رشته‌ای برای آن \f3type\fR است\&. .TP IAN یا IssuerAlternativeName \fIمقادیر\fR: همانند \f3SubjectAlternativeName\fR\&. .TP SIA یا SubjectInfoAccess \fIمقادیر\fR: \f3method\fR:\f3location-type\fR:\f3location-value\fR (,\f3method:location-type\fR:\f3location-value\fR)*، که در آن \f3method\fR می‌تواند \f3timeStamping\fR، \f3caRepository\fR یا هر OID باشد\&. آرگومان‌های \f3location-type\fR و \f3location-value\fR می‌توانند هر مقدار \f3type\fR:\f3value\fR پشتیبانی‌شده توسط پسوند \f3SubjectAlternativeName\fR باشند\&. .TP AIA یا AuthorityInfoAccess \fIمقادیر\fR: همانند \f3SubjectInfoAccess\fR\&. آرگومان \f3method\fR می‌تواند \f3ocsp\fR، \f3caIssuers\fR یا هر OID باشد\&. .PP هنگامی که \f3name\fR برابر با OID باشد، مقدار آن کدگذاری هگزادسیمال DER مربوط به \f3extnValue\fR برای پسوند بدون نوع OCTET STRING و بایت‌های طول خواهد بود\&. به جز اعداد هگزادسیمال استاندارد (0-9, a-f, A-F)، هر نویسه اضافی در رشته هگز نادیده گرفته می‌شود\&. بنابراین هر دو مقدار 01:02:03:04 و 01020304 به عنوان مقادیر یکسان پذیرفته می‌شوند\&. هنگامی که مقداری وجود ندارد، پسوند دارای فیلد مقدار خالی است\&. .PP نام ویژه \f3honored\fR که تنها در \f3-gencert\fR استفاده می‌شود، مشخص می‌کند که پسوندهای گنجانده‌شده در درخواست گواهی چگونه باید پذیرفته شوند\&. مقدار این نام یک فهرست جداشده با کاما از موارد \f3all\fR (تمام پسوندهای درخواستی پذیرفته می‌شوند)، \f3name{:[critical|non-critical]}\fR (پسوند نام‌برده پذیرفته می‌شود اما با ویژگی \f3isCritical\fR متفاوت) و \f3-name\fR (همراه با \f3all\fR برای استثنا کردن) است\&. پسوندهای درخواستی به طور پیش‌فرض پذیرفته نمی‌شوند\&. .PP اگر علاوه بر گزینه \f3-ext honored\fR، گزینه \f3-ext\fR نام‌دار یا OID دیگری ارائه شود، این پسوند به پسوندهای پذیرفته‌شده قبلی اضافه می‌شود\&. اما اگر این نام (یا OID) در مقدار honored نیز ظاهر شود، مقدار و ویژگی بحرانی بودن آن، موارد موجود در درخواست را بازنویسی خواهد کرد\&. .PP پسوند \f3subjectKeyIdentifier\fR همیشه ایجاد می‌شود\&. برای گواهی‌های غیرخودامضاشده، پسوند \f3authorityKeyIdentifier\fR ایجاد می‌گردد\&. .PP \fIنکته:\fR کاربران باید آگاه باشند که برخی ترکیبات پسوندها (و سایر فیلدهای گواهی) ممکن است با استانداردهای اینترنت منطبق نباشند\&. بخش هشدار انطباق گواهی را ببینید\&. .SH "دستورات (COMMANDS)" .TP -gencert .sp .nf \f3{\-rfc} {\-infile \fIinfile\fR} {\-outfile \fIoutfile\fR} {\-alias \fIalias\fR} {\-sigalg \fIsigalg\fR}\fP .fi .sp .sp .nf \f3{\-dname \fIdname\fR} {\-startdate \fIstartdate\fR {\-ext \fIext\fR}* {\-validity \fIvalDays\fR}\fP .fi .sp .sp .nf \f3[\-keypass \fIkeypass\fR] {\-keystore \fIkeystore\fR} [\-storepass \fIstorepass\fR]\fP .fi .sp .sp .nf \f3{\-storetype \fIstoretype\fR} {\-providername \fIprovider_name\fR}\fP .fi .sp .sp .nf \f3{\-providerClass \fIprovider_class_name\fR {\-providerArg \fIprovider_arg\fR}}\fP .fi .sp .sp .nf \f3{\-v} {\-protected} {\-Jjavaoption}\fP .fi .sp یک گواهی را در پاسخ به یک فایل درخواست گواهی (که می‌تواند با دستور \f3keytool\fR \f3-certreq\fR ایجاد شود) تولید می‌کند\&. این دستور درخواست را از \fIinfile\fR (در صورت عدم تعیین، از ورودی استاندارد) می‌خواند، آن را با استفاده از کلید خصوصی alias امضا می‌کند، و گواهی X\&.509 را در \fIoutfile\fR (در صورت عدم تعیین، در خروجی استاندارد) صادر می‌نماید\&. هنگامی که \f3-rfc\fR مشخص شود، فرمت خروجی PEM با کدگذاری Base64 خواهد بود؛ در غیر این صورت یک DER باینری ایجاد می‌شود\&. مقدار \f3sigalg\fR الگوریتمی را مشخص می‌کند که باید برای امضای گواهی استفاده شود\&. آرگومان \f3startdate\fR تاریخ و زمان شروع اعتبار گواهی است\&. آرگومان \f3valDays\fR تعداد روزهایی را که گواهی باید معتبر در نظر گرفته شود بیان می‌کند\&. هنگامی که \f3dname\fR ارائه شود، به عنوان موضوع (subject) گواهی تولیدشده استفاده می‌شود\&. در غیر این صورت، موضوع موجود در درخواست گواهی استفاده می‌گردد\&. مقدار \f3ext\fR نشان می‌دهد که کدام پسوندهای X\&.509 در گواهی تعبیه خواهند شد\&. بخش گزینه‌های عمومی را برای ساختار نحوی \f3-ext\fR بخوانید\&. گزینه \f3-gencert\fR به شما امکان می‌دهد زنجیره‌های گواهی ایجاد کنید\&. مثال زیر یک گواهی با نام \f3e1\fR ایجاد می‌کند که شامل سه گواهی در زنجیره گواهی خود است\&. دستورات زیر چهار جفت‌کلید با نام‌های \f3ca\fR، \f3ca1\fR، \f3ca2\fR و \f3e1\fR ایجاد می‌کنند: .sp .nf \f3keytool \-alias ca \-dname CN=CA \-genkeypair\fP .fi .nf \f3keytool \-alias ca1 \-dname CN=CA \-genkeypair\fP .fi .nf \f3keytool \-alias ca2 \-dname CN=CA \-genkeypair\fP .fi .nf \f3keytool \-alias e1 \-dname CN=E1 \-genkeypair\fP .fi .nf \f3\fP .fi .sp دو دستور زیر یک زنجیره از گواهی‌های امضاشده ایجاد می‌کنند؛ \f3ca\fR گواهی \f3ca1\fR را امضا می‌کند و \f3ca1\fR گواهی \f3ca2\fR را امضا می‌نماید، که همگی خودصادرشده هستند: .sp .nf \f3keytool \-alias ca1 \-certreq |\fP .fi .nf \f3 keytool \-alias ca \-gencert \-ext san=dns:ca1 |\fP .fi .nf \f3 keytool \-alias ca1 \-importcert\fP .fi .nf \f3\fP .fi .nf \f3keytool \-alias ca2 \-certreq |\fP .fi .nf \f3 $KT \-alias ca1 \-gencert \-ext san=dns:ca2 |\fP .fi .nf \f3 $KT \-alias ca2 \-importcert\fP .fi .nf \f3\fP .fi .sp دستور زیر گواهی \f3e1\fR را ایجاد کرده و آن را در فایل \f3e1\&.cert\fR ذخیره می‌کند که توسط \f3ca2\fR امضا شده است\&. در نتیجه، \f3e1\fR باید حاوی \f3ca\fR، \f3ca1\fR و \f3ca2\fR در زنجیره گواهی خود باشد: .sp .nf \f3keytool \-alias e1 \-certreq | keytool \-alias ca2 \-gencert > e1\&.cert\fP .fi .nf \f3\fP .fi .sp .TP -genkeypair .sp .nf \f3{\-alias \fIalias\fR} {\-keyalg \fIkeyalg\fR} {\-keysize \fIkeysize\fR} {\-sigalg \fIsigalg\fR}\fP .fi .sp .sp .nf \f3[\-dname \fIdname\fR] [\-keypass \fIkeypass\fR] {\-startdate \fIvalue\fR} {\-ext \fIext\fR}*\fP .fi .sp .sp .nf \f3{\-validity \fIvalDays\fR} {\-storetype \fIstoretype\fR} {\-keystore \fIkeystore\fR}\fP .fi .sp .sp .nf \f3[\-storepass \fIstorepass\fR]\fP .fi .sp .sp .nf \f3{\-providerClass \fIprovider_class_name\fR {\-providerArg \fIprovider_arg\fR}}\fP .fi .sp .sp .nf \f3{\-v} {\-protected} {\-Jjavaoption}\fP .fi .sp یک جفت‌کلید (یک کلید عمومی و کلید خصوصی مرتبط با آن) تولید می‌کند\&. کلید عمومی را در یک گواهی خودامضاشده X\&.509 نسخه ۳ بسته‌بندی کرده که به عنوان یک زنجیره گواهی تک‌عنصری ذخیره می‌شود\&. این زنجیره گواهی و کلید خصوصی در یک مدخل جدید انبار کلید که با alias شناسایی می‌شود ذخیره می‌گردند\&. مقدار \f3keyalg\fR الگوریتم مورد استفاده برای تولید جفت‌کلید را مشخص می‌کند و مقدار \f3keysize\fR اندازه هر کلید تولیدشده را تعیین می‌نماید\&. مقدار \f3sigalg\fR الگوریتمی را که باید برای امضای گواهی خودامضاشده استفاده شود مشخص می‌کند\&. این الگوریتم باید با مقدار \f3keyalg\fR سازگار باشد\&. مقدار \f3dname\fR نام متمایز (Distinguished Name) X\&.500 را مشخص می‌کند تا با مقدار \f3alias\fR مرتبط شود و به عنوان فیلدهای صادرکننده (issuer) و موضوع (subject) در گواهی خودامضاشده استفاده گردد\&. اگر هیچ نام متمایزی در خط فرمان ارائه نشود، از کاربر خواسته می‌شود آن را وارد کند\&. مقدار \f3keypass\fR گذرواژه‌ای است که برای محافظت از کلید خصوصی جفت‌کلید تولیدشده استفاده می‌شود\&. اگر گذرواژه‌ای ارائه نشود، از کاربر خواسته می‌شود آن را وارد کند\&. اگر در اعلان کلید \fIبازگشت (Enter)\fR را فشار دهید، گذرواژه کلید بر روی همان گذرواژه انبار کلید تنظیم می‌شود\&. مقدار \f3keypass\fR باید حداقل ۶ کاراکتر باشد\&. مقدار \f3startdate\fR زمان صدور گواهی را مشخص می‌کند که به عنوان مقدار "Not Before" در فیلد اعتبار (Validity) گواهی X\&.509 نیز شناخته می‌شود\&. مقدار گزینه می‌تواند به یکی از این دو شکل تنظیم شود: \f3([+-]nnn[ymdHMS])+\fR \f3[yyyy/mm/dd] [HH:MM:SS]\fR در شکل اول، زمان صدور به میزان مقدار مشخص‌شده از زمان جاری جابجا می‌شود\&. مقدار حاصل ترکیب توالی‌ای از زیرمقادیر است\&. در داخل هر زیرمقدار، علامت مثبت (+) به معنای جابجایی به جلو و علامت منفی (-) به معنای جابجایی به عقب است\&. زمان جابجایی \f3nnn\fR واحد از سال، ماه، روز، ساعت، دقیقه یا ثانیه است (که به ترتیب با یک نویسه منفرد \f3y\fR، \f3m\fR، \f3d\fR، \f3H\fR، \f3M\fR یا \f3S\fR مشخص می‌شود)\&. مقدار دقیق زمان صدور با استفاده از متد \f3java\&.util\&.GregorianCalendar\&.add(int field, int amount)\fR روی هر زیرمقدار از چپ به راست محاسبه می‌شود\&. برای مثال، با مشخص کردن، زمان صدور برابر خواهد بود با: .sp .nf \f3Calendar c = new GregorianCalendar();\fP .fi .nf \f3c\&.add(Calendar\&.YEAR, \-1);\fP .fi .nf \f3c\&.add(Calendar\&.MONTH, 1);\fP .fi .nf \f3c\&.add(Calendar\&.DATE, \-1);\fP .fi .nf \f3return c\&.getTime()\fP .fi .nf \f3\fP .fi .sp در شکل دوم، کاربر زمان دقیق صدور را در دو بخش تنظیم می‌کند: سال/ماه/روز و ساعت:دقیقه:ثانیه (با استفاده از منطقه زمانی محلی)\&. کاربر می‌تواند فقط یک بخش را ارائه دهد، به این معنی که بخش دیگر همان تاریخ (یا زمان) جاری خواهد بود\&. کاربر باید تعداد ارقام را دقیقاً مطابق با تعریف فرمت ارائه دهد (در صورت کوتاه‌تر بودن با 0 پر شود)\&. هنگامی که هم تاریخ و هم زمان ارائه می‌شوند، یک (و تنها یک) نویسه فاصله بین دو بخش قرار می‌گیرد\&. ساعت باید همیشه در قالب ۲۴ ساعته ارائه شود\&. هنگامی که این گزینه ارائه نشود، تاریخ شروع همان زمان جاری است\&. این گزینه حداکثر یک بار می‌تواند ارائه شود\&. مقدار \f3valDays\fR تعداد روزهایی را مشخص می‌کند (شروع از تاریخ مشخص‌شده توسط \f3-startdate\fR، یا تاریخ جاری هنگامی که \f3-startdate\fR مشخص نشده است) که گواهی باید معتبر در نظر گرفته شود\&. این دستور در نسخه‌های قبلی \f3-genkey\fR نامیده می‌شد\&. نام قدیمی همچنان در این نسخه پشتیبانی می‌شود\&. نام جدید، \f3-genkeypair\fR، برای آینده ترجیح داده می‌شود\&. .TP -genseckey .sp .nf \f3{\-alias \fIalias\fR} {\-keyalg \fIkeyalg\fR} {\-keysize \fIkeysize\fR} [\-keypass \fIkeypass\fR]\fP .fi .sp .sp .nf \f3{\-storetype \fIstoretype\fR} {\-keystore \fIkeystore\fR} [\-storepass \fIstorepass\fR]\fP .fi .sp .sp .nf \f3{\-providerClass \fIprovider_class_name\fR {\-providerArg \fIprovider_arg\fR}} {\-v}\fP .fi .sp .sp .nf \f3{\-protected} {\-Jjavaoption}\fP .fi .sp یک کلید مخفی (secret key) تولید می‌کند و آن را در یک مدخل جدید \f3KeyStore\&.SecretKeyEntry\fR که با \f3alias\fR شناسایی می‌شود ذخیره می‌نماید\&. مقدار \f3keyalg\fR الگوریتم مورد استفاده برای تولید کلید مخفی را مشخص می‌کند و مقدار \f3keysize\fR اندازه کلید تولیدشده را تعیین می‌نماید\&. مقدار \f3keypass\fR گذرواژه‌ای است که از کلید مخفی محافظت می‌کند\&. اگر گذرواژه‌ای ارائه نشود، از کاربر خواسته می‌شود آن را وارد کند\&. اگر در اعلان کلید Enter را فشار دهید، گذرواژه کلید بر روی همان گذرواژه انبار کلید تنظیم می‌شود\&. مقدار \f3keypass\fR باید حداقل ۶ کاراکتر باشد\&. .TP -importcert .sp .nf \f3{\-alias \fIalias\fR} {\-file \fIcert_file\fR} [\-keypass \fIkeypass\fR] {\-noprompt} {\-trustcacerts}\fP .fi .sp .sp .nf \f3{\-storetype \fIstoretype\fR} {\-keystore \fIkeystore\fR} [\-storepass \fIstorepass\fR]\fP .fi .sp .sp .nf \f3{\-providerName \fIprovider_name\fR}\fP .fi .sp .sp .nf \f3{\-providerClass \fIprovider_class_name\fR {\-providerArg \fIprovider_arg\fR}}\fP .fi .sp .sp .nf \f3{\-v} {\-protected} {\-Jjavaoption}\fP .fi .sp گواهی یا زنجیره گواهی (جایی که دومی در یک پاسخ با قالب PKCS#7 یا توالی‌ای از گواهی‌های X\&.509 ارائه می‌شود) را از فایل \f3cert_file\fR می‌خواند و آن را در مدخل انبار کلید که با \f3alias\fR شناسایی می‌شود ذخیره می‌نماید\&. اگر هیچ فایلی مشخص نشود، گواهی یا زنجیره گواهی از \f3stdin\fR خوانده می‌شود\&. دستور \f3keytool\fR می‌تواند گواهی‌های X\&.509 نسخه ۱، ۲ و ۳ و زنجیره‌های گواهی با قالب PKCS#7 متشکل از گواهی‌های این نوع را وارد کند\&. داده‌های وارد شونده باید در قالب کدگذاری باینری یا قالب کدگذاری قابل چاپ (معروف به کدگذاری Base64) همان‌طور که توسط استاندارد RFC 1421 اینترنت تعریف شده است ارائه شوند\&. در حالت دوم، کدگذاری باید در ابتدا با رشته‌ای که با \f3-----BEGIN\fR شروع می‌شود و در انتها با رشته‌ای که با \f3-----END\fR شروع می‌شود محصور گردد\&. شما یک گواهی را به دو دلیل وارد می‌کنید: برای افزودن آن به فهرست گواهی‌های مورد اعتماد، و برای وارد کردن پاسخ گواهی دریافت شده از یک مرجع صدور گواهی (CA) در نتیجه ارسال درخواست امضای گواهی به آن CA (گزینه \f3-certreq\fR را در بخش دستورات ببینید)\&. اینکه کدام نوع وارد کردن مد نظر است با مقدار گزینه \f3-alias\fR مشخص می‌شود\&. اگر نام مستعار (alias) به یک مدخل کلید اشاره نکند، دستور \f3keytool\fR فرض می‌کند شما در حال افزودن یک مدخل گواهی مورد اعتماد هستید\&. در این حالت، نام مستعار نباید از قبل در انبار کلید وجود داشته باشد\&. اگر نام مستعار از قبل وجود داشته باشد، دستور \f3keytool\fR خطایی نمایش می‌دهد زیرا قبلاً یک گواهی مورد اعتماد برای آن نام مستعار وجود دارد، و گواهی را وارد نمی‌کند\&. اگر نام مستعار به یک مدخل کلید اشاره کند، دستور \f3keytool\fR فرض می‌کند شما در حال وارد کردن یک پاسخ گواهی هستید\&. .TP -importpassword .sp .nf \f3{\-alias \fIalias\fR} [\-keypass \fIkeypass\fR] {\-storetype \fIstoretype\fR} {\-keystore \fIkeystore\fR}\fP .fi .sp .sp .nf \f3[\-storepass \fIstorepass\fR]\fP .fi .sp .sp .nf \f3{\-providerClass \fIprovider_class_name\fR {\-providerArg \fIprovider_arg\fR}}\fP .fi .sp .sp .nf \f3{\-v} {\-protected} {\-Jjavaoption}\fP .fi .sp یک عبارت عبور را وارد می‌کند و آن را در یک مدخل جدید \f3KeyStore\&.SecretKeyEntry\fR که با \f3alias\fR شناسایی می‌شود ذخیره می‌نماید\&. عبارت عبور ممکن است از طریق جریان ورودی استاندارد ارائه شود؛ در غیر این صورت از کاربر خواسته می‌شود آن را وارد کند\&. مقدار \f3keypass\fR گذرواژه‌ای است که برای محافظت از عبارت عبور واردشده استفاده می‌شود\&. اگر گذرواژه‌ای ارائه نشود، از کاربر خواسته می‌شود آن را وارد کند\&. اگر در اعلان کلید Enter را فشار دهید، گذرواژه کلید بر روی همان گذرواژه انبار کلید تنظیم می‌شود\&. مقدار \f3keypass\fR باید حداقل ۶ کاراکتر باشد\&. .TP -importkeystore .sp .nf \f3{\-srcstoretype \fIsrcstoretype\fR} {\-deststoretype \fIdeststoretype\fR}\fP .fi .sp .sp .nf \f3[\-srcstorepass \fIsrcstorepass\fR] [\-deststorepass \fIdeststorepass\fR] {\-srcprotected}\fP .fi .sp .sp .nf \f3{\-destprotected} \fP .fi .sp .sp .nf \f3{\-srcalias \fIsrcalias\fR {\-destalias \fIdestalias\fR} [\-srckeypass \fIsrckeypass\fR]} \fP .fi .sp .sp .nf \f3[\-destkeypass \fIdestkeypass\fR] {\-noprompt}\fP .fi .sp .sp .nf \f3{\-srcProviderName \fIsrc_provider_name\fR} {\-destProviderName \fIdest_provider_name\fR}\fP .fi .sp .sp .nf \f3{\-providerClass \fIprovider_class_name\fR {\-providerArg \fIprovider_arg\fR}} {\-v}\fP .fi .sp .sp .nf \f3{\-protected} {\-Jjavaoption}\fP .fi .sp یک مدخل منفرد یا تمامی مدخل‌ها را از یک انبار کلید مبدأ به یک انبار کلید مقصد وارد می‌کند\&. هنگامی که گزینه \f3-srcalias\fR ارائه شود، دستور مدخل منفرد شناسایی‌شده توسط نام مستعار را به انبار کلید مقصد وارد می‌کند\&. اگر نام مستعار مقصد همراه با \f3destalias\fR ارائه نشود، از \f3srcalias\fR به عنوان نام مستعار مقصد استفاده می‌شود\&. اگر مدخل مبدأ با یک گذرواژه محافظت شده باشد، از \f3srckeypass\fR برای بازیابی مدخل استفاده می‌شود\&. اگر \fIsrckeypass\fR ارائه نشود، دستور \f3keytool\fR تلاش می‌کند از \f3srcstorepass\fR برای بازیابی مدخل استفاده کند\&. اگر \f3srcstorepass\fR یا ارائه نشده باشد یا نادرست باشد، از کاربر برای گذرواژه سوال می‌شود\&. مدخل مقصد با \f3destkeypass\fR محافظت می‌شود\&. اگر \f3destkeypass\fR ارائه نشود، مدخل مقصد با گذرواژه مدخل مبدأ محافظت می‌گردد\&. برای نمونه، اکثر ابزارهای شخص ثالث نیازمند این هستند که \f3storepass\fR و \f3keypass\fR در یک انبار کلید PKCS #12 یکسان باشند\&. برای ایجاد یک انبار کلید PKCS #12 برای این ابزارها، همیشه مقدار \f3-destkeypass\fR را برابر با \f3-deststorepass\fR مشخص کنید\&. اگر گزینه \f3-srcalias\fR ارائه نشود، تمام مدخل‌های موجود در انبار کلید مبدأ به انبار کلید مقصد وارد می‌شوند\&. هر مدخل مقصد تحت همان نام مستعار مدخل مبدأ ذخیره می‌شود\&. اگر مدخل مبدأ با گذرواژه محافظت شده باشد، از \f3srcstorepass\fR برای بازیابی مدخل استفاده می‌شود\&. اگر \f3srcstorepass\fR ارائه نشده یا نادرست باشد، از کاربر برای گذرواژه سوال می‌شود\&. اگر نوع یک مدخل در انبار کلید مبدأ در انبار کلید مقصد پشتیبانی نشود، یا در صورت وقوع خطا هنگام ذخیره یک مدخل در انبار کلید مقصد، از کاربر پرسیده می‌شود که آیا آن مدخل نادیده گرفته شده و ادامه یابد یا عملیات متوقف شود\&. مدخل مقصد با گذرواژه مدخل مبدأ محافظت می‌گردد\&. اگر نام مستعار مقصد از قبل در انبار کلید مقصد وجود داشته باشد، از کاربر خواسته می‌شود یا روی مدخل قبلی بازنویسی کند یا یک مدخل جدید تحت یک نام مستعار متفاوت ایجاد نماید\&. اگر گزینه \f3-noprompt\fR ارائه شود، از کاربر برای نام مستعار جدید مقصد سوال نمی‌شود\&. مدخل‌های موجود با همان نام مستعار مقصد بازنویسی می‌شوند\&. مدخل‌هایی که امکان وارد کردن آن‌ها وجود ندارد نادیده گرفته شده و هشداری نمایش داده می‌شود\&. .TP -printcertreq .sp .nf \f3{\-file \fIfile\fR}\fP .fi .sp محتوای یک درخواست گواهی با قالب PKCS #10 را چاپ می‌کند، که می‌تواند توسط دستور \f3keytool\fR \f3-certreq\fR تولید شده باشد\&. این دستور درخواست را از فایل می‌خواند\&. اگر فایلی وجود نداشته باشد، درخواست از ورودی استاندارد خوانده می‌شود\&. .TP -certreq .sp .nf \f3{\-alias \fIalias\fR} {\-dname \fIdname\fR} {\-sigalg \fIsigalg\fR} {\-file \fIcertreq_file\fR}\fP .fi .sp .sp .nf \f3[\-keypass \fIkeypass\fR] {\-storetype \fIstoretype\fR} {\-keystore \fIkeystore\fR}\fP .fi .sp .sp .nf \f3[\-storepass \fIstorepass\fR] {\-providerName \fIprovider_name\fR}\fP .fi .sp .sp .nf \f3{\-providerClass \fIprovider_class_name\fR {\-providerArg \fIprovider_arg\fR}}\fP .fi .sp .sp .nf \f3{\-v} {\-protected} {\-Jjavaoption}\fP .fi .sp یک درخواست امضای گواهی (CSR) با استفاده از قالب PKCS #10 تولید می‌کند\&. یک CSR به منظور ارسال به یک مرجع صدور گواهی (CA) در نظر گرفته شده است\&. مرجع صدور درخواست‌کننده گواهی را (معمولاً به صورت آفلاین) احراز هویت کرده و یک گواهی یا زنجیره گواهی بازمی‌گرداند که برای جایگزینی زنجیره گواهی موجود (که در ابتدا شامل یک گواهی خودامضاشده است) در انبار کلید استفاده می‌شود\&. کلید خصوصی مرتبط با alias برای ایجاد درخواست گواهی PKCS #10 استفاده می‌شود\&. برای دسترسی به کلید خصوصی، باید گذرواژه صحیح ارائه شود\&. اگر \f3keypass\fR در خط فرمان ارائه نشده باشد و با گذرواژه مورد استفاده برای محافظت از یکپارچگی انبار کلید متفاوت باشد، از کاربر برای آن سوال می‌شود\&. اگر \f3dname\fR ارائه شود، به عنوان موضوع (subject) در CSR استفاده می‌شود\&. در غیر این صورت، نام متمایز X\&.500 مرتبط با alias استفاده می‌گردد\&. مقدار \f3sigalg\fR الگوریتمی را مشخص می‌کند که باید برای امضای CSR استفاده شود\&. درخواست CSR در فایل certreq_file ذخیره می‌شود\&. اگر هیچ فایلی مشخص نشود، CSR به \f3stdout\fR ارسال می‌گردد\&. از دستور \f3importcert\fR برای وارد کردن پاسخ دریافت‌شده از CA استفاده کنید\&. .TP -exportcert .sp .nf \f3{\-alias \fIalias\fR} {\-file \fIcert_file\fR} {\-storetype \fIstoretype\fR} {\-keystore \fIkeystore\fR}\fP .fi .sp .sp .nf \f3[\-storepass \fIstorepass\fR] {\-providerName \fIprovider_name\fR}\fP .fi .sp .sp .nf \f3{\-providerClass \fIprovider_class_name\fR {\-providerArg \fIprovider_arg\fR}}\fP .fi .sp .sp .nf \f3{\-rfc} {\-v} {\-protected} {\-Jjavaoption}\fP .fi .sp گواهی مرتبط با \fIalias\fR را از انبار کلید می‌خواند و آن را در فایل cert_file ذخیره می‌کند\&. هنگامی که هیچ فایلی مشخص نشود، گواهی در \f3stdout\fR چاپ می‌شود\&. گواهی به طور پیش‌فرض با کدگذاری باینری صادر می‌شود\&. اگر گزینه \f3-rfc\fR مشخص شود، خروجی در قالب کدگذاری قابل چاپ تعریف‌شده توسط استاندارد کدگذاری گواهی RFC 1421 اینترنت خواهد بود\&. اگر \f3alias\fR به یک گواهی مورد اعتماد اشاره کند، آن گواهی صادر می‌شود\&. در غیر این صورت، \f3alias\fR به یک مدخل کلید با یک زنجیره گواهی مرتبط اشاره دارد\&. در این حالت، اولین گواهی در زنجیره بازگردانده می‌شود\&. این گواهی کلید عمومی هویتی را که توسط \f3alias\fR مشخص شده است تأیید اعتبار می‌کند\&. این دستور در نسخه‌های قبلی \f3-export\fR نامیده می‌شد\&. نام قدیمی همچنان در این نسخه پشتیبانی می‌شود\&. نام جدید، \f3-exportcert\fR، برای آینده ترجیح داده می‌شود\&. .TP -list .sp .nf \f3{\-alias \fIalias\fR} {\-storetype \fIstoretype\fR} {\-keystore \fIkeystore\fR} [\-storepass \fIstorepass\fR]\fP .fi .sp .sp .nf \f3{\-providerName \fIprovider_name\fR}\fP .fi .sp .sp .nf \f3{\-providerClass \fIprovider_class_name\fR {\-providerArg \fIprovider_arg\fR}}\fP .fi .sp .sp .nf \f3{\-v | \-rfc} {\-protected} {\-Jjavaoption}\fP .fi .sp محتویات مدخل انبار کلید شناسایی‌شده توسط \f3alias\fR را در \f3stdout\fR چاپ می‌کند\&. اگر هیچ \f3alias\fR مشخص نشود، محتویات کل انبار کلید چاپ می‌شود\&. این دستور به طور پیش‌فرض اثر انگشت SHA1 یک گواهی را چاپ می‌کند\&. اگر گزینه \f3-v\fR مشخص شود، گواهی در قالبی خوانا برای انسان، همراه با اطلاعات اضافی مانند مالک، صادرکننده، شماره سریال و هرگونه پسوند چاپ می‌شود\&. اگر گزینه \f3-rfc\fR مشخص شود، محتویات گواهی با استفاده از قالب کدگذاری قابل چاپ طبق استاندارد RFC 1421 اینترنت چاپ می‌شود\&. نمی‌توانید هر دو گزینه \f3-v\fR و \f3-rfc\fR را همزمان مشخص کنید\&. .TP -printcert .sp .nf \f3{\-file \fIcert_file\fR | \-sslserver \fIhost\fR[:\fIport\fR]} {\-jarfile \fIJAR_file\fR {\-rfc} {\-v}\fP .fi .sp .sp .nf \f3{\-Jjavaoption}\fP .fi .sp گواهی را از فایل cert_file، سرور SSL واقع در host:port، یا فایل JAR امضاشده \f3JAR_file\fR (با گزینه \f3-jarfile\fR) می‌خواند و محتویات آن را در قالبی خوانا برای انسان چاپ می‌کند\&. هنگامی که هیچ پورتی مشخص نشود، پورت استاندارد HTTPS یعنی 443 فرض می‌شود\&. توجه داشته باشید که گزینه‌های \f3-sslserver\fR و -file نمی‌توانند همزمان ارائه شوند، در غیر این صورت خطا گزارش می‌شود\&. اگر هیچ‌یک از دو گزینه مشخص نشوند، گواهی از \f3stdin\fR خوانده می‌شود\&. هنگامی که \f3-rfc\fR مشخص شود، دستور \f3keytool\fR گواهی را در حالت PEM طبق استاندارد RFC 1421 اینترنت چاپ می‌کند\&. استاندارد کدگذاری گواهی RFC 1421 اینترنت را ببینید\&. اگر گواهی از یک فایل یا \f3stdin\fR خوانده شود، ممکن است با کدگذاری باینری یا قالب کدگذاری قابل چاپ طبق استاندارد RFC 1421 باشد\&. اگر سرور SSL پشت یک دیوار آتش (فایروال) باشد، می‌توان گزینه‌های \f3-J-Dhttps\&.proxyHost=proxyhost\fR و \f3-J-Dhttps\&.proxyPort=proxyport\fR را برای تونل‌پراکسی در خط فرمان مشخص کرد\&. راهنمای مرجع افزونه سوکت امن جاوا (JSSE) را در نشانی زیر ببینید: http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/security/jsse/JSSERefGuide\&.html \fIنکته:\fR این گزینه می‌تواند مستقل از انبار کلید استفاده شود\&. .TP -printcrl .sp .nf \f3\-file \fIcrl_\fR {\-v}\fP .fi .sp فهرست ابطال گواهی (CRL) را از فایل \f3crl_\fR می‌خواند\&. یک CRL فهرستی از گواهی‌های دیجیتال است که توسط مرجع صادرکننده آن‌ها باطل شده‌اند\&. مرجع صدور گواهی فایل \f3crl_\fR را تولید می‌کند\&. \fIنکته:\fR این گزینه می‌تواند مستقل از انبار کلید استفاده شود\&. .TP -storepasswd .sp .nf \f3[\-new \fInew_storepass\fR] {\-storetype \fIstoretype\fR} {\-keystore \fIkeystore\fR}\fP .fi .sp .sp .nf \f3[\-storepass \fIstorepass\fR] {\-providerName \fIprovider_name\fR}\fP .fi .sp .sp .nf \f3{\-providerClass \fIprovider_class_name\fR {\-providerArg \fIprovider_arg\fR}}\fP .fi .sp .sp .nf \f3{\-v} {\-Jjavaoption}\fP .fi .sp گذرواژه مورد استفاده برای محافظت از یکپارچگی محتویات انبار کلید را تغییر می‌دهد\&. گذرواژه جدید \f3new_storepass\fR است که باید حداقل ۶ کاراکتر باشد\&. .TP -keypasswd .sp .nf \f3{\-alias \fIalias\fR} [\-keypass \fIold_keypass\fR] [\-new \fInew_keypass\fR] {\-storetype \fIstoretype\fR}\fP .fi .sp .sp .nf \f3{\-keystore \fIkeystore\fR} [\-storepass \fIstorepass\fR] {\-providerName \fIprovider_name\fR}\fP .fi .sp .sp .nf \f3{\-providerClass \fIprovider_class_name\fR {\-providerArg \fIprovider_arg\fR}} {\-v}\fP .fi .sp .sp .nf \f3{\-Jjavaoption}\fP .fi .sp گذرواژه‌ای را که کلید خصوصی/مخفی شناسایی‌شده توسط \f3alias\fR تحت آن محافظت می‌شود، از \f3old_keypass\fR به \f3new_keypass\fR تغییر می‌دهد، که باید حداقل ۶ کاراکتر باشد\&. اگر گزینه \f3-keypass\fR در خط فرمان ارائه نشده باشد و گذرواژه کلید با گذرواژه انبار کلید متفاوت باشد، از کاربر برای آن سوال می‌شود\&. اگر گزینه \f3-new\fR در خط فرمان ارائه نشود، از کاربر برای آن سوال می‌شود\&. .TP -delete .sp .nf \f3[\-alias \fIalias\fR] {\-storetype \fIstoretype\fR} {\-keystore \fIkeystore\fR} [\-storepass \fIstorepass\fR]\fP .fi .sp .sp .nf \f3{\-providerName \fIprovider_name\fR} \fP .fi .sp .sp .nf \f3{\-providerClass \fIprovider_class_name\fR {\-providerArg \fIprovider_arg\fR}}\fP .fi .sp .sp .nf \f3{\-v} {\-protected} {\-Jjavaoption}\fP .fi .sp مدخل شناسایی‌شده توسط \f3alias\fR را از انبار کلید حذف می‌کند\&. هنگامی که هیچ نام مستعاری در خط فرمان ارائه نشود، از کاربر برای نام مستعار سوال می‌شود\&. .TP -changealias .sp .nf \f3{\-alias \fIalias\fR} [\-destalias \fIdestalias\fR] [\-keypass \fIkeypass\fR] {\-storetype \fIstoretype\fR}\fP .fi .sp .sp .nf \f3{\-keystore \fIkeystore\fR} [\-storepass \fIstorepass\fR] {\-providerName \fIprovider_name\fR}\fP .fi .sp .sp .nf \f3{\-providerClass \fIprovider_class_name\fR {\-providerArg \fIprovider_arg\fR}} {\-v}\fP .fi .sp .sp .nf \f3{\-protected} {\-Jjavaoption}\fP .fi .sp یک مدخل موجود انبار کلید را از \f3alias\fR مشخص‌شده به یک نام مستعار جدید، \f3destalias\fR منتقل می‌کند\&. اگر هیچ نام مستعار مقصدی ارائه نشود، دستور از کاربر برای آن سوال می‌کند\&. اگر مدخل اصلی با گذرواژه مدخل محافظت شده باشد، گذرواژه می‌تواند با گزینه \f3-keypass\fR ارائه شود\&. اگر هیچ گذرواژه کلیدی ارائه نشود، ابتدا \f3storepass\fR (در صورت ارائه) امتحان می‌شود\&. اگر ناموفق باشد، از کاربر برای گذرواژه سوال می‌شود\&. .TP -help .br دستورات پایه و گزینه‌های آن‌ها را فهرست می‌کند\&. برای اطلاعات بیشتر در مورد یک دستور خاص، دستور زیر را وارد کنید که در آن \f3command_name\fR نام دستور است: \f3keytool -command_name -help\fR\&. .SH "مثال‌ها (EXAMPLES)" این مثال توالی مراحل ایجاد یک انبار کلید را برای مدیریت جفت‌کلیدهای عمومی/خصوصی و گواهی‌های دریافت شده از هویت‌های مورد اعتماد شرح می‌دهد\&. .SS "تولید جفت‌کلید (GENERATE THE KEY PAIR)" ابتدا یک انبار کلید ایجاد کرده و جفت‌کلید را تولید کنید\&. می‌توانید دستوری مانند زیر را به صورت یک خط واحد وارد نمایید: .sp .nf \f3keytool \-genkeypair \-dname "cn=Mark Jones, ou=Java, o=Oracle, c=US"\fP .fi .nf \f3 \-alias business \-keypass \fP .fi .nf \f3 \-keystore /working/mykeystore\fP .fi .nf \f3 \-storepass \-validity 180\fP .fi .nf \f3\fP .fi .sp این دستور انبار کلیدی به نام \f3mykeystore\fR در دایرکتوری کاری ایجاد می‌کند (با این فرض که از قبل وجود نداشته باشد) و گذرواژه مشخص‌شده توسط \f3\fR را به آن اختصاص می‌دهد\&. این دستور یک جفت‌کلید عمومی/خصوصی برای هویتی تولید می‌کند که نام متمایز آن دارای نام عمومی Mark Jones، واحد سازمانی Java، سازمان Oracle و کد کشور دوحرفی US است\&. این دستور از الگوریتم پیش‌فرض تولید کلید DSA برای ایجاد کلیدها استفاده می‌کند؛ هر دو کلید ۱۰۲۴ بیت هستند\&. .PP دستور از الگوریتم امضای پیش‌فرض SHA1withDSA برای ایجاد یک گواهی خودامضاشده استفاده می‌کند که شامل کلید عمومی و اطلاعات نام متمایز است\&. گواهی برای مدت ۱۸۰ روز معتبر است و با کلید خصوصی در یک مدخل انبار کلید که با نام مستعار \f3business\fR ارجاع داده می‌شود مرتبط می‌گردد\&. به کلید خصوصی گذرواژه مشخص‌شده با \f3\fR اختصاص داده می‌شود\&. .PP در صورت پذیرش مقادیر پیش‌فرض گزینه‌ها، دستور به طور چشمگیری کوتاه‌تر خواهد بود\&. در این حالت هیچ گزینه‌ای الزامی نیست و برای گزینه‌های مشخص‌نشده‌ای که مقدار پیش‌فرض دارند، از مقادیر پیش‌فرض استفاده می‌شود\&. برای مقادیر الزامی از شما سوال خواهد شد\&. می‌توانید دستور زیر را وارد کنید: .sp .nf \f3keytool \-genkeypair\fP .fi .nf \f3\fP .fi .sp در این حالت، یک مدخل انبار کلید با نام مستعار \f3mykey\fR ایجاد می‌شود، به همراه یک جفت‌کلید تازه تولیدشده و گواهی‌ای که برای ۹۰ روز معتبر است\&. این مدخل در انبار کلیدی به نام \f3\&.keystore\fR در دایرکتوری خانگی شما قرار می‌گیرد\&. فایل انبار کلید در صورت عدم وجود ایجاد می‌شود\&. اطلاعات نام متمایز، گذرواژه انبار کلید و گذرواژه کلید خصوصی از شما درخواست خواهد شد\&. .PP سایر مثال‌ها فرض می‌کنند که شما دستور \f3-genkeypair\fR را بدون گزینه‌های مشخص اجرا کرده‌اید و به اعلان‌ها با مقادیری برابر با مقادیر مشخص‌شده در اولین دستور \f3-genkeypair\fR پاسخ داده‌اید (برای نمونه، نام متمایز \f3cn=Mark Jones\fR, \f3ou=Java\fR, \f3o=Oracle\fR, \f3c=US\fR)\&. .SS "درخواست گواهی امضاشده از یک مرجع CA (REQUEST A SIGNED CERTIFICATE FROM A CA)" تولید جفت‌کلید یک گواهی خودامضاشده ایجاد کرد\&. هنگامی که یک گواهی توسط یک مرجع صدور گواهی (CA) امضا شود، احتمال اعتماد دیگران به آن بسیار بیشتر است\&. برای دریافت امضای CA، ابتدا یک درخواست امضای گواهی (CSR) به صورت زیر تولید کنید: .sp .nf \f3keytool \-certreq \-file MarkJ\&.csr\fP .fi .nf \f3\fP .fi .sp این دستور یک CSR برای هویت شناسایی‌شده توسط نام مستعار پیش‌فرض \f3mykey\fR ایجاد می‌کند و درخواست را در فایلی به نام MarkJ\&.csr قرار می‌دهد\&. این فایل را به یک CA، مانند VeriSign ارسال کنید\&. مرجع CA شما (درخواست‌کننده) را معمولاً به صورت آفلاین احراز هویت کرده و یک گواهی امضاشده توسط خود بازمی‌گرداند که کلید عمومی شما را تأیید اعتبار می‌کند\&. در برخی موارد، CA زنجیره‌ای از گواهی‌ها را بازمی‌گرداند که هر یک کلید عمومی امضاکننده گواهی قبلی در زنجیره را تأیید می‌کنند\&. .SS "وارد کردن یک گواهی برای مرجع CA (IMPORT A CERTIFICATE FOR THE CA)" اکنون باید گواهی خودامضاشده را با یک زنجیره گواهی جایگزین کنید، که در آن هر گواهی در زنجیره، کلید عمومی امضاکننده گواهی قبلی را تا یک مرجع ریشه CA تأیید می‌کند\&. .PP پیش از آنکه پاسخ گواهی را از یک CA وارد کنید، به یک یا چند گواهی مورد اعتماد در انبار کلید خود یا در فایل انبار کلید \f3cacerts\fR نیاز دارید\&. بخش \f3-importcert\fR در دستورات را ببینید\&. .TP 0.2i \(bu اگر پاسخ گواهی یک زنجیره گواهی باشد، به بالاترین گواهی زنجیره نیاز دارید؛ یعنی گواهی ریشه CA که کلید عمومی CA را تأیید می‌کند\&. .TP 0.2i \(bu اگر پاسخ گواهی یک گواهی منفرد باشد، به گواهی مرجع صادرکننده CA (همان که آن را امضا کرده) نیاز دارید\&. اگر آن گواهی خودامضاشده نباشد، به گواهی امضاکننده آن نیاز خواهید داشت و به همین ترتیب تا یک گواهی ریشه CA خودامضاشده\&. .PP فایل انبار کلید \f3cacerts\fR با چندین گواهی ریشه CA متعلق به VeriSign ارائه می‌شود، بنابراین احتمالاً نیازی به وارد کردن گواهی VeriSign به عنوان یک گواهی مورد اعتماد در انبار کلید خود نخواهید داشت\&. اما اگر از یک CA متفاوت درخواست گواهی امضاشده کنید، و گواهی تأییدکننده کلید عمومی آن CA به \f3cacerts\fR اضافه نشده باشد، باید گواهی آن CA را به عنوان یک گواهی مورد اعتماد وارد نمایید\&. .PP گواهی یک CA معمولاً یا خودامضاشده است یا توسط یک CA دیگر امضا شده است که در این صورت به گواهی تأییدکننده کلید عمومی آن CA نیاز دارید\&. فرض کنید شرکت ABC, Inc\&. یک مرجع CA است و شما فایلی به نام \f3ABCCA\&.cer\fR دریافت کرده‌اید که قرار است یک گواهی خودامضاشده از ABC باشد و کلید عمومی آن CA را تأیید کند\&. دقت کنید که پیش از وارد کردن آن به عنوان یک گواهی مورد اعتماد، از معتبر بودن آن اطمینان حاصل نمایید\&. ابتدا آن را با دستور \f3keytool -printcert\fR یا دستور \f3keytool -importcert\fR بدون گزینه \f3-noprompt\fR مشاهده کنید و مطمئن شوید اثر انگشت‌های نمایش داده شده گواهی با موارد مورد انتظار مطابقت دارند\&. می‌توانید با فرد ارسال‌کننده گواهی تماس بگیرید و اثر انگشت‌های مشاهده‌شده را با مواردی که آن‌ها ارائه می‌دهند یا در یک مخزن امن کلید عمومی وجود دارد مقایسه کنید\&. تنها زمانی که اثر انگشت‌ها یکسان باشند تضمین می‌شود که گواهی در حین انتقال با گواهی شخص دیگری (مثلاً یک مهاجم) جایگزین نشده است\&. اگر چنین حمله‌ای رخ دهد و شما گواهی را پیش از وارد کردن بررسی نکرده باشید، به هر چیزی که مهاجم امضا کرده باشد اعتماد خواهید کرد\&. .PP اگر اطمینان دارید که گواهی معتبر است، می‌توانید آن را با دستور زیر به انبار کلید خود اضافه کنید: .sp .nf \f3keytool \-importcert \-alias abc \-file ABCCA\&.cer\fP .fi .nf \f3\fP .fi .sp این دستور یک مدخل گواهی مورد اعتماد در انبار کلید با استفاده از داده‌های فایل ABCCA\&.cer ایجاد می‌کند و نام مستعار \f3abc\fR را به آن مدخل اختصاص می‌دهد\&. .SS "وارد کردن پاسخ گواهی از مرجع CA (IMPORT THE CERTIFICATE REPLY FROM THE CA)" پس از وارد کردن گواهی تأییدکننده کلید عمومی مرجع CA که درخواست امضای گواهی خود را به آن ارسال کرده‌اید (یا وجود چنین گواهی‌ای از قبل در فایل cacerts)، می‌توانید پاسخ گواهی را وارد کرده و گواهی خودامضاشده خود را با یک زنجیره گواهی جایگزین کنید\&. این زنجیره یا همان زنجیره بازگردانده‌شده توسط CA در پاسخ به درخواست شماست (هنگامی که پاسخ CA یک زنجیره باشد)، یا زنجیره‌ای است که (هنگامی که پاسخ CA یک گواهی منفرد باشد) با استفاده از پاسخ گواهی و گواهی‌های مورد اعتماد موجود در انبار کلیدی که پاسخ را در آن وارد می‌کنید یا در فایل انبار کلید \f3cacerts\fR ساخته می‌شود\&. .PP برای نمونه، اگر درخواست امضای گواهی خود را به VeriSign ارسال کرده‌اید، می‌توانید پاسخ را با دستور زیر وارد کنید که فرض می‌کند گواهی بازگردانده‌شده VSMarkJ\&.cer نام دارد: .sp .nf \f3keytool \-importcert \-trustcacerts \-file VSMarkJ\&.cer\fP .fi .nf \f3\fP .fi .sp .SS "صدور گواهی تأییدکننده کلید عمومی (EXPORT A CERTIFICATE THAT AUTHENTICATES THE PUBLIC KEY)" اگر از دستور \f3jarsigner\fR برای امضای یک فایل آرشیو جاوا (JAR) استفاده کرده‌اید، کلاینت‌هایی که می‌خواهند از این فایل استفاده کنند مایل به تأیید امضای شما خواهند بود\&. یک روش برای کلاینت‌ها جهت احراز هویت شما این است که ابتدا گواهی کلید عمومی شما را به عنوان یک مدخل مورد اعتماد در انبار کلید خود وارد کنند\&. .PP می‌توانید گواهی را صادر کرده و در اختیار کلاینت‌های خود قرار دهید\&. به عنوان نمونه، می‌توانید گواهی خود را با دستور زیر در فایلی به نام MJ\&.cer کپی کنید که فرض می‌کند مدخل دارای نام مستعار \f3mykey\fR است: .sp .nf \f3keytool \-exportcert \-alias mykey \-file MJ\&.cer\fP .fi .nf \f3\fP .fi .sp با داشتن گواهی و فایل JAR امضاشده، یک کلاینت می‌تواند از دستور \f3jarsigner\fR برای تأیید امضای شما استفاده کند\&. .SS "وارد کردن انبار کلید (IMPORT KEYSTORE)" دستور \f3importkeystore\fR برای وارد کردن یک انبار کلید کامل به یک انبار کلید دیگر استفاده می‌شود، به این معنی که تمام مدخل‌های انبار کلید مبدأ شامل کلیدها و گواهی‌ها با یک دستور واحد به انبار کلید مقصد وارد می‌شوند\&. می‌توانید از این دستور برای وارد کردن مدخل‌ها از نوع متفاوتی از انبار کلید استفاده کنید\&. در طول فرآیند وارد کردن، تمام مدخل‌های جدید در انبار کلید مقصد دارای نام‌های مستعار و گذرواژه‌های حفاظتی یکسان (برای کلیدهای مخفی و کلیدهای خصوصی) خواهند بود\&. اگر دستور \f3keytool\fR نتواند کلیدهای خصوصی یا کلیدهای مخفی را از انبار کلید مبدأ بازیابی کند، گذرواژه را از شما درخواست می‌نماید\&. اگر نام مستعار تکراری شناسایی کند، نام مستعار جدیدی از شما می‌خواهد و می‌توانید نام مستعار جدیدی مشخص کنید یا به دستور \f3keytool\fR اجازه دهید روی مدخل موجود بازنویسی کند\&. .PP برای نمونه، جهت وارد کردن مدخل‌ها از یک انبار کلید معمولی نوع JKS به نام key\&.jks به یک انبار کلید مبتنی بر سخت‌افزار از نوع PKCS #11، از دستور زیر استفاده کنید: .sp .nf \f3keytool \-importkeystore\fP .fi .nf \f3 \-srckeystore key\&.jks \-destkeystore NONE\fP .fi .nf \f3 \-srcstoretype JKS \-deststoretype PKCS11\fP .fi .nf \f3 \-srcstorepass \fP .fi .nf \f3 \-deststorepass \fP .fi .nf \f3\fP .fi .sp دستور \f3importkeystore\fR همچنین می‌تواند برای وارد کردن یک مدخل منفرد از یک انبار کلید مبدأ به انبار کلید مقصد استفاده شود\&. در این حالت، علاوه بر گزینه‌های مثال قبل، باید نام مستعاری را که می‌خواهید وارد کنید مشخص نمایید\&. با مشخص کردن گزینه \f3-srcalias\fR، می‌توانید نام مستعار مقصد را نیز در خط فرمان مشخص کنید، همچنین گذرواژه حفاظتی برای یک کلید مخفی/خصوصی و گذرواژه حفاظتی مقصد مورد نظر خود را تعیین نمایید\&. دستور زیر این موضوع را نشان می‌دهد: .sp .nf \f3keytool \-importkeystore\fP .fi .nf \f3 \-srckeystore key\&.jks \-destkeystore NONE\fP .fi .nf \f3 \-srcstoretype JKS \-deststoretype PKCS11\fP .fi .nf \f3 \-srcstorepass \fP .fi .nf \f3 \-deststorepass \fP .fi .nf \f3 \-srcalias myprivatekey \-destalias myoldprivatekey\fP .fi .nf \f3 \-srckeypass \fP .fi .nf \f3 \-destkeypass \fP .fi .nf \f3 \-noprompt\fP .fi .nf \f3\fP .fi .sp .SS "تولید گواهی‌ها برای یک سرور SSL (GENERATE CERTIFICATES FOR AN SSL SERVER)" دستورات زیر دستورات \f3keytool\fR برای تولید جفت‌کلیدها و گواهی‌ها برای سه هویت هستند: ریشه CA (\f3root\fR)، مرجع CA واسط (\f3ca\fR)، و سرور SSL (\f3server\fR)\&. اطمینان حاصل کنید که تمام گواهی‌ها را در یک انبار کلید ذخیره می‌کنید\&. در این مثال‌ها، RSA الگوریتم کلید توصیه‌شده است\&. .sp .nf \f3keytool \-genkeypair \-keystore root\&.jks \-alias root \-ext bc:c\fP .fi .nf \f3keytool \-genkeypair \-keystore ca\&.jks \-alias ca \-ext bc:c\fP .fi .nf \f3keytool \-genkeypair \-keystore server\&.jks \-alias server\fP .fi .nf \f3\fP .fi .nf \f3keytool \-keystore root\&.jks \-alias root \-exportcert \-rfc > root\&.pem\fP .fi .nf \f3\fP .fi .nf \f3keytool \-storepass \-keystore ca\&.jks \-certreq \-alias ca |\fP .fi .nf \f3 keytool \-storepass \-keystore root\&.jks\fP .fi .nf \f3 \-gencert \-alias root \-ext BC=0 \-rfc > ca\&.pem\fP .fi .nf \f3keytool \-keystore ca\&.jks \-importcert \-alias ca \-file ca\&.pem\fP .fi .nf \f3\fP .fi .nf \f3keytool \-storepass \-keystore server\&.jks \-certreq \-alias server |\fP .fi .nf \f3 keytool \-storepass \-keystore ca\&.jks \-gencert \-alias ca\fP .fi .nf \f3 \-ext ku:c=dig,kE \-rfc > server\&.pem\fP .fi .nf \f3cat root\&.pem ca\&.pem server\&.pem |\fP .fi .nf \f3 keytool \-keystore server\&.jks \-importcert \-alias server\fP .fi .nf \f3\fP .fi .sp .SH "اصطلاحات (TERMS)" .TP انبار کلید (Keystore) یک انبار کلید مکانی برای ذخیره‌سازی کلیدهای رمزنگاری و گواهی‌ها است\&. .TP مدخل‌های انبار کلید (Keystore entries) انبارهای کلید می‌توانند انواع متفاوتی از مدخل‌ها را در خود جای دهند\&. دو نوع مدخل پرکاربرد برای دستور \f3keytool\fR شامل موارد زیر است: \fIمدخل‌های کلید (Key entries)\fR: هر مدخل حاوی اطلاعات بسیار حساس کلیدهای رمزنگاری است که در یک قالب محافظت‌شده برای جلوگیری از دسترسی‌های غیرمجاز ذخیره می‌شود\&. معمولاً کلیدی که در این نوع مدخل ذخیره می‌شود یک کلید مخفی است، یا یک کلید خصوصی به همراه زنجیره گواهی برای کلید عمومی متناظر\&. بخش زنجیره‌های گواهی را ببینید\&. دستور \f3keytool\fR می‌تواند هر دو نوع مدخل را مدیریت کند، در حالی که ابزار \f3jarsigner\fR تنها نوع دوم یعنی کلیدهای خصوصی و زنجیره گواهی مرتبط با آن‌ها را مدیریت می‌نماید\&. \fIمدخل‌های گواهی مورد اعتماد (Trusted certificate entries)\fR: هر مدخل شامل یک گواهی کلید عمومی منفرد متعلق به یک طرف دیگر است\&. این مدخل گواهی مورد اعتماد نامیده می‌شود زیرا مالک انبار کلید اطمینان دارد که کلید عمومی موجود در گواهی متعلق به همان هویتی است که با موضوع (مالک) گواهی مشخص شده است\&. صادرکننده گواهی با امضای دیجیتال گواهی این موضوع را تضمین می‌کند\&. .TP نام‌های مستعار انبار کلید (KeyStore aliases) تمام مدخل‌های انبار کلید (مدخل‌های کلید و گواهی‌های مورد اعتماد) از طریق نام‌های مستعار (alias) منحصربه‌فرد در دسترس قرار می‌گیرند\&. یک نام مستعار زمانی مشخص می‌شود که شما هویتی را با دستور \f3-genseckey\fR برای تولید کلید مخفی، دستور \f3-genkeypair\fR برای تولید جفت‌کلید (کلید عمومی و خصوصی) یا دستور \f3-importcert\fR برای افزودن گواهی یا زنجیره گواهی به فهرست گواهی‌های مورد اعتماد به انبار کلید اضافه می‌کنید\&. دستورات بعدی \f3keytool\fR باید از همین نام مستعار برای ارجاع به آن هویت استفاده کنند\&. برای مثال، می‌توانید از نام مستعار \f3duke\fR برای تولید یک جفت‌کلید عمومی/خصوصی جدید و قرار دادن کلید عمومی در یک گواهی خودامضاشده با دستور زیر استفاده کنید\&. بخش زنجیره‌های گواهی را ببینید\&. .sp .nf \f3keytool \-genkeypair \-alias duke \-keypass dukekeypasswd\fP .fi .nf \f3\fP .fi .sp این مثال یک گذرواژه اولیه \f3dukekeypasswd\fR را تعیین می‌کند که دستورات بعدی برای دسترسی به کلید خصوصی مرتبط با نام مستعار \f3duke\fR به آن نیاز خواهند داشت\&. اگر بعداً بخواهید گذرواژه کلید خصوصی Duke را تغییر دهید، از دستوری مانند زیر استفاده کنید: .sp .nf \f3keytool \-keypasswd \-alias duke \-keypass dukekeypasswd \-new newpass\fP .fi .nf \f3\fP .fi .sp این دستور گذرواژه را از \f3dukekeypasswd\fR به \f3newpass\fR تغییر می‌دهد\&. گذرواژه نباید در خط فرمان یا اسکریپت‌ها مشخص شود مگر اینکه برای اهداف آزمایشی باشد یا روی یک سیستم امن قرار داشته باشید\&. اگر یک گزینه گذرواژه الزامی را در خط فرمان مشخص نکنید، از شما درخواست خواهد شد\&. .TP پیاده‌سازی انبار کلید (KeyStore implementation) کلاس \f3KeyStore\fR موجود در بسته \f3java\&.security\fR رابط‌های مشخصی برای دسترسی و اصلاح اطلاعات موجود در انبار کلید فراهم می‌کند\&. امکان وجود چندین پیاده‌سازی عینی متفاوت وجود دارد که هر پیاده‌سازی مربوط به نوع خاصی از انبار کلید است\&. در حال حاضر دو ابزار خط فرمان (\f3keytool\fR و \f3jarsigner\fR) و یک ابزار گرافیکی به نام Policy Tool از پیاده‌سازی‌های انبار کلید استفاده می‌کنند\&. از آنجا که کلاس \f3KeyStore\fR عمومی (\f3public\fR) است، کاربران می‌توانند برنامه‌های امنیتی دیگری بنویسند که از آن استفاده کنند\&. یک پیاده‌سازی پیش‌فرض توکار وجود دارد که توسط Oracle ارائه شده است\&. این پیاده‌سازی انبار کلید را به صورت یک فایل با نوع (قالب) اختصاصی به نام JKS پیاده‌سازی می‌کند\&. این فرمت از هر کلید خصوصی با گذرواژه اختصاصی آن محافظت کرده و همچنین یکپارچگی کل انبار کلید را با یک گذرواژه (احتمالاً متفاوت) محافظت می‌نماید\&. پیاده‌سازی‌های انبار کلید مبتنی بر ارائه‌دهنده (Provider) هستند\&. به طور دقیق‌تر، رابط‌های برنامه‌نویسی ارائه‌شده توسط \f3KeyStore\fR بر اساس رابط ارائه‌دهنده خدمات (SPI) پیاده‌سازی شده‌اند\&. یعنی یک کلاس انتزاعی متناظر \f3KeystoreSpi\fR در بسته \f3java\&.security\fR وجود دارد که متدهای SPI را که ارائه‌دهندگان باید پیاده‌سازی کنند تعریف می‌کند\&. اصطلاح \fIارائه‌دهنده\fR به یک بسته یا مجموعه‌ای از بسته‌ها اشاره دارد که پیاده‌سازی عینی زیرمجموعه‌ای از سرویس‌های قابل دسترس توسط API امنیت جاوا را فراهم می‌کنند\&. برای ارائه یک پیاده‌سازی انبار کلید، کلاینت‌ها باید یک ارائه‌دهنده پیاده‌سازی کرده و زیرکلاسی از \f3KeystoreSpi\fR ارائه دهند، همان‌طور که در راهنمای نحوه پیاده‌سازی ارائه‌دهنده در معماری رمزنگاری جاوا شرح داده شده است: http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/security/crypto/HowToImplAProvider\&.html برنامه‌ها می‌توانند انواع مختلفی از پیاده‌سازی‌های انبار کلید را از ارائه‌دهندگان مختلف با استفاده از متد سازنده \f3getInstance\fR موجود در کلاس \f3KeyStore\fR انتخاب کنند\&. یک نوع انبار کلید، قالب ذخیره‌سازی و داده‌ای اطلاعات انبار کلید و الگوریتم‌های مورد استفاده برای محافظت از کلیدهای خصوصی/مخفی در انبار کلید و یکپارچگی انبار کلید را تعیین می‌کند\&. پیاده‌سازی‌های انبار کلید از انواع مختلف با یکدیگر سازگار نیستند\&. دستور \f3keytool\fR روی هر پیاده‌سازی انبار کلید مبتنی بر فایل کار می‌کند\&. این دستور مسیر انبار کلید را که در خط فرمان به آن ارسال شده به عنوان نام فایل در نظر گرفته و آن را به یک \f3FileInputStream\fR تبدیل می‌کند تا اطلاعات انبار کلید را بارگیری کند\&. دستورات \f3jarsigner\fR و \f3policytool\fR می‌توانند یک انبار کلید را از هر مکانی که با یک نشانی URL مشخص شود بخوانند\&. برای \f3keytool\fR و \f3jarsigner\fR، می‌توانید نوع انبار کلید را در خط فرمان با گزینه \f3-storetype\fR مشخص کنید\&. برای Policy Tool، می‌توانید نوع انبار کلید را با منوی \fIKeystore\fR مشخص نمایید\&. اگر نوع انبار کلید را صراحتاً تعیین نکنید، این ابزارها پیاده‌سازی انبار کلید را بر اساس مقدار مشخصه \f3keystore\&.type\fR تعریف‌شده در فایل مشخصه‌های امنیتی انتخاب می‌کنند\&. فایل مشخصه‌های امنیتی \f3java\&.security\fR نام دارد و در دایرکتوری مشخصه‌های امنیتی قرار دارد: \f3java\&.home\elib\esecurity\fR در ویندوز و \f3java\&.home/lib/security\fR در Oracle Solaris، که در آن \f3java\&.home\fR دایرکتوری محیط زمان اجرا است (دایرکتوری \f3jre\fR در SDK یا دایرکتوری سطح بالای JRE)\&. هر ابزار مقدار \f3keystore\&.type\fR را دریافت کرده و سپس تمام ارائه‌دهندگان نصب‌شده فعلی را بررسی می‌کند تا ارائه‌دهنده‌ای را بیابد که انبار کلیدی از آن نوع را پیاده‌سازی کرده باشد\&. سپس از پیاده‌سازی آن ارائه‌دهنده استفاده می‌کند\&. کلاس \f3KeyStore\fR یک متد ایستا به نام \f3getDefaultType\fR تعریف می‌کند که به برنامه‌ها اجازه می‌دهد مقدار مشخصه \f3keystore\&.type\fR را بازیابی نمایند\&. خط کد زیر یک نمونه از نوع انبار کلید پیش‌فرض را همان‌طور که در مشخصه \f3keystore\&.type\fR تعیین شده ایجاد می‌کند: .sp .nf \f3KeyStore keyStore = KeyStore\&.getInstance(KeyStore\&.getDefaultType());\fP .fi .nf \f3\fP .fi .sp نوع انبار کلید پیش‌فرض \f3jks\fR است که نوع اختصاصی پیاده‌سازی انبار کلید ارائه‌شده توسط Oracle است\&. این مورد با خط زیر در فایل مشخصه‌های امنیتی مشخص شده است: .sp .nf \f3keystore\&.type=jks\fP .fi .nf \f3\fP .fi .sp برای اینکه ابزارها از یک پیاده‌سازی انبار کلید غیر از پیش‌فرض استفاده کنند، می‌توانید آن خط را برای مشخص کردن نوع انبار کلید متفاوت ویرایش کنید\&. برای نمونه، اگر بسته ارائه‌دهنده‌ای دارید که یک پیاده‌سازی انبار کلید برای نوعی به نام \f3pkcs12\fR ارائه می‌دهد، آن خط را به صورت زیر تغییر دهید: .sp .nf \f3keystore\&.type=pkcs12\fP .fi .nf \f3\fP .fi .sp \fIنکته:\fR بزرگی و کوچکی حروف در نام‌گذاری نوع انبار کلید تفاوتی ندارد\&. برای مثال JKS همانند jks در نظر گرفته می‌شود\&. .TP گواهی (Certificate) یک گواهی (یا گواهی کلید عمومی) بیانیه‌ای با امضای دیجیتال از سوی یک هویت (صادرکننده یا issuer) است که بیان می‌کند کلید عمومی و برخی اطلاعات دیگر هویتی دیگر (موضوع یا subject) دارای مقداری مشخص است\&. اصطلاحات زیر با گواهی‌ها مرتبط هستند: \fIکلیدهای عمومی (Public Keys)\fR: اعدادی هستند که با یک هویت خاص مرتبط بوده و برای آگاهی تمام کسانی که نیاز به تعاملات مطمئن با آن هویت دارند در نظر گرفته شده‌اند\&. کلیدهای عمومی برای بررسی و اعتبارسنجی امضاها استفاده می‌شوند\&. \fIامضاشده دیجیتالی (Digitally Signed)\fR: اگر داده‌هایی به صورت دیجیتالی امضا شوند، همراه با هویت صادرکننده و امضایی ذخیره می‌شوند که اثبات می‌کند آن هویت از داده‌ها آگاهی دارد\&. داده‌ها با امضا شدن توسط کلید خصوصی هویت، غیرقابل جعل می‌شوند\&. \fIهویت (Identity)\fR: روشی شناخته‌شده برای نشانی‌دهی یک هویت\&. در برخی سیستم‌ها هویت همان کلید عمومی است و در برخی دیگر می‌تواند از UID سیستم‌عامل تا آدرس ایمیل یا نام متمایز X\&.509 متغیر باشد\&. \fIامضا (Signature)\fR: یک امضا روی داده‌ها با استفاده از کلید خصوصی یک هویت محاسبه می‌شود\&. امضاکننده در مورد گواهی‌ها با عنوان صادرکننده (Issuer) نیز شناخته می‌شود\&. \fIکلیدهای خصوصی (Private Keys)\fR: اعدادی هستند که باید تنها برای همان هویتی که کلید خصوصی به آن تعلق دارد شناخته‌شده باشند (یعنی محرمانه نگهداری شوند)\&. کلیدهای خصوصی و عمومی در تمام سیستم‌های رمزنگاری کلید عمومی به صورت جفت وجود دارند\&. در یک سیستم معمولی رمزنگاری کلید عمومی مانند DSA، هر کلید خصوصی دقیقاً با یک کلید عمومی متناظر است\&. کلیدهای خصوصی برای محاسبه امضاها استفاده می‌شوند\&. \fIموجودیت / هویت (Entity)\fR: یک هویت می‌تواند شخص، سازمان، برنامه، رایانه، کسب‌وکار، بانک یا هر چیزی باشد که تا حدی به آن اعتماد دارید\&. رمزنگاری کلید عمومی نیازمند دسترسی به کلیدهای عمومی کاربران است\&. در یک محیط شبکه‌ای در مقیاس بزرگ، تضمین برقراری روابط پیشین میان طرف‌های ارتباطی یا وجود یک مخزن مورد اعتماد حاوی تمام کلیدهای عمومی ناممکن است\&. گواهی‌ها به عنوان راهکاری برای این مشکل توزیع کلید عمومی ابداع شدند\&. اکنون یک مرجع صدور گواهی (CA) می‌تواند به عنوان شخص ثالث مورد اعتماد عمل کند\&. مراجع CA سازمان‌ها یا کسب‌وکارهایی هستند که برای امضا و صدور گواهی‌ها برای سایر هویت‌ها مورد اعتماد قرار می‌گیرند\&. فرض بر این است که مراجع CA تنها گواهی‌های معتبر و قابل اعتماد ایجاد می‌کنند زیرا ملزم به توافق‌نامه‌های قانونی هستند\&. مراجع صدور گواهی عمومی متعددی مانند VeriSign، Thawte، Entrust و غیره وجود دارند\&. همچنین می‌توانید مرجع صدور گواهی اختصاصی خود را با استفاده از محصولاتی مانند Microsoft Certificate Server یا محصول Entrust CA برای سازمان خود راه‌اندازی کنید\&. با دستور \f3keytool\fR امکان نمایش، وارد کردن و صدور گواهی‌ها وجود دارد\&. همچنین امکان تولید گواهی‌های خودامضاشده نیز فراهم است\&. دستور \f3keytool\fR در حال حاضر گواهی‌های X\&.509 را مدیریت می‌کند\&. .TP گواهی‌های X\&.509 (X.509 Certificates) استاندارد X\&.509 اطلاعاتی را که می‌توانند درون یک گواهی قرار گیرند تعریف کرده و نحوه نگارش آن را (قالب داده) شرح می‌دهد\&. تمام داده‌های یک گواهی با دو استاندارد مرتبط به نام‌های ASN\&.1/DER کدگذاری می‌شوند\&. استاندارد نحوی انتزاعی ۱ (ASN\&.1) داده‌ها را توصیف می‌کند و قواعد کدگذاری معین (DER) روش واحدی را برای ذخیره و انتقال آن داده‌ها شرح می‌دهد\&. تمام گواهی‌های X\&.509 علاوه بر امضا، دارای داده‌های زیر هستند: \fIنسخه (Version)\fR: مشخص می‌کند کدام نسخه از استاندارد X\&.509 بر این گواهی حاکم است که بر اطلاعات قابل تعیین در آن تأثیر می‌گذارد\&. تاکنون سه نسخه تعریف شده است\&. دستور \f3keytool\fR می‌تواند گواهی‌های نسخه ۱، ۲ و ۳ را وارد و صادر کند و گواهی‌های نسخه ۳ را تولید می‌نماید\&. نسخه ۱ استاندارد X\&.509 از سال ۱۹۸۸ در دسترس بوده، به طور گسترده پیاده‌سازی شده و عمومی‌ترین نسخه است\&. نسخه ۲ استاندارد X\&.509 مفهوم شناسه‌های منحصربه‌فرد موضوع و صادرکننده را برای مدیریت احتمال استفاده مجدد از نام‌های موضوع یا صادرکننده در طول زمان معرفی کرد\&. اکثر اسناد مشخصات گواهی اکیداً توصیه می‌کنند که نام‌ها مجدداً استفاده نشوند و گواهی‌ها از شناسه‌های منحصربه‌فرد استفاده نکنند\&. گواهی‌های نسخه ۲ کاربرد گسترده‌ای ندارند\&. نسخه ۳ استاندارد X\&.509 جدیدترین نسخه (۱۹۹۶) است و از مفهوم پسوندها (Extensions) پشتیبانی می‌کند که در آن هر کسی می‌تواند یک پسوند تعریف کرده و آن را در گواهی قرار دهد\&. برخی از پسوندهای متداول عبارتند از: KeyUsage (محدود کردن استفاده از کلیدها به اهداف خاص مانند \f3signing-only\fR) و AlternativeNames (امکان ارتباط هویت‌های دیگر مانند نام‌های DNS، آدرس‌های ایمیل، آدرس‌های IP با این کلید عمومی)\&. پسوندها می‌توانند به عنوان بحرانی (Critical) علامت‌گذاری شوند تا نشان دهند که پسوند باید حتماً بررسی شده و اعمال گردد\&. برای مثال، اگر گواهی دارای پسوند KeyUsage به صورت بحرانی و با مقدار \f3keyCertSign\fR باشد، هنگامی که این گواهی در طول ارتباطات SSL ارائه شود باید رد شود، زیرا پسوند گواهی نشان می‌دهد که کلید خصوصی مرتبط تنها باید برای امضای گواهی‌ها استفاده شود و نه برای SSL\&. \fIشماره سریال (Serial number)\fR: هویتی که گواهی را ایجاد کرده موظف است شماره سریالی به آن اختصاص دهد تا آن را از سایر گواهی‌های صادرشده متمایز کند\&. این اطلاعات در موارد متعددی استفاده می‌شود؛ برای مثال، هنگامی که گواهی باطل می‌شود، شماره سریال آن در فهرست ابطال گواهی (CRL) قرار می‌گیرد\&. \fIشناسه الگوریتم امضا (Signature algorithm identifier)\fR: الگوریتم مورد استفاده توسط مرجع CA برای امضای گواهی را مشخص می‌کند\&. \fIنام صادرکننده (Issuer name)\fR: نام متمایز X\&.500 هویتی که گواهی را امضا کرده است\&. بخش نام‌های متمایز X\&.500 را ببینید\&. این هویت معمولاً یک مرجع CA است\&. استفاده از این گواهی به معنای اعتماد به هویتی است که آن را امضا کرده است\&. در برخی موارد مانند گواهی‌های ریشه یا مراجع CA سطح بالا، صادرکننده گواهی خود را امضا می‌کند\&. \fIدوره اعتبار (Validity period)\fR: هر گواهی تنها برای مدت زمان محدودی معتبر است\&. این دوره با تاریخ و زمان شروع و پایان مشخص می‌شود و می‌تواند از چند ثانیه تا نزدیک به یک قرن متغیر باشد\&. دوره اعتبار انتخاب‌شده به عوامل مختلفی مانند استحکام کلید خصوصی استفاده‌شده برای امضا یا هزینه‌ای که فرد برای گواهی می‌پردازد بستگی دارد\&. این دوره، بازه زمانی مورد انتظاری است که هویت‌ها می‌توانند به مقدار عمومی اطمینان کنند مشروط بر اینکه کلید خصوصی به خطر نیفتاده باشد\&. \fIنام موضوع (Subject name)\fR: نام هویتی که کلید عمومی گواهی متعلق به آن است\&. این نام از استاندارد X\&.500 استفاده می‌کند، بنابراین طوری طراحی شده که در سراسر اینترنت یکتا باشد\&. این نام همان نام متمایز (DN) هویت است\&. بخش نام‌های متمایز X\&.500 را ببینید\&. برای مثال: .sp .nf \f3CN=Java Duke, OU=Java Software Division, O=Oracle Corporation, C=US\fP .fi .nf \f3\fP .fi .sp این موارد به نام عمومی (CN)، واحد سازمانی (OU)، سازمان (O) و کشور (C) موضوع اشاره دارند\&. \fIاطلاعات کلید عمومی موضوع (Subject public key information)\fR: کلید عمومی هویت نام‌برده به همراه یک شناسه الگوریتم که مشخص می‌کند این کلید متعلق به کدام سیستم رمزنگاری کلید عمومی است و پارامترهای کلید مرتبط\&. .TP زنجیره‌های گواهی (Certificate Chains) دستور \f3keytool\fR می‌تواند مدخل‌های کلید انبار کلید را ایجاد و مدیریت کند که هر یک حاوی یک کلید خصوصی و یک زنجیره گواهی مرتبط هستند\&. اولین گواهی در زنجیره شامل کلید عمومی متناظر با کلید خصوصی است\&. هنگامی که کلیدها برای اولین بار تولید می‌شوند، زنجیره معمولاً با یک عضو منفرد یعنی یک گواهی خودامضاشده شروع می‌شود\&. بخش \f3-genkeypair\fR را در دستورات ببینید\&. یک گواهی خودامضاشده گواهی‌ای است که صادرکننده (امضاکننده) آن همان موضوع گواهی است\&. موضوع هویتی است که کلید عمومی آن توسط گواهی تأیید اعتبار می‌شود\&. هنگامی که دستور \f3-genkeypair\fR برای تولید یک جفت‌کلید عمومی/خصوصی جدید فراخوانی می‌شود، کلید عمومی را در یک گواهی خودامضاشده نیز قرار می‌دهد\&. سپس، پس از ایجاد یک درخواست امضای گواهی (CSR) با دستور \f3-certreq\fR و ارسال آن به یک مرجع صدور گواهی (CA)، پاسخ دریافتی از CA با دستور \f3-importcert\fR وارد شده و گواهی خودامضاشده با زنجیره‌ای از گواهی‌ها جایگزین می‌شود\&. گزینه‌های \f3-certreq\fR و \f3-importcert\fR را در بخش دستورات ببینید\&. در انتهای زنجیره، گواهی (پاسخ) صادرشده توسط CA قرار دارد که کلید عمومی موضوع را تأیید اعتبار می‌کند\&. گواهی بعدی در زنجیره، کلید عمومی مرجع CA را تأیید می‌کند\&. در بسیاری از موارد، این گواهی یک گواهی خودامضاشده است که کلید عمومی خود CA را تأیید می‌کند و آخرین گواهی در زنجیره خواهد بود\&. در موارد دیگر، CA ممکن است زنجیره‌ای از گواهی‌ها را بازگرداند\&. در این حالت، گواهی پایین زنجیره همان است (گواهی امضاشده توسط CA که کلید عمومی مدخل کلید را تأیید می‌کند)، اما گواهی دوم در زنجیره گواهی‌ای است که توسط یک CA متفاوت امضا شده و کلید عمومی CA دریافت‌کننده CSR را تأیید می‌نماید\&. گواهی بعدی در زنجیره کلید CA دوم را تأیید می‌کند و به همین ترتیب تا زمانی که به یک گواهی ریشه خودامضاشده برسد\&. هر گواهی در زنجیره (پس از اولی) کلید عمومی امضاکننده گواهی قبلی در زنجیره را تأیید اعتبار می‌کند\&. بسیاری از مراجع CA تنها گواهی صادرشده را بدون زنجیره پشتیبان بازمی‌گردانند، به ویژه زمانی که سلسله‌مراتب مسطح باشد (بدون CAهای میانی)\&. در این حالت، زنجیره گواهی باید از اطلاعات گواهی‌های مورد اعتماد که از قبل در انبار کلید ذخیره شده‌اند تشکیل شود\&. یک قالب پاسخ متفاوت (تعریف‌شده توسط استاندارد PKCS #7) شامل زنجیره گواهی پشتیبان علاوه بر گواهی صادرشده است\&. هر دو قالب پاسخ می‌توانند توسط دستور \f3keytool\fR مدیریت شوند\&. گواهی مرجع ریشه (بالاترین سطح) CA خودامضاشده است\&. با این حال، اعتماد به کلید عمومی ریشه از خود گواهی ریشه حاصل نمی‌شود، بلکه از منابع دیگر مانند روزنامه‌ها به دست می‌آید\&. زیرا هر کسی می‌تواند یک گواهی خودامضاشده با نام متمایز مرجع ریشه مثلاً VeriSign ایجاد کند\&. کلید عمومی مرجع ریشه CA به طور گسترده‌ای شناخته شده است\&. تنها دلیل ذخیره آن در یک گواهی این است که این قالب برای اکثر ابزارها قابل فهم است، بنابراین گواهی در این حالت صرفاً به عنوان وسیله‌ای برای انتقال کلید عمومی ریشه CA استفاده می‌شود\&. پیش از افزودن گواهی ریشه CA به انبار کلید خود، باید آن را با گزینه \f3-printcert\fR مشاهده کرده و اثر انگشت نمایش‌داده‌شده را با اثر انگشت معتبر به دست آمده از وب‌سایت مرجع ریشه CA و منابع معتبر مقایسه کنید\&. .TP فایل گواهی‌های cacerts (The cacerts Certificates File) یک فایل گواهی به نام \f3cacerts\fR در دایرکتوری مشخصه‌های امنیتی قرار دارد: \f3java\&.home\elib\esecurity\fR در ویندوز و \f3java\&.home/lib/security\fR در Oracle Solaris، که در آن \f3java\&.home\fR دایرکتوری محیط زمان اجرا است (دایرکتوری \f3jre\fR در SDK یا دایرکتوری سطح بالای JRE)\&. فایل \f3cacerts\fR نشان‌دهنده یک انبار کلید در سطح سیستم حاوی گواهی‌های CA است\&. مدیران سیستم می‌توانند این فایل را با دستور \f3keytool\fR و با تعیین \f3jks\fR به عنوان نوع انبار کلید پیکربندی و مدیریت کنند\&. فایل انبار کلید \f3cacerts\fR همراه با مجموعه‌ای از گواهی‌های ریشه CA پیش‌فرض عرضه می‌شود\&. می‌توانید گواهی‌های پیش‌فرض را با دستور زیر فهرست کنید: .sp .nf \f3keytool \-list \-keystore java\&.home/lib/security/cacerts\fP .fi .nf \f3\fP .fi .sp گذرواژه اولیه فایل انبار کلید \f3cacerts\fR برابر با \f3changeit\fR است\&. مدیران سیستم باید این گذرواژه و مجوز دسترسی پیش‌فرض فایل را پس از نصب SDK تغییر دهند\&. \fIنکته:\fR اعتبارسنجی فایل \f3cacerts\fR اهمیت زیادی دارد\&. از آنجا که به مراجع CA موجود در فایل \f3cacerts\fR به عنوان هویت‌هایی برای امضا و صدور گواهی‌ها به سایر هویت‌ها اعتماد می‌کنید، باید فایل \f3cacerts\fR را با دقت مدیریت کنید\&. فایل \f3cacerts\fR باید تنها شامل گواهی‌های مراجع CA باشد که به آن‌ها اعتماد دارید\&. بررسی گواهی‌های ریشه CA موجود در فایل \f3cacerts\fR و تصمیم‌گیری درباره میزان اعتماد بر عهده شماست\&. برای حذف یک گواهی CA نامعتبر از فایل \f3cacerts\fR، از گزینه \f3delete\fR در دستور \f3keytool\fR استفاده کنید\&. می‌توانید فایل \f3cacerts\fR را در دایرکتوری نصب JRE پیدا کنید\&. اگر مجوز ویرایش این فایل را ندارید با مدیر سیستم خود تماس بگیرید\&. .TP استاندارد کدگذاری گواهی RFC 1421 اینترنت (Internet RFC 1421 Certificate Encoding Standard) گواهی‌ها اغلب به جای کدگذاری دودویی، با استفاده از قالب کدگذاری متنی قابل‌چاپ تعریف‌شده توسط استاندارد RFC 1421 اینترنت ذخیره می‌شوند\&. این قالب گواهی که به عنوان کدگذاری Base64 نیز شناخته می‌شود، صدور گواهی‌ها به سایر برنامه‌ها از طریق ایمیل یا سازوکارهای دیگر را آسان می‌کند\&. گواهی‌های خوانده‌شده توسط دستورات \f3-importcert\fR و \f3-printcert\fR می‌توانند در این قالب یا کدگذاری دودویی باشند\&. دستور \f3-exportcert\fR به طور پیش‌فرض گواهی را با کدگذاری دودویی صادر می‌کند، اما هنگامی که گزینه \f3-rfc\fR مشخص شود، گواهی را در قالب کدگذاری قابل‌چاپ صادر خواهد کرد\&. دستور \f3-list\fR به طور پیش‌فرض اثر انگشت SHA1 گواهی را چاپ می‌کند\&. اگر گزینه \f3-v\fR مشخص شود، گواهی در قالب خوانا برای انسان چاپ می‌شود\&. اگر گزینه \f3-rfc\fR مشخص شود، گواهی در قالب کدگذاری قابل‌چاپ خروجی داده خواهد شد\&. در قالب کدگذاری قابل‌چاپ، گواهی کدگذاری‌شده در ابتدا و انتها با متن زیر محصور می‌شود: .sp .nf \f3\-\-\-\-\-BEGIN CERTIFICATE\-\-\-\-\-\fP .fi .nf \f3\fP .fi .nf \f3گواهی کدگذاری‌شده در اینجا قرار می‌گیرد\&.\fP .fi .nf \f3\fP .fi .nf \f3\-\-\-\-\-END CERTIFICATE\-\-\-\-\-\fP .fi .nf \f3\fP .fi .sp .TP نام‌های متمایز X\&.500 (X.500 Distinguished Names) نام‌های متمایز X\&.500 برای شناسایی هویت‌ها مانند مواردی که توسط فیلدهای \f3subject\fR و \f3issuer\fR (امضاکننده) گواهی‌های X\&.509 نام‌گذاری می‌شوند، استفاده می‌شوند\&. دستور \f3keytool\fR از زیربخش‌های زیر پشتیبانی می‌کند: \fIcommonName\fR: نام عمومی شخص مانند Susan Jones\&. \fIorganizationUnit\fR: نام واحد سازمانی کوچک (مانند دپارتمان یا بخش)؛ برای مثال Purchasing\&. \fIlocalityName\fR: نام محل یا شهر؛ برای مثال Palo Alto\&. \fIstateName\fR: نام ایالت یا استان؛ برای مثال California\&. \fIcountry\fR: کد کشور دوحرفی؛ برای مثال CH\&. هنگامی که یک رشته نام متمایز را به عنوان مقدار گزینه \f3-dname\fR ارائه می‌دهید (مانند دستور \f3-genkeypair\fR)، رشته باید در قالب زیر باشد: .sp .nf \f3CN=cName, OU=orgUnit, O=org, L=city, S=state, C=countryCode\fP .fi .nf \f3\fP .fi .sp تمام موارد مورب نشان‌دهنده مقادیر واقعی هستند و کلیدواژه‌های قبلی اختصاراتی برای موارد زیر می‌باشند: .sp .nf \f3CN=commonName\fP .fi .nf \f3OU=organizationUnit\fP .fi .nf \f3O=organizationName\fP .fi .nf \f3L=localityName\fP .fi .nf \f3S=stateName\fP .fi .nf \f3C=country\fP .fi .nf \f3\fP .fi .sp یک نمونه رشته نام متمایز عبارت است از: .sp .nf \f3CN=Mark Smith, OU=Java, O=Oracle, L=Cupertino, S=California, C=US\fP .fi .nf \f3\fP .fi .sp دستور نمونه با استفاده از چنین رشته‌ای: .sp .nf \f3keytool \-genkeypair \-dname "CN=Mark Smith, OU=Java, O=Oracle, L=Cupertino,\fP .fi .nf \f3S=California, C=US" \-alias mark\fP .fi .nf \f3\fP .fi .sp بزرگی و کوچکی حروف در اختصارات کلیدواژه‌ها تفاوتی ندارد\&. برای مثال CN، cn و Cn همگی یکسان در نظر گرفته می‌شوند\&. ترتیب قرارگیری اهمیت دارد؛ هر زیرمؤلفه باید به ترتیب تعیین‌شده درج شود\&. با این حال، درج تمام زیرمؤلفه‌ها الزامی نیست و می‌توانید از یک زیرمجموعه استفاده کنید، برای مثال: .sp .nf \f3CN=Steve Meier, OU=Java, O=Oracle, C=US\fP .fi .nf \f3\fP .fi .sp اگر مقدار رشته نام متمایز حاوی کاما باشد، هنگام تعیین رشته در خط فرمان کاما باید با یک نویسه بک‌اسلش (\e) اسکیپ شود، مانند: .sp .nf \f3cn=Peter Schuster, ou=Java\e, Product Development, o=Oracle, c=US\fP .fi .nf \f3\fP .fi .sp مشخص کردن رشته نام متمایز در خط فرمان هرگز اجباری نیست\&. هنگامی که نام متمایز برای دستوری مورد نیاز باشد اما در خط فرمان ارائه نشود، از کاربر برای تک‌تک زیرمؤلفه‌ها سوال خواهد شد\&. در این حالت، نیازی به اسکیپ کردن کاما با بک‌اسلش (\e) نیست\&. .SH "هشدارها (WARNINGS)" .SS "هشدار وارد کردن گواهی‌های مورد اعتماد (IMPORTING TRUSTED CERTIFICATES WARNING)" \fIمهم\fR: پیش از وارد کردن یک گواهی به عنوان گواهی مورد اعتماد، حتماً آن را با دقت بسیار بررسی کنید\&. .PP مثال ویندوز: ابتدا گواهی را با دستور \f3-printcert\fR یا دستور \f3-importcert\fR بدون گزینه \f3-noprompt\fR مشاهده کنید\&. اطمینان حاصل کنید که اثر انگشت‌های نمایش‌داده‌شده گواهی با موارد مورد انتظار مطابقت دارند\&. برای مثال، فرض کنید شخصی گواهی‌ای را برای شما ارسال کرده و شما آن را در فایلی به نام \f3\etmp\ecert\fR قرار داده‌اید\&. پیش از افزودن گواهی به فهرست گواهی‌های مورد اعتماد، می‌توانید دستور \f3-printcert\fR را برای مشاهده اثر انگشت‌های آن به صورت زیر اجرا کنید: .sp .nf \f3 keytool \-printcert \-file \etmp\ecert\fP .fi .nf \f3 Owner: CN=ll, OU=ll, O=ll, L=ll, S=ll, C=ll\fP .fi .nf \f3 Issuer: CN=ll, OU=ll, O=ll, L=ll, S=ll, C=ll\fP .fi .nf \f3 Serial Number: 59092b34\fP .fi .nf \f3 Valid from: Thu Sep 25 18:01:13 PDT 1997 until: Wed Dec 24 17:01:13 PST 1997\fP .fi .nf \f3 Certificate Fingerprints:\fP .fi .nf \f3 MD5: 11:81:AD:92:C8:E5:0E:A2:01:2E:D4:7A:D7:5F:07:6F\fP .fi .nf \f3 SHA1: 20:B6:17:FA:EF:E5:55:8A:D0:71:1F:E8:D6:9D:C0:37:13:0E:5E:FE\fP .fi .nf \f3 SHA256: 90:7B:70:0A:EA:DC:16:79:92:99:41:FF:8A:FE:EB:90:\fP .fi .nf \f3 17:75:E0:90:B2:24:4D:3A:2A:16:A6:E4:11:0F:67:A4\fP .fi .sp .PP مثال Oracle Solaris: ابتدا گواهی را با دستور \f3-printcert\fR یا دستور \f3-importcert\fR بدون گزینه \f3-noprompt\fR مشاهده کنید\&. اطمینان حاصل کنید که اثر انگشت‌های نمایش‌داده‌شده گواهی با موارد مورد انتظار مطابقت دارند\&. برای مثال، فرض کنید شخصی گواهی‌ای را برای شما ایمیل کرده و شما آن را در فایلی به نام \f3/tmp/cert\fR قرار داده‌اید\&. پیش از افزودن گواهی به فهرست گواهی‌های مورد اعتماد، می‌توانید دستور \f3-printcert\fR را برای مشاهده اثر انگشت‌های آن به صورت زیر اجرا کنید: .sp .nf \f3 keytool \-printcert \-file /tmp/cert\fP .fi .nf \f3 Owner: CN=ll, OU=ll, O=ll, L=ll, S=ll, C=ll\fP .fi .nf \f3 Issuer: CN=ll, OU=ll, O=ll, L=ll, S=ll, C=ll\fP .fi .nf \f3 Serial Number: 59092b34\fP .fi .nf \f3 Valid from: Thu Sep 25 18:01:13 PDT 1997 until: Wed Dec 24 17:01:13 PST 1997\fP .fi .nf \f3 Certificate Fingerprints:\fP .fi .nf \f3 MD5: 11:81:AD:92:C8:E5:0E:A2:01:2E:D4:7A:D7:5F:07:6F\fP .fi .nf \f3 SHA1: 20:B6:17:FA:EF:E5:55:8A:D0:71:1F:E8:D6:9D:C0:37:13:0E:5E:FE\fP .fi .nf \f3 SHA256: 90:7B:70:0A:EA:DC:16:79:92:99:41:FF:8A:FE:EB:90:\fP .fi .nf \f3 17:75:E0:90:B2:24:4D:3A:2A:16:A6:E4:11:0F:67:A4\fP .fi .nf \f3\fP .fi .sp سپس با فردی که گواهی را ارسال کرده تماس گرفته و اثر انگشت‌هایی را که می‌بینید با مواردی که آن‌ها ارائه می‌دهند مقایسه کنید\&. تنها در صورت یکسان بودن اثر انگشت‌ها تضمین می‌شود که گواهی در حین انتقال با گواهی شخص دیگری مانند یک مهاجم جایگزین نشده است\&. اگر چنین حمله‌ای رخ داده باشد و شما گواهی را پیش از وارد کردن بررسی نکرده باشید، به هر چیزی که مهاجم امضا کرده است اعتماد خواهید کرد؛ برای مثال یک فایل JAR حاوی فایل‌های کلاس مخرب\&. .PP \fIنکته:\fR اجرای دستور \f3-printcert\fR پیش از وارد کردن گواهی اجباری نیست\&. زیرا پیش از افزودن گواهی به فهرست گواهی‌های مورد اعتماد در انبار کلید، دستور \f3-importcert\fR اطلاعات گواهی را چاپ کرده و از شما می‌خواهد آن را تأیید کنید\&. در این مرحله می‌توانید عملیات وارد کردن را متوقف نمایید\&. اما این کار تنها زمانی ممکن است که دستور \f3-importcert\fR را بدون گزینه \f3-noprompt\fR اجرا کنید\&. اگر گزینه \f3-noprompt\fR مشخص شده باشد، هیچ تعاملی با کاربر صورت نخواهد گرفت\&. .SS "هشدار گذرواژه‌ها (PASSWORDS WARNING)" اکثر دستوراتی که روی یک انبار کلید عمل می‌کنند نیازمند گذرواژه انبار کلید هستند\&. برخی دستورات نیازمند گذرواژه کلید خصوصی/مخفی هستند\&. گذرواژه‌ها می‌توانند در خط فرمان در گزینه‌های \f3-storepass\fR و \f3-keypass\fR مشخص شوند\&. با این حال، گذرواژه نباید در خط فرمان یا اسکریپت‌ها مشخص شود مگر اینکه برای اهداف آزمایشی باشد یا روی یک سیستم امن قرار داشته باشید\&. هنگامی که یک گزینه گذرواژه الزامی را در خط فرمان مشخص نکنید، از شما درخواست خواهد شد\&. .SS "هشدار انطباق گواهی (CERTIFICATE CONFORMANCE WARNING)" استاندارد اینترنت RFC 5280 مشخصاتی را در مورد گواهی‌های منطبق با X\&.509 تعریف کرده که شامل مقادیر و ترکیبات مقادیر معتبر برای فیلدها و پسوندهای گواهی است\&. این استاندارد را در نشانی زیر ببینید: http://tools\&.ietf\&.org/rfc/rfc5280\&.txt .PP دستور \f3keytool\fR تمام این قوانین را اجبار نمی‌کند، بنابراین می‌تواند گواهی‌هایی تولید کند که با استاندارد منطبق نیستند\&. گواهی‌هایی که با استاندارد منطبق نباشند ممکن است توسط JRE یا سایر برنامه‌ها رد شوند\&. کاربران باید اطمینان حاصل کنند که گزینه‌های صحیحی را برای \f3-dname\fR، \f3-ext\fR و غیره ارائه می‌دهند\&. .SH "نکات (NOTES)" .SS "وارد کردن یک گواهی مورد اعتماد جدید (IMPORT A NEW TRUSTED CERTIFICATE)" پیش از افزودن گواهی به انبار کلید، دستور \f3keytool\fR با تلاش برای ساخت زنجیره‌ای از اعتماد از آن گواهی تا یک گواهی خودامضاشده (متعلق به مرجع ریشه CA) با استفاده از گواهی‌های مورد اعتماد موجود در انبار کلید، آن را اعتبارسنجی می‌کند\&. .PP اگر گزینه \f3-trustcacerts\fR مشخص شده باشد، گواهی‌های اضافی در فایلی به نام \f3cacerts\fR برای زنجیره اعتماد در نظر گرفته می‌شوند\&. .PP اگر دستور \f3keytool\fR نتواند یک مسیر اعتماد از گواهی ورودی تا یک گواهی خودامضاشده (از انبار کلید یا فایل \f3cacerts\fR) برقرار کند، اطلاعات گواهی چاپ شده و از کاربر خواسته می‌شود با مقایسه اثر انگشت‌های نمایش‌داده‌شده با اثر انگشت‌های به دست آمده از منبع معتبر دیگر (مانند مالک گواهی)، آن را تأیید کند\&. پیش از وارد کردن گواهی به عنوان گواهی مورد اعتماد بسیار دقت کنید تا از معتبر بودن آن مطمئن شوید\&. بخش هشدار وارد کردن گواهی‌های مورد اعتماد را ببینید\&. سپس کاربر این امکان را دارد که عملیات وارد کردن را متوقف کند\&. اگر گزینه \f3-noprompt\fR مشخص شده باشد، هیچ تعاملی با کاربر انجام نخواهد شد\&. .SS "وارد کردن پاسخ گواهی (IMPORT A CERTIFICATE REPLY)" هنگامی که پاسخ گواهی را وارد می‌کنید، پاسخ گواهی با گواهی‌های مورد اعتماد موجود در انبار کلید و در صورت تعیین گزینه \f3-trustcacerts\fR با گواهی‌های پیکربندی‌شده در فایل انبار کلید \f3cacerts\fR اعتبارسنجی می‌شود\&. بخش فایل گواهی‌های cacerts را ببینید\&. .PP روش‌های تعیین معتبر بودن پاسخ گواهی به شرح زیر است: .TP 0.2i \(bu اگر پاسخ یک گواهی منفرد X\&.509 باشد، دستور \f3keytool\fR تلاش می‌کند یک زنجیره اعتماد از پاسخ گواهی تا یک گواهی خودامضاشده (متعلق به مرجع ریشه CA) برقرار کند\&. پاسخ گواهی و سلسله‌مراتب گواهی‌ها برای تأیید اعتبار پاسخ گواهی از زنجیره گواهی جدید نام‌های مستعار استفاده می‌شود\&. اگر زنجیره اعتماد برقرار نشود، پاسخ گواهی وارد نخواهد شد\&. در این حالت، دستور \f3keytool\fR گواهی را چاپ نکرده و از کاربر برای تأیید سوال نمی‌کند، زیرا تشخیص اصالت پاسخ گواهی برای کاربر بسیار دشوار است\&. .TP 0.2i \(bu اگر پاسخ یک زنجیره گواهی با قالب PKCS #7 یا دنباله‌ای از گواهی‌های X\&.509 باشد، زنجیره به گونه‌ای مرتب می‌شود که گواهی کاربر در ابتدا و سپس صفر یا چند گواهی CA قرار می‌گیرد\&. اگر زنجیره با یک گواهی ریشه خودامضاشده CA پایان یابد و گزینه \f3-trustcacerts\fR مشخص شده باشد، دستور \f3keytool\fR تلاش می‌کند آن را با هر یک از گواهی‌های مورد اعتماد موجود در انبار کلید یا فایل \f3cacerts\fR مطابقت دهد\&. اگر زنجیره با یک گواهی ریشه خودامضاشده CA پایان نیابد و گزینه \f3-trustcacerts\fR مشخص شده باشد، دستور \f3keytool\fR تلاش می‌کند گواهی ریشه را از گواهی‌های مورد اعتماد موجود در انبار کلید یا فایل \f3cacerts\fR پیدا کرده و به انتهای زنجیره اضافه کند\&. اگر گواهی پیدا نشود و گزینه \f3-noprompt\fR مشخص نشده باشد، اطلاعات آخرین گواهی موجود در زنجیره چاپ شده و از کاربر برای تأیید آن سوال خواهد شد\&. .PP اگر کلید عمومی موجود در پاسخ گواهی با کلید عمومی کاربر که از قبل با \f3alias\fR ذخیره شده مطابقت داشته باشد، زنجیره گواهی قدیمی با زنجیره گواهی جدید موجود در پاسخ جایگزین می‌شود\&. زنجیره قدیمی تنها با یک \f3keypass\fR معتبر قابل جایگزینی است و بنابراین گذرواژه مورد استفاده برای محافظت از کلید خصوصی مدخل ارائه می‌شود\&. اگر هیچ گذرواژه‌ای ارائه نشود و گذرواژه کلید خصوصی با گذرواژه انبار کلید متفاوت باشد، از کاربر درخواست خواهد شد\&. .PP این دستور در نسخه‌های قبلی \f3-import\fR نام داشت\&. این نام قدیمی همچنان در این نسخه پشتیبانی می‌شود، اما نام جدید \f3-importcert\fR برای آینده ترجیح داده می‌شود\&. .SH "همچنین ببینید (SEE ALSO)" .TP 0.2i \(bu jar(1) .TP 0.2i \(bu jarsigner(1) .TP 0.2i \(bu ویژگی‌های امنیتی در Java SE در http://docs\&.oracle\&.com/javase/tutorial/security/index\&.html .RE .br 'pl 8.5i 'bp