'\" 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" "Security Tools" .\" ----------------------------------------------------------------- .\" * 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 [\fIcommands\fR] .fi .sp .TP \fIcommands\fR بخش دستورها (Commands) را ببینید\&. این دستورها بر اساس وظیفه به شرح زیر دسته‌بندی می‌شوند: .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 همچنین کاربران را قادر می‌سازد تا کلیدهای عمومی (در قالب گواهی‌ها) همتایان ارتباطی خود را حافظهٔ موقت (cache) کنند\&. .PP گواهی (certificate) بیانیه‌ای با امضای دیجیتال از سوی یک هویت (شخص، شرکت و غیره) است که بیان می‌دارد کلید عمومی (و برخی اطلاعات دیگر) هویتی دیگر دارای مقداری مشخص است\&. (بخش Certificate را ببینید\&.) هنگامی که داده‌ها به صورت دیجیتال امضا می‌شوند، امضا می‌تواند برای بررسی یکپارچگی و اصالت داده‌ها راستی‌آزمایی شود\&. یکپارچگی بدان معناست که داده‌ها دستکاری یا اصلاح نشده‌اند، و اصالت به این معنی است که داده‌ها از سوی همان طرفی می‌آیند که ادعای ایجاد و امضای آن را دارد\&. .PP دستور \f3keytool\fR همچنین به کاربران امکان می‌دهد کلیدهای مخفی (secret keys) و عبارات عبور مورد استفاده در رمزنگاری و رمزگشایی متقارن (DES) را مدیریت نمایند\&. .PP دستور \f3keytool\fR کلیدها و گواهی‌ها را در یک keystore ذخیره می‌کند\&. بخش KeyStore aliases را ببینید\&. .SH "نکات دستور و گزینه‌ها (COMMAND AND OPTION NOTES)" برای مشاهدهٔ فهرست و توضیحات دستورهای گوناگون، بخش Commands را ببینید\&. .TP 0.2i \(bu پیش از نام تمامی دستورها و گزینه‌ها یک علامت منها (-) قرار می‌گیرد\&. .TP 0.2i \(bu گزینه‌های هر دستور را می‌توان به هر ترتیبی مشخص کرد\&. .TP 0.2i \(bu تمامی مواردی که کج (italic) نبوده یا درون آکولاد یا قلاب قرار ندارند، باید دقیقاً به همان صورت نوشته شوند\&. .TP 0.2i \(bu آکولادهای احاطه‌کنندهٔ یک گزینه نشان می‌دهند که در صورت مشخص نشدن گزینه در خط فرمان، یک مقدار پیش‌فرض استفاده خواهد شد\&. بخش Option Defaults را ببینید\&. آکولاد همچنین در اطراف گزینه‌های \f3-v\fR، \f3-rfc\fR و \f3-J\fR نیز استفاده شده است، که تنها در صورت حضور در خط فرمان معنا دارند\&. آن‌ها هیچ مقدار پیش‌فرضی به‌جز عدم وجود ندارند\&. .TP 0.2i \(bu قلاب‌های احاطه‌کنندهٔ یک گزینه نشان می‌دهند که در صورت مشخص نشدن گزینه در خط فرمان، مقدار آن از کاربر پرسیده می‌شود\&. برای گزینهٔ \f3-keypass\fR، اگر گزینه را در خط فرمان مشخص نکنید، دستور \f3keytool\fR ابتدا تلاش می‌کند تا از گذرواژهٔ keystore برای بازیابی کلید خصوصی/مخفی استفاده کند\&. اگر این تلاش ناموفق باشد، دستور \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 و در صورتی که \-keyalg برابر "RSA" باشد)\fP .fi .nf \f3 1024 (هنگام استفاده از \-genkeypair و در صورتی که \-keyalg برابر "DSA" باشد)\fP .fi .nf \f3 256 (هنگام استفاده از \-genkeypair و در صورتی که \-keyalg برابر "EC" باشد)\fP .fi .nf \f3 56 (هنگام استفاده از \-genseckey و در صورتی که \-keyalg برابر "DES" باشد)\fP .fi .nf \f3 168 (هنگام استفاده از \-genseckey و در صورتی که \-keyalg برابر "DESede" باشد)\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، راهنمای مرجع Java Cryptography Architecture (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 تعیین‌شده مستقیماً به مفسر Java ارسال می‌گردد\&. این گزینه هیچ فاصله‌ای ندارد\&. این آرگومان برای تنظیم محیط اجرا یا میزان مصرف حافظه کاربردی است\&. برای دیدن فهرستی از گزینه‌های ممکن مفسر، دستور \f3java -h\fR یا \f3java -X\fR را در خط فرمان وارد کنید\&. .PP این گزینه‌ها می‌توانند برای تمامی دستورهایی که روی یک keystore عمل می‌کنند مشخص شوند: .TP -storetype \fIstoretype\fR .br این توصیف‌کننده نوع keystore مورد نظر را برای نمونه‌سازی مشخص می‌کند\&. .TP -keystore \fIkeystore\fR .br مکان keystore\&. اگر از \f3storetype\fR نوع JKS استفاده شود و فایل keystore هنوز وجود نداشته باشد، اجرای برخی از دستورهای \f3keytool\fR می‌تواند منجر به ایجاد یک فایل keystore جدید شود\&. برای نمونه، اگر \f3keytool -genkeypair\fR فراخوانی شود و گزینهٔ \f3-keystore\fR مشخص نشده باشد، در صورتی که فایل keystore پیش‌فرض به نام \f3\&.keystore\fR در دایرکتوری خانگی کاربر از قبل وجود نداشته باشد ایجاد می‌شود\&. به همین ترتیب، اگر گزینهٔ \f3-keystore ks_file\fR مشخص شود اما ks_file وجود نداشته باشد، ایجاد خواهد شد\&. برای اطلاعات بیشتر دربارهٔ \f3storetype\fR نوع JKS، بخش \fIKeyStore Implementation\fR را در نام‌های مستعار KeyStore ببینید\&. توجه داشته باشید که جریان ورودی از گزینهٔ \f3-keystore\fR به متد \f3KeyStore\&.load\fR ارسال می‌شود\&. اگر \f3NONE\fR به عنوان نشانی URL مشخص شده باشد، یک جریان تهی (null stream) به متد \f3KeyStore\&.load\fR فرستاده می‌شود\&. در صورتی که keystore مبتنی بر فایل نباشد، برای نمونه هنگامی که روی یک دستگاه توکن سخت‌افزاری قرار دارد، باید مقدار \f3NONE\fR تعیین شود\&. .TP -storepass[:\fIenv\fR| :\fIfile\fR] argument .br گذرواژه‌ای که برای محافظت از یکپارچگی keystore استفاده می‌شود\&. اگر اصلاح‌کنندهٔ \f3env\fR یا \f3file\fR مشخص نشده باشد، گذرواژه دارای آرگومان \f3value\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 را می‌پذیرند\&. به یاد داشته باشید که گزینهٔ گذرواژه و اصلاح‌کننده را با یک دونقطه (:) از هم جدا کنید\&. گذرواژه باید برای تمام دستورهایی که به محتویات keystore دسترسی دارند ارائه شود\&. برای چنین دستورهایی، هنگامی که گزینهٔ \f3-storepass\fR در خط فرمان مشخص نشده باشد، از کاربر خواسته می‌شود آن را وارد کند\&. هنگام بازیابی اطلاعات از keystore، ارائه گذرواژه اختیاری است\&. اگر هیچ گذرواژه‌ای مشخص نشود، یکپارچگی اطلاعات بازیابی‌شده قابل تأیید نخواهد بود و یک هشدار نمایش داده می‌شود\&. .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 تعیین شود که گذرواژه باید از طریق یک مسیر احراز هویت محافظت‌شده مانند یک دستگاه کارت‌خوان PIN اختصاصی وارد شود\&. از آنجا که در دستور \f3-importkeystore\fR دو keystore درگیر هستند، دو گزینهٔ \f3-srcprotected\fR و \f3-destprotected\fR به ترتیب برای keystore مبدأ و مقصد ارائه شده‌اند\&. .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 یا هر \fIOID string\fR باشد\&. آرگومان \fIusage\fR می‌تواند با چند نویسهٔ نخست یا به شیوهٔ شتری خلاصه شود، تا زمانی که ابهامی پیش نیاید\&. مقادیر \f3usage\fR به بزرگی و کوچکی حروف حساس هستند\&. .TP SAN یا SubjectAlternativeName \fIمقادیر\fR: \f3type\fR:\f3value\fR(,t\f3ype: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 باشد، مقدار آن برابر با تخلیهٔ شانزده‌شانزدهی (hexadecimal dump) از کدگذاری DER مربوط به \f3extnValue\fR برای افزونه، بدون در نظر گرفتن بایت‌های نوع OCTET STRING و طول است\&. هر نویسهٔ اضافی به جز اعداد استاندارد شانزده‌شانزدهی (0-9، a-f، A-F) در رشتهٔ HEX نادیده گرفته می‌شود\&. بنابراین، هر دو مقدار 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 نیز وجود داشته باشد، مقدار و حیاتی بودن (criticality) آن، مقدار موجود در درخواست را لغو می‌کند\&. .PP افزونهٔ \f3subjectKeyIdentifier\fR همواره ایجاد می‌شود\&. برای گواهی‌هایی که خودامضاشده نیستند، \f3authorityKeyIdentifier\fR ایجاد می‌گردد\&. .PP \fIنکته:\fR کاربران باید آگاه باشند که برخی از ترکیب‌های افزونه‌ها (و دیگر فیلدهای گواهی) ممکن است با استانداردهای اینترنت منطبق نباشند\&. بخش Certificate Conformance Warning را ببینید\&. .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 -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 v3 قرار می‌دهد که به عنوان یک زنجیرهٔ گواهی تک‌عنصری ذخیره می‌شود\&. این زنجیرهٔ گواهی و کلید خصوصی در یک مدخل جدید در keystore که با alias مشخص می‌شود ذخیره می‌گردند\&. مقدار \f3keyalg\fR الگوریتمی را که باید برای تولید جفت‌کلید استفاده شود تعیین می‌کند، و مقدار \f3keysize\fR اندازهٔ هر کلید تولیدی را مشخص می‌سازد\&. مقدار \f3sigalg\fR الگوریتمی را که باید برای امضای گواهی خودامضاشده به کار رود تعیین می‌کند\&. این الگوریتم باید با مقدار \f3keyalg\fR سازگار باشد\&. مقدار \f3dname\fR نام متمایز X\&.500 مربوط به مقدار \f3alias\fR را تعیین می‌کند و به عنوان فیلدهای صادرکننده (issuer) و موضوع (subject) در گواهی خودامضاشده استفاده می‌شود\&. اگر هیچ نام متمایزی در خط فرمان ارائه نشود، از کاربر خواسته می‌شود آن را وارد کند\&. مقدار \f3keypass\fR گذرواژه‌ای است که برای محافظت از کلید خصوصی جفت‌کلید تولیدشده استفاده می‌شود\&. اگر هیچ گذرواژه‌ای ارائه نشود، از کاربر خواسته می‌شود آن را وارد کند\&. اگر در اعلان کلید \fIReturn\fR را فشار دهید، گذرواژهٔ کلید برابر با گذرواژهٔ keystore تنظیم می‌شود\&. مقدار \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 یک کلید مخفی تولید کرده و آن را در یک \f3KeyStore\&.SecretKeyEntry\fR جدید که با \f3alias\fR مشخص می‌شود، ذخیره می‌کند\&. مقدار \f3keyalg\fR الگوریتم مورد استفاده برای تولید کلید مخفی را تعیین کرده و مقدار \f3keysize\fR اندازه کلید تولیدی را مشخص می‌سازد\&. مقدار \f3keypass\fR گذرواژه‌ای است که از کلید مخفی محافظت می‌کند\&. اگر گذرواژه‌ای ارائه نشود، از کاربر درخواست می‌شود\&. اگر در خط اعلان کلید Return را بفشارید، گذرواژه کلید بر روی همان گذرواژه استفاده‌شده برای \f3keystore\fR تنظیم می‌شود\&. مقدار \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 خوانده و آن را در مدخل \f3keystore\fR مشخص‌شده با \f3alias\fR ذخیره می‌کند\&. اگر فایلی مشخص نشود، گواهی یا زنجیره گواهی از \f3stdin\fR خوانده می‌شود\&. دستور \f3keytool\fR می‌تواند گواهی‌های X\&.509 نگارش‌های v1، v2 و v3 و زنجیره‌های گواهی با فرمت PKCS#7 متشکل از این نوع گواهی‌ها را وارد کند\&. داده‌های مورد نظر برای وارد شدن باید در فرمت کدگذاری دودویی یا کدگذاری قابل‌چاپ (که به نام کدگذاری Base64 نیز شناخته می‌شود) طبق تعریف استاندارد اینترنتی RFC 1421 ارائه شوند\&. در حالت دوم، کدگذاری باید در ابتدا با رشته‌ای که با \f3-\fR\f3----BEGIN\fR آغاز می‌شود و در انتها با رشته‌ای که با \f3-----END\fR خاتمه می‌یابد محدود شده باشد\&. شما به دو دلیل یک گواهی را وارد می‌کنید: افزودن آن به فهرست گواهی‌های مورد اعتماد، و وارد کردن پاسخ گواهی دریافت شده از یک مرجع صدور گواهی (CA) در نتیجه ارسال یک درخواست امضای گواهی (CSR) به آن CA (گزینه \f3-certreq\fR را در بخش Commands ببینید)\&. نوع عملیات وارد کردن بر اساس مقدار گزینه \f3-alias\fR تعیین می‌شود\&. اگر نام مستعار به یک مدخل کلید اشاره نکند، دستور \f3keytool\fR فرض می‌کند که قصد افزودن یک مدخل گواهی مورد اعتماد را دارید\&. در این حالت، نام مستعار نباید از قبل در keystore وجود داشته باشد\&. اگر نام مستعار از قبل موجود باشد، دستور \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 گذرواژه‌ای است که برای محافظت از عبارت عبور وارد شده استفاده می‌شود\&. اگر هیچ گذرواژه‌ای ارائه نشود، از کاربر خواسته می‌شود\&. اگر در خط اعلان کلید Return را بفشارید، گذرواژه کلید بر روی همان گذرواژه استفاده‌شده برای \f3keystore\fR تنظیم می‌شود\&. طول \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 یک مدخل منفرد یا تمامی مدخل‌ها را از یک keystore مبدأ به یک keystore مقصد وارد می‌کند\&. هنگامی که گزینه \f3-srcalias\fR مشخص شده باشد، دستور مدخل منفرد شناسایی‌شده توسط نام مستعار را به keystore مقصد وارد می‌کند\&. اگر نام مستعار مقصد با \f3destalias\fR تعیین نشده باشد، از \f3srcalias\fR به عنوان نام مستعار مقصد استفاده می‌شود\&. اگر مدخل مبدأ با یک گذرواژه محافظت شده باشد، \f3srckeypass\fR برای بازیابی مدخل به کار می‌رود\&. اگر \fIsrckeypass\fR ارائه نشود، دستور \f3keytool\fR تلاش می‌کند با استفاده از \f3srcstorepass\fR مدخل را بازیابی کند\&. چنانچه \f3srcstorepass\fR مشخص نشده باشد یا نادرست باشد، گذرواژه از کاربر پرسیده می‌شود\&. مدخل مقصد با \f3destkeypass\fR محافظت می‌شود\&. اگر \f3destkeypass\fR ارائه نشود، مدخل مقصد با گذرواژه مدخل مبدأ محافظت خواهد شد\&. برای نمونه، بیشتر ابزارهای متفرقه نیازمند یکسان بودن \f3storepass\fR و \f3keypass\fR در یک keystore با فرمت PKCS #12 هستند\&. به منظور ایجاد یک keystore با فرمت PKCS #12 برای این ابزارها، همواره \f3-destkeypass\fR را یکسان با \f3-deststorepass\fR مشخص کنید\&. چنانچه گزینه \f3-srcalias\fR ارائه نشود، تمامی مدخل‌های keystore مبدأ به keystore مقصد وارد خواهند شد\&. هر مدخل مقصد ذیل نام مستعار مربوط به مدخل مبدأ ذخیره می‌شود\&. اگر مدخل مبدأ با گذرواژه محافظت شده باشد، از \f3srcstorepass\fR برای بازیابی مدخل استفاده می‌شود\&. اگر \f3srcstorepass\fR ارائه نشده باشد یا نادرست باشد، گذرواژه از کاربر درخواست می‌شود\&. در صورتی که نوع یک مدخل در keystore مبدأ درون keystore مقصد پشتیبانی نشود، یا هنگام ذخیره یک مدخل در keystore مقصد خطایی رخ دهد، از کاربر سؤال می‌شود که آیا از این مدخل صرف‌نظر شده و ادامه یابد یا عملیات متوقف شود\&. مدخل مقصد با گذرواژه مدخل مبدأ محافظت می‌شود\&. اگر نام مستعار مقصد از قبل در keystore مقصد وجود داشته باشد، از کاربر پرسیده می‌شود که مدخل رونویسی شود یا یک مدخل جدید با نام مستعار متفاوتی ایجاد گردد\&. اگر گزینه \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) ارسال شود\&. مرجع صدور گواهی، درخواست‌دهنده گواهی را (معمولاً به صورت برون‌خط) احراز هویت کرده و یک گواهی یا زنجیره گواهی بازمی‌گرداند که برای جایگزینی زنجیره گواهی موجود (که در ابتدا شامل یک گواهی خودامضا است) در keystore استفاده می‌شود\&. کلید خصوصی مرتبط با alias برای ساخت درخواست گواهی PKCS #10 استفاده می‌شود\&. برای دسترسی به کلید خصوصی، گذرواژه صحیح باید ارائه شود\&. اگر \f3keypass\fR در خط فرمان مشخص نشده باشد و با گذرواژه‌ای که برای محافظت از یکپارچگی keystore استفاده شده تفاوت داشته باشد، از کاربر پرسیده می‌شود\&. چنانچه \f3dname\fR ارائه شده باشد، به عنوان موضوع (subject) در CSR لحاظ می‌شود؛ در غیر این صورت، نام متمایز (Distinguished Name) استاندارد X\&.500 متصل به نام مستعار استفاده خواهد شد\&. مقدار \f3sigalg\fR الگوریتمی را مشخص می‌کند که باید برای امضای CSR به کار رود\&. درخواست CSR در فایل certreq_file ذخیره می‌شود\&. در صورتی که فایلی تعیین نشود، CSR به \f3stdout\fR فرستاده خواهد شد\&. برای وارد کردن پاسخ دریافتی از CA، از دستور \f3importcert\fR استفاده کنید\&. .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 را از keystore خوانده و آن را در فایل 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 محتویات مدخل keystore مشخص‌شده با \f3alias\fR را در \f3stdout\fR چاپ می‌کند\&. اگر هیچ \f3alias\fRی مشخص نشود، محتویات کل keystore چاپ می‌شود\&. این دستور به‌طور پیش‌فرض اثرانگشت 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 را برای تونل‌زنی پیشکار در خط فرمان مشخص کرد\&. راهنمای مرجع Java Secure Socket Extension (JSSE) را در http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/security/jsse/JSSERefGuide\&.html ببینید \fIنکته:\fR این گزینه را می‌توان به‌طور مستقل از یک keystore استفاده کرد\&. .TP -printcrl .sp .nf \f3\-file \fIcrl_\fR {\-v}\fP .fi .sp فهرست ابطال گواهی (CRL) را از فایل \f3crl_\fR می‌خواند\&. فهرست CRL فهرستی از گواهی‌های دیجیتال است که توسط مرجع صدور گواهی (CA) صادرکننده باطل شده‌اند\&. مرجع صدور گواهی فایل \f3crl_\fR را تولید می‌کند\&. \fIنکته:\fR این گزینه را می‌توان به‌طور مستقل از یک keystore استفاده کرد\&. .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 گذرواژهٔ مورد استفاده برای محافظت از یکپارچگی محتویات keystore را تغییر می‌دهد\&. گذرواژهٔ جدید \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 در خط فرمان ارائه نشود، و گذرواژهٔ کلید با گذرواژهٔ keystore متفاوت باشد، آن‌گاه از کاربر خواسته می‌شود آن را وارد کند\&. اگر گزینهٔ \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 را از keystore حذف می‌کند\&. هنگامی که هیچ نام مستعاری در خط فرمان مشخص نشده باشد، از کاربر خواسته می‌شود آن را وارد کند\&. .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 یک مدخل موجود در keystore را از \f3alias\fR مشخص‌شده به یک نام مستعار جدید یعنی \f3destalias\fR منتقل می‌کند\&. اگر نام مستعار مقصدی ارائه نشود، دستور آن را از کاربر می‌پرسد\&. اگر مدخل اصلی با یک گذرواژهٔ مدخل محافظت شده باشد، می‌توان آن گذرواژه را با گزینهٔ \f3-keypass\fR وارد کرد\&. اگر گذرواژهٔ کلیدی مشخص نشود، ابتدا \f3storepass\fR (در صورت ارائه شدن) آزمایش می‌شود\&. در صورت ناموفق بودن، از کاربر برای وارد کردن گذرواژه درخواست می‌شود\&. .TP -help .br دستورهای پایه‌ای و گزینه‌های آن‌ها را فهرست می‌کند\&. برای اطلاعات بیشتر دربارهٔ یک دستور خاص، عبارت زیر را وارد کنید که در آن \f3command_name\fR نام دستور است: \f3keytool -command_name -help\fR\&..SH "مثال‌ها (EXAMPLES)" این مثال مراحل متوالی ایجاد یک keystore برای مدیریت جفت‌کلید عمومی/خصوصی و گواهی‌های دریافتی از هویت‌های معتمد را شرح می‌دهد\&. .SS "تولید جفت‌کلید (GENERATE THE KEY PAIR)" ابتدا یک keystore بسازید و جفت‌کلید را تولید کنید\&. می‌توانید از دستوری مانند دستور زیر که در یک خط تایپ می‌شود، استفاده کنید: .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 این دستور یک keystore به نام \f3mykeystore\fR را در دایرکتوری کاری (با این فرض که از قبل وجود ندارد) ایجاد کرده و گذرواژه مشخص‌شده با \f3\fR را به آن اختصاص می‌دهد\&. همچنین یک جفت‌کلید عمومی/خصوصی برای هویتی تولید می‌کند که نام متمایز (distinguished name) آن دارای نام معمول (common name) با مقدار Mark Jones، واحد سازمانی با مقدار Java، سازمان با مقدار Oracle و کد کشور دو حرفی با مقدار US است\&. این دستور برای ساخت کلیدها از الگوریتم پیش‌فرض تولید کلید DSA استفاده می‌کند؛ اندازه هر دو کلید ۱۰۲۴ بیت است\&. .PP این دستور از الگوریتم امضای پیش‌فرض SHA1withDSA برای ایجاد یک گواهی خودامضا شامل کلید عمومی و اطلاعات نام متمایز استفاده می‌کند\&. این گواهی به مدت ۱۸۰ روز معتبر است و با کلید خصوصی در یک مدخل keystore که با نام مستعار \f3business\fR به آن اشاره می‌شود، پیوند دارد\&. به کلید خصوصی، گذرواژه مشخص‌شده با \f3\fR اختصاص داده می‌شود\&. .PP اگر مقادیر پیش‌فرض گزینه‌ها پذیرفته شوند، دستور بسیار کوتاه‌تر خواهد شد\&. در این حالت نیازی به هیچ گزینه‌ای نیست و برای گزینه‌های مشخص‌نشده‌ای که مقدار پیش‌فرض دارند، از مقادیر پیش‌فرض استفاده می‌شود\&. برای هر مقدار الزامی، اعلان دریافت خواهد شد\&. می‌توانید از دستور زیر استفاده کنید: .sp .nf \f3keytool \-genkeypair\fP .fi .nf \f3\fP .fi .sp در این حالت، یک مدخل keystore با نام مستعار \f3mykey\fR، همراه با یک جفت‌کلید تازه تولیدشده و گواهی‌نامه‌ای که برای ۹۰ روز معتبر است، ایجاد می‌شود\&. این مدخل در keystore با نام \f3\&.keystore\fR در دایرکتوری خانگی شما قرار می‌گیرد\&. اگر این keystore از قبل وجود نداشته باشد، ساخته خواهد شد\&. اطلاعات نام متمایز، گذرواژه keystore و گذرواژه کلید خصوصی از شما درخواست می‌شود\&. .PP باقی مثال‌ها فرض می‌کنند که شما دستور \f3-genkeypair\fR را بدون گزینه‌های مشخص اجرا کرده‌اید و به اعلان‌ها با مقادیری برابر با موارد مشخص‌شده در نخستین دستور \f3-genkeypair\fR پاسخ داده‌اید (برای مثال، نام متمایز با مقادیر \f3cn=Mark Jones\fR، \f3ou=Java\fR، \f3o=Oracle\fR، \f3c=US\fR)\&. .SS "درخواست گواهی امضاشده از مرجع صدور گواهی (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 زنجیره‌ای از گواهی‌ها را بازمی‌گرداند که هر یک کلید عمومی امضاکننده گواهی پیشین در زنجیره را اصالت‌سنجی می‌کند\&. .SS "درون‌ریزی گواهی برای مرجع صدور گواهی (IMPORT A CERTIFICATE FOR THE CA)" اکنون باید گواهی خودامضا را با یک زنجیره گواهی جایگزین کنید، به‌طوری که هر گواهی در این زنجیره، کلید عمومی امضاکننده گواهی پیشین را تا رسیدن به یک CA ریشه اصالت‌سنجی کند\&. .PP پیش از آنکه پاسخ گواهی را از یک CA درون‌ریزی کنید، به یک یا چند گواهی معتمد در keystore خود یا در فایل keystore به نام \f3cacerts\fR نیاز دارید\&. بخش \f3-importcert\fR در Commands را ببینید\&. .TP 0.2i \(bu اگر پاسخ گواهی یک زنجیره گواهی باشد، به بالاترین گواهی این زنجیره نیاز دارید؛ گواهی CA ریشه که کلید عمومی CA را اصالت‌سنجی می‌کند\&. .TP 0.2i \(bu اگر پاسخ گواهی یک تک‌گواهی باشد، به گواهی مربوط به CA صادرکننده (آن که گواهی را امضا کرده است) نیاز دارید\&. اگر آن گواهی خودامضا نباشد، به گواهی امضاکننده آن نیاز خواهید داشت و به همین ترتیب تا رسیدن به یک گواهی CA ریشه خودامضا\&. .PP فایل keystore به نام \f3cacerts\fR همراه با چندین گواهی CA ریشه VeriSign عرضه می‌شود، بنابراین احتمالاً نیازی نخواهید داشت که گواهی VeriSign را به‌عنوان یک گواهی معتمد در keystore خود درون‌ریزی کنید\&. اما اگر یک گواهی امضاشده را از یک CA دیگر درخواست کنید و گواهی اصالت‌سنجی کلید عمومی آن CA به \f3cacerts\fR اضافه نشده باشد، باید گواهی دریافتی از آن CA را به‌عنوان یک گواهی معتمد درون‌ریزی نمایید\&. .PP یک گواهی از یک CA معمولاً یا خودامضا است یا توسط CA دیگری امضا شده است، که در این صورت به گواهی اصالت‌سنجی کلید عمومی آن CA نیاز دارید\&. فرض کنید شرکت ABC, Inc\&. یک CA است و فایلی به نام A\f3BCCA\&.cer\fR دریافت کرده‌اید که قرار است یک گواهی خودامضا از ABC باشد و کلید عمومی آن CA را اصالت‌سنجی کند\&. دقت کنید پیش از آنکه آن را به‌عنوان یک گواهی معتمد درون‌ریزی نمایید، از معتبر بودن آن اطمینان حاصل کنید\&. ابتدا آن را با دستور \f3keytool -printcert\fR یا دستور \f3keytool -importcert\fR بدون گزینه \f3-noprompt\fR مشاهده کرده و مطمئن شوید که اثرانگشت‌های نمایش‌داده‌شده گواهی با مقادیر مورد انتظار همخوانی دارند\&. می‌توانید با شخصی که گواهی را ارسال کرده است تماس بگیرید و اثرانگشت‌هایی را که می‌بینید با آنچه آن‌ها ارائه می‌کنند یا در یک مخزن امن کلید عمومی نشان داده می‌شود، مقایسه کنید\&. تنها زمانی که اثرانگشت‌ها یکسان باشند، تضمین می‌شود که گواهی هنگام انتقال با گواهی شخص دیگری (برای مثال، یک مهاجم) تعویض نشده است\&. اگر چنین حمله‌ای رخ دهد و گواهی را پیش از درون‌ریزی بررسی نکرده باشید، به هر آنچه توسط مهاجم امضا شده است اعتماد خواهید کرد\&. .PP اگر اطمینان دارید که گواهی معتبر است، می‌توانید با دستور زیر آن را به keystore خود اضافه کنید: .sp .nf \f3keytool \-importcert \-alias abc \-file ABCCA\&.cer\fP .fi .nf \f3\fP .fi .sp این دستور با استفاده از داده‌های فایل ABCCA\&.cer، یک مدخل گواهی معتمد در keystore ایجاد می‌کند و نام مستعار \f3abc\fR را به این مدخل اختصاص می‌دهد\&. .SS "درون‌ریزی پاسخ گواهی از مرجع صدور گواهی (IMPORT THE CERTIFICATE REPLY FROM THE CA)" پس از آنکه گواهی اصالت‌سنجی کلید عمومی CA (که درخواست امضای گواهی را به آن ارسال کرده بودید) را درون‌ریزی کردید (یا چنین گواهی‌ای از قبل در فایل cacerts وجود داشته باشد)، می‌توانید پاسخ گواهی را درون‌ریزی کرده و گواهی خودامضای خود را با یک زنجیره گواهی جایگزین کنید\&. این زنجیره یا همان زنجیره بازگردانده‌شده توسط CA در پاسخ به درخواست شماست (زمانی که پاسخ CA یک زنجیره باشد)، یا زنجیره‌ای است که با استفاده از پاسخ گواهی و گواهی‌های معتمدی که از قبل در keystore محل درون‌ریزی پاسخ یا در فایل keystore به نام \f3cacerts\fR موجود است ساخته می‌شود (زمانی که پاسخ CA یک تک‌گواهی باشد)\&. .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) استفاده کرده‌اید، کلاینت‌هایی که می‌خواهند از این فایل استفاده کنند مایل خواهند بود امضای شما را اصالت‌سنجی نمایند\&. یک روش برای اصالت‌سنجی هویت شما توسط کلاینت‌ها این است که ابتدا گواهی کلید عمومی شما را به‌عنوان یک مدخل معتمد در keystore خود درون‌ریزی کنند\&. .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 برای درون‌ریزی کل یک keystore درون یک keystore دیگر استفاده می‌شود؛ بدین معنی که تمامی مدخل‌های keystore مبدأ، شامل کلیدها و گواهی‌ها، همگی تنها با یک دستور به keystore مقصد درون‌ریزی می‌شوند\&. می‌توانید از این دستور برای درون‌ریزی مدخل‌ها از نوع متفاوتی از keystore استفاده کنید\&. در طول درون‌ریزی، تمامی مدخل‌های جدید در keystore مقصد، همان نام‌های مستعار و گذرواژه‌های محافظتی (برای کلیدهای محرمانه و کلیدهای خصوصی) را خواهند داشت\&. اگر دستور \f3keytool\fR نتواند کلیدهای خصوصی یا کلیدهای محرمانه را از keystore مبدأ بازیابی کند، از شما گذرواژه می‌خواهد\&. اگر تکرار نام مستعار را تشخیص دهد، از شما یک نام مستعار جدید درخواست می‌کند که می‌توانید یک نام مستعار جدید مشخص نمایید یا به دستور \f3keytool\fR اجازه دهید مدخل موجود را بازنویسی کند\&. .PP برای نمونه، جهت درون‌ریزی مدخل‌ها از یک keystore نوع معمول JKS به نام key\&.jks به یک keystore سخت‌افزاری از نوع 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 همچنین می‌تواند برای درون‌ریزی یک تک‌مدخل از یک keystore مبدأ به keystore مقصد استفاده شود\&. در این حالت، افزون بر گزینه‌هایی که در مثال پیشین مشاهده کردید، باید نام مستعاری را که قصد درون‌ریزی آن را دارید نیز مشخص نمایید\&. با مشخص کردن گزینه \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 زیر برای تولید جفت‌کلیدها و گواهی‌ها برای سه موجودیت هستند: مرجع صدور گواهی ریشه (\f3root\fR)، مرجع صدور گواهی میانی (\f3ca\fR) و سرور SSL (\f3server\fR)\&. اطمینان حاصل کنید که تمام گواهی‌ها را در همان keystore ذخیره می‌کنید\&. در این مثال‌ها، 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) یک keystore تسهیلاتی برای ذخیره‌سازی کلیدهای رمزنگاری و گواهی‌ها است\&. .TP مدخل‌های مخزن کلید (Keystore entries) مخازن کلید (keystores) می‌توانند انواع مختلفی از مدخل‌ها را داشته باشند\&. دو نوع مدخل که بیشترین کاربرد را برای دستور \f3keytool\fR دارند شامل موارد زیر هستند: \fIمدخل‌های کلید (Key entries)\fR: هر مدخل حاوی اطلاعات کلید رمزنگاری بسیار حساس است که برای جلوگیری از دسترسی غیرمجاز در یک قالب محافظت‌شده ذخیره می‌شود\&. به‌طور معمول، کلید ذخیره‌شده در این نوع مدخل، یک کلید محرمانه (secret key) یا یک کلید خصوصی (private key) به همراه زنجیره گواهی برای کلید عمومی متناظر است\&. به بخش «زنجیره‌های گواهی» (Certificate Chains) مراجعه کنید\&. دستور \f3keytool\fR می‌تواند هر دو نوع مدخل را مدیریت کند، در حالی که ابزار \f3jarsigner\fR تنها نوع دوم مدخل، یعنی کلیدهای خصوصی و زنجیره‌های گواهی مرتبط با آن‌ها را مدیریت می‌کند\&. \fIمدخل‌های گواهی مورد اعتماد (Trusted certificate entries)\fR: هر مدخل حاوی یک گواهی کلید عمومی منفرد است که به طرف دیگری تعلق دارد\&. این مدخل یک گواهی مورد اعتماد نامیده می‌شود زیرا مالک keystore اعتماد دارد که کلید عمومی موجود در گواهی به هویتی تعلق دارد که توسط موضوع (مالک) گواهی مشخص شده است\&. صادرکننده گواهی با امضای گواهی، این موضوع را ضمانت می‌کند\&. .TP نام‌های مستعار مخزن کلید (KeyStore aliases) دسترسی به تمام مدخل‌های keystore (مدخل‌های کلید و مدخل‌های گواهی مورد اعتماد) از طریق نام‌های مستعار (alias) یکتا انجام می‌شود\&. هنگامی که با دستور \f3-genseckey\fR برای تولید یک کلید محرمانه، دستور \f3-genkeypair\fR برای تولید یک جفت‌کلید (کلید عمومی و خصوصی)، یا دستور \f3-importcert\fR برای افزودن یک گواهی یا زنجیره گواهی به فهرست گواهی‌های مورد اعتماد موجودیتی را به keystore اضافه می‌کنید، یک نام مستعار مشخص می‌شود\&. دستورهای بعدی \f3keytool\fR باید از همین نام مستعار برای ارجاع به آن موجودیت استفاده کنند\&. برای نمونه، می‌توانید از نام مستعار \f3duke\fR برای تولید یک جفت‌کلید عمومی/خصوصی جدید و قرار دادن کلید عمومی در یک گواهی خودامضا با دستور زیر استفاده کنید\&. به بخش «زنجیره‌های گواهی» (Certificate Chains) مراجعه کنید\&. .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 رابط‌های مشخصی را برای دسترسی و اصلاح اطلاعات در یک keystore فراهم می‌کند\&. این امکان وجود دارد که چندین پیاده‌سازی عینی (concrete) مختلف وجود داشته باشد، که در آن هر پیاده‌سازی برای نوع خاصی از keystore است\&. در حال حاضر، دو ابزار خط فرمان (\f3keytool\fR و \f3jarsigner\fR) و یک ابزار مبتنی بر رابط گرافیکی (GUI) با نام Policy Tool از پیاده‌سازی‌های keystore استفاده می‌کنند\&. از آنجا که کلاس \f3KeyStore\fR عمومی (\f3public\fR) است، کاربران می‌توانند برنامه‌های امنیتی بیشتری بنویسند که از آن استفاده کنند\&. یک پیاده‌سازی پیش‌فرض توکار وجود دارد که توسط Oracle ارائه شده است\&. این پیاده‌سازی keystore را به عنوان فایلی با یک نوع (قالب) اختصاصی keystore به نام JKS پیاده‌سازی می‌کند\&. این سازوکار از هر کلید خصوصی با گذرواژه اختصاصی آن محافظت می‌کند و همچنین یکپارچگی کل keystore را با یک گذرواژه (احتمالاً متفاوت) تأمین می‌نماید\&. پیاده‌سازی‌های keystore مبتنی بر ارائه‌دهنده (provider-based) هستند\&. به‌طور دقیق‌تر، رابط‌های برنامه‌نویسی ارائه‌شده توسط \f3KeyStore\fR بر اساس یک «رابط ارائه‌دهنده خدمات» (SPI یا Service Provider Interface) پیاده‌سازی می‌شوند\&. یعنی، یک کلاس انتزاعی متناظر به نام \f3KeystoreSpi\fR، که آن هم در بسته \f3java\&.security\fR قرار دارد، وجود دارد که متدهای رابط ارائه‌دهنده خدمات را که ارائه‌دهندگان باید پیاده‌سازی کنند، تعریف می‌کند\&. اصطلاح \fIارائه‌دهنده (provider)\fR به یک بسته یا مجموعه‌ای از بسته‌ها اشاره دارد که پیاده‌سازی عینی زیرمجموعه‌ای از خدمات قابل دسترسی توسط Java Security API را ارائه می‌دهند\&. برای ارائه یک پیاده‌سازی keystore، کلاینت‌ها باید یک ارائه‌دهنده را پیاده‌سازی کرده و پیاده‌سازی زیرکلاسی از \f3KeystoreSpi\fR را فراهم کنند، همان‌گونه که در «چگونگی پیاده‌سازی یک ارائه‌دهنده در معماری رمزنگاری جاوا» در http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/security/crypto/HowToImplAProvider\&.html شرح داده شده است\&. برنامه‌ها می‌توانند با استفاده از متد کارخانه‌ای \f3getInstance\fR ارائه‌شده در کلاس \f3KeyStore\fR، انواع مختلف پیاده‌سازی‌های keystore را از ارائه‌دهندگان مختلف انتخاب کنند\&. نوع keystore، قالب داده و ذخیره‌سازی اطلاعات keystore و الگوریتم‌های مورداستفاده برای محافظت از کلیدهای خصوصی/محرمانه در keystore و یکپارچگی keystore را تعریف می‌کند\&. پیاده‌سازی‌های keystore از انواع مختلف با یکدیگر سازگار نیستند\&. دستور \f3keytool\fR روی هر پیاده‌سازی keystore مبتنی بر فایل کار می‌کند\&. این دستور مکان keystore ارائه‌شده در خط فرمان را به عنوان نام فایل در نظر گرفته و آن را به یک \f3FileInputStream\fR تبدیل می‌کند که اطلاعات keystore از آن بارگیری می‌شود\&. دستور \f3jarsigner\fR می‌تواند یک keystore را از هر مکانی که با یک URL قابل مشخص کردن باشد بخواند\&. برای \f3keytool\fR و \f3jarsigner\fR، می‌توانید نوع keystore را در خط فرمان با گزینه \f3-storetype\fR مشخص کنید\&. برای Policy Tool، می‌توانید نوع keystore را از منوی \fIKeystore\fR مشخص کنید\&. اگر نوع keystore را به‌طور صریح مشخص نکنید، ابزارها یک پیاده‌سازی keystore را بر اساس مقدار مشخصه \f3keystore\&.type\fR تعیین‌شده در فایل ویژگی‌های امنیتی انتخاب می‌کنند\&. فایل ویژگی‌های امنیتی \f3java\&.security\fR نام دارد و در دایرکتوری ویژگی‌های امنیتی، \f3java\&.home\elib\esecurity\fR در Windows و \f3java\&.home/lib/security\fR در Oracle Solaris قرار دارد، که در آن \f3java\&.home\fR دایرکتوری محیط زمان اجرا است؛ یعنی دایرکتوری \f3jre\fR در SDK یا بالاترین دایرکتوری Java Runtime Environment (JRE)\&. هر ابزار مقدار \f3keystore\&.type\fR را دریافت کرده و سپس تمام ارائه‌دهندگان نصب‌شده فعلی را بررسی می‌کند تا ارائه‌دهنده‌ای را بیابد که keystore از آن نوع را پیاده‌سازی کرده است\&. سپس از پیاده‌سازی keystore آن ارائه‌دهنده استفاده می‌کند\&. کلاس \f3KeyStore\fR یک متد ایستا به نام \f3getDefaultType\fR تعریف می‌کند که به برنامه‌ها و اپلت‌ها اجازه می‌دهد مقدار مشخصه \f3keystore\&.type\fR را بازیابی کنند\&. خط کد زیر یک نمونه از نوع پیش‌فرض keystore را مطابق آنچه در مشخصه \f3keystore\&.type\fR مشخص شده ایجاد می‌کند: .sp .nf \f3KeyStore keyStore = KeyStore\&.getInstance(KeyStore\&.getDefaultType());\fP .fi .nf \f3\fP .fi .sp نوع پیش‌فرض keystore مقدار \f3jks\fR است که نوع اختصاصی پیاده‌سازی keystore ارائه‌شده توسط Oracle می‌باشد\&. این مورد با خط زیر در فایل ویژگی‌های امنیتی مشخص شده است: .sp .nf \f3keystore\&.type=jks\fP .fi .nf \f3\fP .fi .sp برای اینکه ابزارها از پیاده‌سازی keystore دیگری به غیر از پیش‌فرض استفاده کنند، می‌توانید آن خط را برای مشخص کردن نوع متفاوتی از keystore تغییر دهید\&. برای نمونه، اگر بسته ارائه‌دهنده‌ای دارید که پیاده‌سازی keystore را برای نوعی به نام \f3pkcs12\fR ارائه می‌دهد، آن خط را به صورت زیر تغییر دهید: .sp .nf \f3keystore\&.type=pkcs12\fP .fi .nf \f3\fP .fi .sp \fIنکته:\fR بزرگی و کوچکی حروف در نام‌گذاری نوع keystore اهمیت ندارد\&. برای نمونه، JKS با jks یکسان در نظر گرفته می‌شود\&. .TP گواهی (Certificate) یک گواهی (یا گواهی کلید عمومی) بیانیه‌ای با امضای دیجیتال از سوی یک موجودیت (صادرکننده یا issuer) است که بیان می‌کند کلید عمومی و برخی اطلاعات دیگر یک موجودیت دیگر (موضوع یا subject) دارای مقدار مشخصی است\&. اصطلاحات زیر مرتبط با گواهی‌ها هستند: \fIکلیدهای عمومی (Public Keys)\fR: این‌ها اعدادی مرتبط با یک موجودیت خاص هستند و قرار است برای همه کسانی که نیاز به تعاملات مورد اعتماد با آن موجودیت دارند شناخته‌شده باشند\&. کلیدهای عمومی برای تأیید امضاها استفاده می‌شوند\&. \fIامضا شده به‌صورت دیجیتال (Digitally Signed)\fR: اگر داده‌ای به‌صورت دیجیتال امضا شده باشد، همراه با هویت یک موجودیت و امضایی ذخیره می‌شود که ثابت می‌کند آن موجودیت از داده‌ها آگاه است\&. داده‌ها با امضا شدن توسط کلید خصوصی موجودیت غیرقابل جعل می‌شوند\&. \fIهویت (Identity)\fR: یک روش شناخته‌شده برای نشانی‌دهی به یک موجودیت\&. در برخی سیستم‌ها، هویت همان کلید عمومی است، و در برخی دیگر می‌تواند هر چیزی باشد، از یک UID در Oracle Solaris گرفته تا یک نشانی ایمیل یا یک نام متمایز در X\&.509\&. \fIامضا (Signature)\fR: یک امضا روی بخشی از داده‌ها با استفاده از کلید خصوصی یک موجودیت محاسبه می‌شود؛ یعنی امضاکننده، که در مورد گواهی به عنوان صادرکننده (issuer) نیز شناخته می‌شود\&. \fIکلیدهای خصوصی (Private Keys)\fR: این‌ها اعدادی هستند که فرض بر این است تنها برای همان موجودیت خاصی که کلید خصوصی به آن تعلق دارد شناخته‌شده باشند (یعنی باید محرمانه بمانند)\&. کلیدهای خصوصی و عمومی در تمام سیستم‌های رمزنگاری کلید عمومی (که سیستم‌های رمزنگاری عمومی نیز نامیده می‌شوند) به‌صورت جفت وجود دارند\&. در یک سیستم متداول رمزنگاری کلید عمومی، مانند DSA، یک کلید خصوصی دقیقاً متناظر با یک کلید عمومی است\&. از کلیدهای خصوصی برای محاسبه امضاها استفاده می‌شود\&. \fIموجودیت (Entity)\fR: یک موجودیت عبارت است از یک فرد، سازمان، برنامه، رایانه، کسب‌وکار، بانک، یا هر چیز دیگری که تا حدی به آن اعتماد دارید\&. رمزنگاری کلید عمومی نیازمند دسترسی به کلیدهای عمومی کاربران است\&. در یک محیط شبکه‌ای بزرگ‌مقیاس، تضمین اینکه روابط قبلی بین موجودیت‌های در حال ارتباط برقرار شده باشد یا یک مخزن مورد اعتماد حاوی همه کلیدهای عمومی استفاده‌شده وجود داشته باشد غیرممکن است\&. گواهی‌ها به عنوان راه‌حلی برای این مشکل توزیع کلید عمومی ابداع شدند\&. اکنون یک مرجع صدور گواهی (CA) می‌تواند به عنوان شخص ثالث مورد اعتماد عمل کند\&. مراجع صدور گواهی موجودیت‌هایی مانند کسب‌وکارها هستند که برای امضا (صدور) گواهی برای موجودیت‌های دیگر مورد اعتماد قرار می‌گیرند\&. فرض بر این است که مراجع CA تنها گواهی‌های معتبر و قابل اعتماد ایجاد می‌کنند زیرا متعهد به توافق‌نامه‌های قانونی هستند\&. مراجع عمومی صدور گواهی زیادی وجود دارند، از جمله VeriSign، Thawte، Entrust و غیره\&. شما همچنین می‌توانید با استفاده از محصولاتی مانند Microsoft Certificate Server یا محصول Entrust CA، مرجع صدور گواهی خود را برای سازمانتان راه‌اندازی کنید\&. با دستور \f3keytool\fR می‌توان گواهی‌ها را نمایش داد، وارد (import) و صادر (export) کرد\&. همچنین امکان تولید گواهی‌های خودامضا وجود دارد\&. دستور \f3keytool\fR در حال حاضر گواهی‌های X\&.509 را مدیریت می‌کند\&. .TP گواهی‌های X\&.509 (X.509 Certificates) استاندارد X\&.509 مشخص می‌کند چه اطلاعاتی می‌تواند درون یک گواهی قرار گیرد و نحوه نگارش آن را توصیف می‌کند (قالب داده)\&. تمام داده‌های درون یک گواهی با دو استاندارد مرتبط به نام‌های ASN\&.1/DER کدگذاری می‌شوند\&. استاندارد نشانه‌گذاری نحو انتزاعی ۱ (Abstract Syntax Notation 1) داده‌ها را توصیف می‌کند\&. قواعد کدگذاری معین (Definite Encoding Rules) یک روش واحد برای ذخیره‌سازی و انتقال آن داده‌ها را شرح می‌دهد\&. تمام گواهی‌های X\&.509 علاوه بر امضا، دارای داده‌های زیر هستند: \fIنسخه (Version)\fR: این مشخص می‌کند کدام نسخه از استاندارد X\&.509 برای این گواهی اعمال می‌شود، که بر نوع اطلاعات قابل درج در آن تأثیر می‌گذارد\&. تاکنون سه نسخه تعریف شده است\&. دستور \f3keytool\fR می‌تواند گواهی‌های v1، v2 و v3 را وارد و صادر کند\&. این دستور گواهی‌های v3 را تولید می‌کند\&. نسخه ۱ استاندارد 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: «نام متمایز» (Distinguished Name) استاندارد X\&.500 برای موجودیتی که گواهی را امضا کرده است\&. به بخش «نام‌های متمایز X\&.500» (X.500 Distinguished Names) مراجعه کنید\&. این موجودیت معمولاً یک CA است\&. استفاده از این گواهی به معنای اعتماد به موجودیتی است که این گواهی را امضا کرده است\&. در برخی موارد، مانند گواهی‌های CA ریشه یا بالاترین سطح، صادرکننده گواهی خود را امضا می‌کند\&. \fIدوره اعتبار (Validity period)\fR: هر گواهی تنها برای مدت زمان محدودی معتبر است\&. این دوره با یک تاریخ و زمان شروع و یک تاریخ و زمان پایان توصیف می‌شود و می‌تواند به کوتاهی چند ثانیه یا تقریباً به بلندی یک قرن باشد\&. دوره اعتبار انتخابی به عوامل متعددی بستگی دارد، از جمله استحکام کلید خصوصی مورداستفاده برای امضای گواهی، یا مبلغی که فرد مایل است برای یک گواهی پرداخت کند\&. این دوره زمانی مورد انتظار است که موجودیت‌ها در صورتی که کلید خصوصی مرتبط افشا یا مصالحه نشده باشد، می‌توانند به مقدار عمومی اعتماد کنند\&. \fIنام موضوع (Subject name)\fR: نام موجودیتی که گواهی، کلید عمومی آن را مشخص می‌کند\&. این نام از استاندارد X\&.500 استفاده می‌کند، بنابراین برای یکتا بودن در سراسر اینترنت در نظر گرفته شده است\&. این نام، «نام متمایز» (DN) استاندارد X\&.500 موجودیت است\&. به بخش «نام‌های متمایز X\&.500» (X.500 Distinguished Names) مراجعه کنید\&. برای نمونه: .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 می‌تواند مدخل‌های کلید keystore را ایجاد و مدیریت کند که هرکدام حاوی یک کلید خصوصی و یک زنجیره گواهی مرتبط هستند\&. نخستین گواهی در زنجیره، حاوی کلید عمومی متناظر با کلید خصوصی است\&. هنگامی که کلیدها برای نخستین بار تولید می‌شوند، زنجیره با یک مؤلفه منفرد، یعنی یک گواهی خودامضاشده (self-signed)، آغاز می‌شود\&. بخش \f3-genkeypair\fR را در دستورها ببینید\&. گواهی خودامضاشده گواهی‌ای است که در آن صادرکننده (امضاکننده یا issuer) همان موضوع (subject) است\&. موضوع، موجودیتی است که کلید عمومی آن توسط گواهی اعتبارسنجی می‌شود\&. هر زمان که دستور \f3-genkeypair\fR برای تولید یک جفت‌کلید عمومی/خصوصی جدید فراخوانی شود، کلید عمومی را نیز درون یک گواهی خودامضاشده قرار می‌دهد\&. سپس، پس از آن‌که یک درخواست امضای گواهی (CSR) با دستور \f3-certreq\fR ایجاد و به یک مرجع صدور گواهی (CA) ارسال شد، پاسخ دریافتی از CA با \f3-importcert\fR وارد (import) شده و گواهی خودامضاشده با زنجیره‌ای از گواهی‌ها جایگزین می‌شود\&. گزینه‌های \f3-certreq\fR و \f3-importcert\fR را در دستورها ببینید\&. در انتهای زنجیره، گواهی (پاسخ) صادرشده توسط CA قرار دارد که کلید عمومی موضوع را احراز هویت می‌کند\&. گواهی بعدی در زنجیره، گواهی‌ای است که کلید عمومی CA را احراز هویت می‌کند\&. در بسیاری از موارد، این گواهی یک گواهی خودامضاشده است؛ یعنی گواهی‌ای از سوی CA که کلید عمومی خودش را احراز هویت می‌کند، و آخرین گواهی در زنجیره است\&. در موارد دیگر، ممکن است CA زنجیره‌ای از گواهی‌ها را برگرداند\&. در این حالت، پایین‌ترین گواهی در زنجیره یکسان است (گواهی‌ای که توسط CA امضا شده و کلید عمومی مدخل کلید را احراز هویت می‌کند)، اما دومین گواهی در زنجیره، گواهی‌ای است که توسط یک CA متفاوت امضا شده و کلید عمومی همان CA که CSR را برایش ارسال کرده بودید احراز هویت می‌کند\&. گواهی بعدی در زنجیره گواهی‌ای است که کلید CA دوم را احراز هویت می‌کند، و به همین ترتیب تا زمانی که به یک گواهی ریشه (root) خودامضاشده برسد\&. هر گواهی در زنجیره (پس از اولی)، کلید عمومی امضاکننده گواهی قبلی در زنجیره را احراز هویت می‌کند\&. بسیاری از CAها فقط گواهی صادرشده را بدون زنجیره پشتیبان برمی‌گردانند، به‌ویژه هنگامی که ساختار سلسله‌مراتبی مسطح باشد (هیچ CA میانی وجود نداشته باشد)\&. در این حالت، زنجیره گواهی باید از اطلاعات گواهی‌های مورد اعتمادی که از پیش در keystore ذخیره شده‌اند، تشکیل شود\&. یک قالب پاسخ متفاوت دیگر (تعریف‌شده توسط استاندارد PKCS #7) علاوه بر گواهی صادرشده، زنجیره گواهی پشتیبان را نیز شامل می‌شود\&. هر دو قالب پاسخ توسط دستور \f3keytool\fR قابل پردازش هستند\&. گواهی CA سطح‌بالا (ریشه یا root) به‌صورت خودامضاشده است\&. با این حال، اعتماد به کلید عمومی ریشه از خود گواهی ریشه حاصل نمی‌شود، بلکه از منابع دیگر مانند یک روزنامه به دست می‌آید\&. دلیل این امر این است که هر کسی می‌تواند یک گواهی خودامضاشده با نام متمایز (distinguished name)، برای نمونه CA ریشه VeriSign، تولید کند\&. کلید عمومی CA ریشه به‌طور گسترده شناخته‌شده است\&. تنها دلیلی که در یک گواهی ذخیره می‌شود این است که این قالب برای اکثر ابزارها قابل فهم است، بنابراین گواهی در این مورد تنها به‌عنوان وسیله‌ای برای انتقال کلید عمومی CA ریشه استفاده می‌شود\&. پیش از افزودن گواهی CA ریشه به keystore خود، باید آن را با گزینه \f3-printcert\fR مشاهده کرده و اثر انگشت (fingerprint) نمایش‌داده‌شده را با اثر انگشت شناخته‌شده‌ای که از روزنامه، وب‌گاه CA ریشه و غیره به دست آمده مقایسه کنید\&. .TP فایل گواهی‌های cacerts فایل گواهی‌هایی با نام \f3cacerts\fR در دایرکتوری مشخصه‌های امنیتی قرار دارد؛ در ویندوز \f3java\&.home\elib\esecurity\fR و در Oracle Solaris مسیر \f3java\&.home/lib/security\fR، که در آن \f3java\&.home\fR دایرکتوری محیط زمان اجرا است، یعنی دایرکتوری \f3jre\fR در SDK یا بالاترین دایرکتوری در JRE\&. فایل \f3cacerts\fR نشان‌دهنده یک keystore سراسری در سطح سیستم با گواهی‌های CA است\&. مدیران سیستم می‌توانند با مشخص کردن \f3jks\fR به‌عنوان نوع keystore، آن فایل را با دستور \f3keytool\fR پیکربندی و مدیریت کنند\&. فایل keystore مربوط به \f3cacerts\fR به همراه مجموعه‌ای پیش‌فرض از گواهی‌های CA ریشه عرضه می‌شود\&. می‌توانید گواهی‌های پیش‌فرض را با دستور زیر فهرست کنید: .sp .nf \f3keytool \-list \-keystore java\&.home/lib/security/cacerts\fP .fi .nf \f3\fP .fi .sp گذرواژه اولیه فایل keystore مربوط به \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 استاندارد کدگذاری گواهی Internet RFC 1421 گواهی‌ها اغلب به جای کدگذاری باینری، با استفاده از قالب کدگذاری قابل‌چاپ تعریف‌شده توسط استاندارد Internet 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 \f3encoded certificate goes here\&. \fP .fi .nf \f3\fP .fi .nf \f3\-\-\-\-\-END CERTIFICATE\-\-\-\-\-\fP .fi .nf \f3\fP .fi .sp .TP نام‌های متمایز 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) گریز داده شود (escape شود)، مانند: .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 مثال Windows: ابتدا گواهی را با دستور \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 را اجرا کنید\&. چرا که پیش از افزودن گواهی به فهرست گواهی‌های مورد اعتماد در keystore، دستور \f3-importcert\fR اطلاعات گواهی را چاپ کرده و از شما می‌خواهد آن را تأیید کنید\&. در آن هنگام می‌توانید عملیات وارد کردن را متوقف سازید\&. با این حال، تنها زمانی می‌توانید این کار را انجام دهید که دستور \f3-importcert\fR را بدون گزینهٔ \f3-noprompt\fR اجرا کنید\&. اگر گزینهٔ \f3-noprompt\fR تعیین شده باشد، هیچ‌گونه تعاملی با کاربر صورت نخواهد گرفت\&. .SS هشدار\ گذرواژه‌ها\ (PASSWORDS\ WARNING) بیشتر دستوراتی که روی یک keystore عملیات انجام می‌دهند به گذرواژهٔ مخزن (store password) نیاز دارند\&. برخی از دستورات به گذرواژهٔ کلید خصوصی/سری (private/secret key password) نیاز دارند\&. گذرواژه‌ها را می‌توان در خط فرمان در گزینه‌های \f3-storepass\fR و \f3-keypass\fR مشخص کرد\&. با این حال، نباید گذرواژه در خط فرمان یا در یک اسکریپت مشخص شود، مگر آنکه صرفاً برای آزمایش باشد، یا اینکه در یک سیستم امن قرار داشته باشید\&. هنگامی که یک گزینهٔ گذرواژهٔ الزامی را در خط فرمان مشخص نکنید، از شما خواسته می‌شود آن را وارد کنید\&. .SS هشدار\ انطباق\ گواهی\ (CERTIFICATE\ CONFORMANCE\ WARNING) استاندارد اینترنتی RFC 5280 نمایه‌ای مشخص (profile) را برای گواهی‌های منطبق با X\&.509 تعریف کرده است که شامل مقادیر مجاز و ترکیب مقادیر معتبر برای فیلدها و افزونه‌های (extensions) گواهی است\&. این استاندارد را در 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) پیش از افزودن گواهی به keystore، دستور \f3keytool\fR با تلاش برای ساخت یک زنجیرهٔ اعتماد از آن گواهی به یک گواهی خودامضاشده (متعلق به یک CA ریشه)، با استفاده از گواهی‌های مورد اعتمادی که از قبل در keystore موجود هستند، آن را اعتبارسنجی می‌کند\&. .PP اگر گزینهٔ \f3-trustcacerts\fR مشخص شده باشد، گواهی‌های بیشتری برای زنجیرهٔ اعتماد مد نظر قرار می‌گیرند؛ یعنی گواهی‌های موجود در فایلی به نام \f3cacerts\fR\&. .PP اگر دستور \f3keytool\fR نتواند یک مسیر اعتماد از گواهی در حال وارد شدن تا یک گواهی خودامضاشده (خواه از keystore یا از فایل \f3cacerts\fR) برقرار کند، اطلاعات گواهی چاپ می‌شود و از کاربر خواسته می‌شود تا با مقایسهٔ اثرانگشت‌های نمایش‌داده‌شده با اثرانگشت‌های به‌دست‌آمده از یک منبع اطلاعاتی دیگر (مورد اعتماد)، که ممکن است مالک گواهی باشد، آن را تأیید کند\&. بسیار دقت کنید تا قبل از وارد کردن گواهی به عنوان یک گواهی مورد اعتماد، از معتبر بودن آن اطمینان حاصل نمایید\&. بخش «هشدار وارد کردن گواهی‌های مورد اعتماد» را ببینید\&. سپس کاربر این امکان را دارد که عملیات وارد کردن را متوقف کند\&. اگر گزینهٔ \f3-noprompt\fR مشخص شده باشد، هیچ تعاملی با کاربر انجام نخواهد شد\&. .SS وارد\ کردن\ پاسخ\ گواهی\ (IMPORT\ A\ CERTIFICATE\ REPLY) هنگامی که یک پاسخ گواهی (certificate reply) را وارد می‌کنید، پاسخ گواهی با استفاده از گواهی‌های مورد اعتماد موجود در keystore، و در صورت مشخص شدن گزینهٔ \f3-trustcacert\fR\f3s\fR، به‌طور اختیاری با گواهی‌های پیکربندی‌شده در فایل keystore به نام \f3cacerts\fR اعتبارسنجی می‌شود\&. بخش «فایل گواهی‌های cacerts» را ببینید\&. .PP روش‌های تشخیص اینکه آیا پاسخ گواهی مورد اعتماد است یا خیر به شرح زیر است: .TP 0.2i \(bu اگر پاسخ یک گواهی X\&.509 منفرد باشد، دستور \f3keytool\fR تلاش می‌کند تا یک زنجیرهٔ اعتماد ایجاد کند که از پاسخ گواهی شروع شده و به یک گواهی خودامضاشده (متعلق به یک CA ریشه) ختم می‌شود\&. پاسخ گواهی و سلسله‌مراتب گواهی‌ها برای احراز اصالت پاسخ گواهی از زنجیرهٔ گواهی‌های نام‌های مستعار (aliases) جدید استفاده می‌شود\&. اگر زنجیرهٔ اعتماد برقرار نشود، پاسخ گواهی وارد نخواهد شد\&. در این حالت، دستور \f3keytool\fR گواهی را چاپ نمی‌کند و از کاربر درخواست تأیید نمی‌نماید، چرا که تعیین اصالت پاسخ گواهی برای کاربر بسیار دشوار است\&. .TP 0.2i \(bu اگر پاسخ یک زنجیرهٔ گواهی با قالب PKCS #7 یا دنباله‌ای از گواهی‌های X\&.509 باشد، زنجیره به گونه‌ای مرتب می‌شود که ابتدا گواهی کاربر و سپس صفر یا چند گواهی CA قرار می‌گیرند\&. اگر زنجیره به یک گواهی ریشهٔ CA خودامضاشده ختم شود و گزینهٔ \f3-trustcacerts\fR مشخص شده باشد، دستور \f3keytool\fR تلاش می‌کند آن را با هر یک از گواهی‌های مورد اعتماد در keystore یا فایل keystore به نام \f3cacerts\fR مطابقت دهد\&. اگر زنجیره به یک گواهی ریشهٔ CA خودامضاشده ختم نشود و گزینهٔ \f3-trustcacerts\fR مشخص شده باشد، دستور \f3keytool\fR تلاش می‌کند یکی از آن‌ها را از بین گواهی‌های مورد اعتماد در keystore یا فایل keystore به نام \f3cacerts\fR پیدا کرده و به انتهای زنجیره اضافه کند\&. اگر گواهی پیدا نشود و گزینهٔ \f3-noprompt\fR مشخص نشده باشد، اطلاعات آخرین گواهی در زنجیره چاپ می‌شود و از کاربر خواسته می‌شود تا آن را تأیید کند\&. .PP اگر کلید عمومی موجود در پاسخ گواهی با کلید عمومی کاربر که پیش‌تر با \f3alias\fR ذخیره شده مطابقت داشته باشد، زنجیرهٔ گواهی قدیمی با زنجیرهٔ گواهی جدیدِ موجود در پاسخ جایگزین می‌شود\&. زنجیرهٔ قدیمی تنها در صورت ارائهٔ یک \f3keypass\fR معتبر قابل جایگزینی است، بنابراین گذرواژه‌ای که برای محافظت از کلید خصوصی مدخل استفاده می‌شود باید ارائه شود\&. اگر گذرواژه‌ای ارائه نشود و گذرواژهٔ کلید خصوصی با گذرواژهٔ keystore تفاوت داشته باشد، از کاربر خواسته می‌شود که آن را وارد کند\&. .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