'\" t .\" Copyright (c) 1998, 2013, 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: 21 November 2013 .\" SectDesc: Security Tools .\" Title: jarsigner.1 .\" .if n .pl 99999 .TH jarsigner 1 "21 November 2013" "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)" jarsigner \- امضا و اعتبارسنجی فایل‌های آرشیو جاوا (JAR)\&. .SH "خلاصه دستور (SYNOPSIS)" .sp .nf \fBjarsigner\fR [ \fIگزینه‌ها\fR ] \fIjar\-file\fR \fIalias\fR .fi .nf \fBjarsigner\fR \fB\-verify\fR [ \fIگزینه‌ها\fR ] \fIjar\-file\fR [\fIalias \&.\&.\&.\fR] .fi .sp .TP \fIگزینه‌ها\fR گزینه‌های خط فرمان\&. بخش گزینه‌ها را ببینید\&. .TP -verify .br گزینه \f3-verify\fR می‌تواند صفر یا چند نام مستعار مخزن کلید را بعد از نام فایل JAR دریافت کند\&. هنگامی که گزینه \f3-verify\fR مشخص می‌شود، دستور \f3jarsigner\fR بررسی می‌کند که گواهی استفاده‌شده برای اعتبارسنجی هر مدخل امضاشده در فایل JAR با یکی از نام‌های مستعار مخزن کلید مطابقت داشته باشد\&. این نام‌های مستعار در مخزن کلید مشخص‌شده توسط \f3-keystore\fR یا مخزن کلید پیش‌فرض تعریف شده‌اند\&. اگر گزینه \f3-strict\fR را نیز مشخص کنید و دستور \f3jarsigner\fR هشدارهای شدیدی را تشخیص دهد، پیام "jar verified, with signer errors" نمایش داده می‌شود\&. .TP \fIjar-file\fR فایل JAR که باید امضا شود\&. اگر گزینه \f3-strict\fR را نیز مشخص کرده باشید و دستور \f3jarsigner\fR هشدارهای شدیدی را تشخیص داده باشد، پیام "jar signed, with signer errors" نمایش داده می‌شود\&. .TP \fIalias\fR نام‌های مستعاری که در مخزن کلید مشخص‌شده توسط \f3-keystore\fR یا مخزن کلید پیش‌فرض تعریف شده‌اند\&. .SH "توضیحات (DESCRIPTION)" ابزار \f3jarsigner\fR دو هدف اصلی دارد: .TP 0.2i \(bu امضای فایل‌های آرشیو جاوا (JAR)\&. .TP 0.2i \(bu اعتبارسنجی امضاها و بررسی یکپارچگی فایل‌های JAR امضاشده\&. .PP قابلیت JAR امکان بسته‌بندی فایل‌های کلاس، تصاویر، صداها و سایر داده‌های دیجیتال را در یک فایل واحد برای توزیع سریع‌تر و آسان‌تر فراهم می‌کند\&. ابزاری به نام \f3jar\fR به توسعه‌دهندگان امکان تولید فایل‌های JAR را می‌دهد\&. (از نظر فنی، هر فایل ZIP را نیز می‌توان یک فایل JAR در نظر گرفت، هرچند هنگام ایجاد توسط دستور \f3jar\fR یا پردازش توسط دستور \f3jarsigner\fR، فایل‌های JAR شامل یک فایل \f3META-INF/MANIFEST\&.MF\fR نیز هستند\&.) .PP امضای دیجیتال رشته‌ای از بیت‌ها است که از روی داده‌ها (داده‌های در حال امضا) و کلید خصوصی یک موجودیت (یک شخص، شرکت و غیره) محاسبه می‌شود\&. مشابه امضای دست‌نویس، امضای دیجیتال دارای ویژگی‌های مفید بسیاری است: .TP 0.2i \(bu اصالت آن را می‌توان با محاسباتی که از کلید عمومی متناظر با کلید خصوصی تولیدکننده امضا استفاده می‌کند، اعتبارسنجی کرد\&. .TP 0.2i \(bu با فرض مخفی نگه داشتن کلید خصوصی، امکان جعل آن وجود ندارد\&. .TP 0.2i \(bu تابعی از داده‌های امضاشده است و بنابراین نمی‌توان ادعا کرد که امضای داده‌های دیگر نیز هست\&. .TP 0.2i \(bu داده‌های امضاشده قابل تغییر نیستند\&. اگر داده‌ها تغییر کنند، اصالت امضا دیگر قابل اعتبارسنجی نخواهد بود\&. .PP برای تولید امضای یک موجودیت برای یک فایل، آن موجودیت ابتدا باید یک جفت کلید عمومی/خصوصی مرتبط با خود و یک یا چند گواهی که کلید عمومی آن را تایید می‌کنند داشته باشد\&. گواهی بیانیه‌ای با امضای دیجیتال از سوی یک موجودیت است که بیان می‌کند کلید عمومی موجودیت دیگر دارای مقدار مشخصی است\&. .PP دستور \f3jarsigner\fR از اطلاعات کلید و گواهی موجود در یک مخزن کلید (keystore) برای تولید امضاهای دیجیتال برای فایل‌های JAR استفاده می‌کند\&. مخزن کلید پایگاه‌داده‌ای از کلیدهای خصوصی و زنجیره‌های گواهی X\&.509 مرتبط با آن‌ها است که کلیدهای عمومی متناظر را تایید می‌کنند\&. دستور \f3keytool\fR برای ایجاد و مدیریت مخازن کلید استفاده می‌شود\&. .PP دستور \f3jarsigner\fR از کلید خصوصی یک موجودیت برای تولید امضا استفاده می‌کند\&. فایل JAR امضاشده، علاوه بر موارد دیگر، شامل کپی گواهی مربوط به کلید عمومی متناظر با کلید خصوصی استفاده‌شده برای امضای فایل از مخزن کلید است\&. دستور \f3jarsigner\fR می‌تواند امضای دیجیتال فایل JAR امضاشده را با استفاده از گواهی درون آن (در فایل بلوک امضای آن) اعتبارسنجی کند\&. .PP دستور \f3jarsigner\fR می‌تواند امضاهایی شامل برچسب زمانی (timestamp) تولید کند که به سیستم‌ها یا مستقرکنندگان (از جمله Java Plug-in) امکان می‌دهد بررسی کنند آیا فایل JAR در زمانی که گواهی امضا هنوز معتبر بوده، امضا شده است یا خیر\&. علاوه بر این، رابط‌های برنامه‌نویسی (APIها) به برنامه‌ها اجازه می‌دهند اطلاعات برچسب زمانی را دریافت کنند\&. .PP در حال حاضر، دستور \f3jarsigner\fR فقط می‌تواند فایل‌های JAR ایجادشده توسط دستور \f3jar\fR یا فایل‌های ZIP را امضا کند\&. فایل‌های JAR همان فایل‌های ZIP هستند، با این تفاوت که دارای فایل \f3META-INF/MANIFEST\&.MF\fR نیز می‌باشند\&. هنگامی که دستور \f3jarsigner\fR یک فایل ZIP را امضا می‌کند، یک فایل \f3META-INF/MANIFEST\&.MF\fR ایجاد می‌شود\&. .PP رفتار پیش‌فرض دستور \f3jarsigner\fR امضای یک فایل JAR یا ZIP است\&. برای اعتبارسنجی یک فایل JAR امضاشده از گزینه \f3-verify\fR استفاده کنید\&. .PP دستور \f3jarsigner\fR همچنین پس از امضا یا اعتبارسنجی تلاش می‌کند گواهی امضاکننده را ارزیابی کند\&. اگر خطای ارزیابی یا هر مشکل دیگری وجود داشته باشد، دستور پیام‌های هشدار تولید می‌کند\&. اگر گزینه \f3-strict\fR را مشخص کنید، دستور هشدارهای شدید را به عنوان خطا در نظر می‌گیرد\&. بخش خطاها و هشدارها را ببینید\&. .SS KEYSTORE\ ALIASES تمامی موجودیت‌های مخزن کلید با نام‌های مستعار منحصربه‌فرد (aliases) قابل دسترسی هستند\&. .PP هنگامی که از دستور \f3jarsigner\fR برای امضای فایل JAR استفاده می‌کنید، باید نام مستعار مدخل مخزن کلید را که حاوی کلید خصوصی مورد نیاز برای تولید امضا است مشخص کنید\&. برای نمونه، دستور زیر فایل JAR با نام \f3MyJARFile\&.jar\fR را با کلید خصوصی مرتبط با نام مستعار \f3duke\fR در مخزن کلیدی به نام \f3mystore\fR در دایرکتوری \f3working\fR امضا می‌کند\&. از آنجا که هیچ فایل خروجی مشخص نشده است، فایل \f3MyJARFile\&.jar\fR را با فایل JAR امضاشده بازنویسی می‌کند\&. .sp .nf \f3jarsigner \-keystore /working/mystore \-storepass \fP .fi .nf \f3 \-keypass MyJARFile\&.jar duke\fP .fi .nf \f3\fR .fi .sp مخازن کلید با گذرواژه محافظت می‌شوند، بنابراین گذرواژه مخزن باید مشخص شود\&. اگر آن را در خط فرمان مشخص نکنید، از شما خواسته می‌شود آن را وارد کنید\&. به همین ترتیب، کلیدهای خصوصی در مخزن کلید با گذرواژه محافظت می‌شوند، بنابراین گذرواژه کلید خصوصی باید مشخص شود و اگر آن را در خط فرمان مشخص نکنید و با گذرواژه مخزن یکسان نباشد، از شما خواسته می‌شود آن را وارد کنید\&. .SS KEYSTORE\ LOCATION دستور \f3jarsigner\fR دارای گزینه \f3-keystore\fR برای تعیین URL مخزن کلید مورد استفاده است\&. مخزن کلید به طور پیش‌فرض در فایلی به نام \f3\&.keystore\fR در دایرکتوری خانگی کاربر، طبق ویژگی سیستمی \f3user\&.home\fR ذخیره می‌شود\&. .PP در سیستم‌های Oracle Solaris، مقدار \f3user\&.home\fR به طور پیش‌فرض دایرکتوری خانگی کاربر است\&. .PP جریان ورودی از گزینه \f3-keystore\fR به متد \f3KeyStore\&.load\fR ارسال می‌شود\&. اگر \f3NONE\fR به عنوان URL مشخص شود، یک جریان null به متد \f3KeyStore\&.load\fR ارسال می‌گردد\&. هنگامی که کلاس \f3KeyStore\fR مبتنی بر فایل نیست (برای نمونه زمانی که روی یک دستگاه توکن سخت‌افزاری قرار دارد)، باید مقدار \f3NONE\fR مشخص شود\&. .SS KEYSTORE\ IMPLEMENTATION کلاس \f3KeyStore\fR ارائه‌شده در بسته \f3java\&.security\fR رابط‌های مشخصی را برای دسترسی و اصلاح اطلاعات در مخزن کلید فراهم می‌کند\&. شما می‌توانید چندین پیاده‌سازی عینی مختلف داشته باشید که هر پیاده‌سازی برای نوع خاصی از مخزن کلید است\&. .PP در حال حاضر دو ابزار خط فرمان وجود دارند که از پیاده‌سازی‌های مخزن کلید استفاده می‌کنند (\f3keytool\fR و \f3jarsigner\fR)، و یک ابزار مبتنی بر واسط گرافیکی با نام Policy Tool\&. از آنجا که کلاس \f3KeyStore\fR به صورت عمومی در دسترس است، کاربران JDK می‌توانند برنامه‌های امنیتی بیشتری بنویسند که از آن استفاده کنند\&. .PP یک پیاده‌سازی پیش‌فرض داخلی توسط Oracle ارائه شده است که مخزن کلید را به صورت یک فایل پیاده‌سازی می‌کند و از نوع اختصاصی مخزن کلید با نام JKS استفاده می‌نماید\&. پیاده‌سازی داخلی از هر کلید خصوصی با گذرواژه اختصاصی خود محافظت می‌کند و یکپارچگی کل مخزن کلید را با یک گذرواژه (احتمالاً متفاوت) محافظت می‌نماید\&. .PP پیاده‌سازی‌های مخزن کلید مبتنی بر ارائه‌دهنده (provider-based) هستند، به این معنی که رابط‌های برنامه‌نویسی ارائه‌شده توسط کلاس \f3KeyStore\fR بر اساس یک رابط ارائه‌دهنده خدمات (SPI) پیاده‌سازی می‌شوند\&. یک کلاس انتزاعی متناظر \f3KeystoreSpi\fR نیز در بسته \f3java\&.security\fR وجود دارد که متدهای رابط ارائه‌دهنده خدمات را که ارائه‌دهندگان باید پیاده‌سازی کنند تعریف می‌نماید\&. اصطلاح ارائه‌دهنده (provider) به یک بسته یا مجموعه‌ای از بسته‌ها اشاره دارد که پیاده‌سازی عینی زیرمجموعه‌ای از خدمات قابل دسترسی توسط Java Security API را فراهم می‌کنند\&. برای ارائه یک پیاده‌سازی مخزن کلید، کلاینت‌ها باید یک ارائه‌دهنده را پیاده‌سازی کرده و پیاده‌سازی زیرکلاس \f3KeystoreSpi\fR را فراهم نمایند، همان‌طور که در راهنمای پیاده‌سازی ارائه‌دهنده در معماری رمزنگاری جاوا آمده است: .PP برنامه‌ها می‌توانند انواع مختلفی از پیاده‌سازی‌های مخزن کلید را از ارائه‌دهندگان مختلف با متد کارخانه‌ای \f3getInstance\fR در کلاس \f3KeyStore\fR انتخاب کنند\&. نوع مخزن کلید، قالب ذخیره‌سازی و داده اطلاعات مخزن کلید و الگوریتم‌های مورد استفاده برای محافظت از کلیدهای خصوصی در مخزن کلید و یکپارچگی خود مخزن کلید را تعریف می‌کند\&. پیاده‌سازی‌های مخزن کلید از انواع مختلف با یکدیگر سازگار نیستند\&. .PP دستور \f3jarsigner\fR می‌تواند مخازن کلید مبتنی بر فایل را از هر مکانی که با یک URL قابل تعیین باشد بخواند\&. علاوه بر این، این دستور می‌تواند مخازن کلید غیرمبتنی بر فایل را مانند آنچه توسط MSCAPI در ویندوز و PKCS11 در تمام پلتفرم‌ها ارائه می‌شود بخواند\&. .PP برای دستورهای \f3jarsigner\fR و \f3keytool\fR، می‌توانید نوع مخزن کلید را در خط فرمان با گزینه \f3-storetype\fR مشخص کنید\&. برای Policy Tool، می‌توانید نوع مخزن کلید را با دستور \fIEdit\fR در منوی \fIKeyStore\fR مشخص نمایید\&. .PP اگر نوع مخزن کلید را صریحاً مشخص نکنید، ابزارها یک پیاده‌سازی مخزن کلید را بر اساس مقدار ویژگی \f3keystore\&.type\fR مشخص‌شده در فایل ویژگی‌های امنیتی انتخاب می‌کنند\&. فایل ویژگی‌های امنیتی \f3java\&.security\fR نام دارد و در دایرکتوری ویژگی‌های امنیتی JDK به آدرس \f3java\&.home/lib/security\fR قرار دارد، جایی که \f3java\&.home\fR دایرکتوری محیط زمان اجرا است؛ یعنی دایرکتوری \f3jre\fR در JDK یا دایرکتوری سطح بالای محیط زمان اجرای جاوا (JRE)\&. .PP هر ابزار مقدار \f3keystore\&.type\fR را دریافت کرده و تمام ارائه‌دهندگان نصب‌شده را بررسی می‌کند تا ارائه‌دهنده‌ای را بیابد که مخازن کلید از آن نوع را پیاده‌سازی کرده است\&. سپس از پیاده‌سازی مخزن کلید آن ارائه‌دهنده استفاده می‌کند\&. .PP کلاس \f3KeyStore\fR یک متد ایستا به نام \f3getDefaultType\fR تعریف می‌کند که به برنامه‌ها و اپلت‌ها اجازه می‌دهد مقدار ویژگی \f3keystore\&.type\fR را بازیابی کنند\&. خط کد زیر یک نمونه از نوع مخزن کلید پیش‌فرض را مطابق با مشخصات ویژگی \f3keystore\&.type\fR ایجاد می‌کند: .sp .nf \f3KeyStore keyStore = KeyStore\&.getInstance(KeyStore\&.getDefaultType());\fP .fi .nf \f3\fR .fi .sp نوع مخزن کلید پیش‌فرض \f3jks\fR است (نوع اختصاصی پیاده‌سازی مخزن کلید ارائه‌شده توسط Oracle)\&. این مورد با خط زیر در فایل ویژگی‌های امنیتی مشخص می‌شود: .sp .nf \f3keystore\&.type=jks\fP .fi .nf \f3\fR .fi .sp بزرگی و کوچکی حروف در مشخص کردن نوع مخزن کلید اهمیتی ندارد؛ برای نمونه، \f3JKS\fR با \f3jks\fR یکسان است\&. .PP برای اینکه ابزارها از پیاده‌سازی مخزن کلیدی غیر از حالت پیش‌فرض استفاده کنند، آن خط را برای مشخص کردن نوع دیگری از مخزن کلید تغییر دهید\&. برای نمونه، اگر بسته ارائه‌دهنده‌ای دارید که پیاده‌سازی مخزن کلید را برای نوعی به نام \f3pkcs12\fR ارائه می‌دهد، آن خط را به صورت زیر تغییر دهید: .sp .nf \f3keystore\&.type=pkcs12\fP .fi .nf \f3\fR .fi .sp \fIنکته:\fR اگر از بسته ارائه‌دهنده PKCS 11 استفاده می‌کنید، بخش‌های "KeyTool" و "JarSigner" را در راهنمای مرجع Java PKCS #11 ببینید: .SS SUPPORTED\ ALGORITHMS به طور پیش‌فرض، دستور \f3jarsigner\fR یک فایل JAR را با استفاده از یکی از الگوریتم‌های زیر امضا می‌کند: .TP 0.2i \(bu الگوریتم امضای دیجیتال (DSA) با الگوریتم خلاصه‌ساز SHA1 .TP 0.2i \(bu الگوریتم RSA با الگوریتم خلاصه‌ساز SHA256 .TP 0.2i \(bu الگوریتم رمزنگاری منحنی بیضوی (EC) با SHA256 همراه با الگوریتم امضای دیجیتال منحنی بیضوی (ECDSA)\&. .PP اگر کلیدهای عمومی و خصوصی امضاکننده از نوع کلیدهای DSA باشند، \f3jarsigner\fR فایل JAR را با الگوریتم \f3SHA1withDSA\fR امضا می‌کند\&. اگر کلیدهای امضاکننده از نوع RSA باشند، \f3jarsigner\fR تلاش می‌کند فایل JAR را با الگوریتم \f3SHA256withRSA\fR امضا کند\&. اگر کلیدهای امضاکننده از نوع EC باشند، \f3jarsigner\fR فایل JAR را با الگوریتم \f3SHA256withECDSA\fR امضا می‌نماید\&. .PP این الگوریتم‌های امضای پیش‌فرض را می‌توان با استفاده از گزینه \f3-sigalg\fR لغو کرد\&. .SS THE\ SIGNED\ JAR\ FILE هنگامی که از دستور \f3jarsigner\fR برای امضای یک فایل JAR استفاده می‌شود، فایل JAR خروجی دقیقاً مشابه فایل JAR ورودی است، با این تفاوت که دو فایل اضافی در دایرکتوری META-INF آن قرار می‌گیرد: .TP 0.2i \(bu یک فایل امضا با پسوند \f3\&.SF\fR .TP 0.2i \(bu یک فایل بلوک امضا با پسوند \f3\&.DSA\fR، \f3\&.RSA\fR، یا \f3\&.EC\fR .PP نام پایه این دو فایل از مقدار گزینه \f3-sigFile\fR گرفته می‌شود\&. برای نمونه، هنگامی که گزینه \f3-sigFile MKSIGN\fR باشد، فایل‌ها \f3MKSIGN\&.SF\fR و \f3MKSIGN\&.DSA\fR نام‌گذاری می‌شوند\&. .PP اگر گزینه \f3-sigfile\fR در خط فرمان قید نشود، نام پایه فایل‌های \f3\&.SF\fR و \f3\&.DSA\fR برابر با ۸ نویسه نخست نام مستعار مشخص‌شده در خط فرمان خواهد بود که همگی به حروف بزرگ تبدیل شده‌اند\&. اگر نام مستعار کمتر از ۸ نویسه داشته باشد، کل نام مستعار استفاده می‌شود\&. اگر نام مستعار شامل نویسه‌هایی باشد که در نام فایل امضا مجاز نیستند، هر یک از این نویسه‌ها در تشکیل نام فایل به یک نویسه خط زیرین (_) تبدیل می‌شوند\&. نویسه‌های معتبر شامل حروف، ارقام، خط زیرین و خط تیره هستند\&. .PP فایل امضا (Signature File) .PP یک فایل امضا (فایل \f3\&.SF\fR) شبیه به فایل مانیفست است که همیشه در هنگام استفاده از دستور \f3jarsigner\fR برای امضای فایل در یک فایل JAR گنجانده می‌شود\&. برای هر فایل مبدأ موجود در فایل JAR، فایل \f3\&.SF\fR دارای سه خط است، همانند فایل مانیفست، که موارد زیر را فهرست می‌کند: .TP 0.2i \(bu نام فایل .TP 0.2i \(bu نام الگوریتم خلاصه‌ساز (SHA) .TP 0.2i \(bu مقدار خلاصه‌ساز SHA .PP در فایل مانیفست، مقدار خلاصه‌ساز SHA برای هر فایل مبدأ، خلاصه (هش) داده‌های باینری در فایل مبدأ است\&. در فایل \f3\&.SF\fR، مقدار خلاصه‌ساز برای یک فایل مبدأ مشخص، هش سه خط مربوط به آن فایل مبدأ در فایل مانیفست است\&. .PP فایل امضا، به طور پیش‌فرض، شامل یک سرآیند حاوی هش کل فایل مانیفست است\&. سرآیند همچنین حاوی هش سرآیند مانیفست است\&. وجود این سرآیند امکان بهینه‌سازی اعتبارسنجی را فراهم می‌کند\&. بخش اعتبارسنجی فایل JAR را ببینید\&. .PP فایل بلوک امضا (Signature Block File) .PP فایل \f3\&.SF\fR امضا شده و امضا در فایل بلوک امضا قرار داده می‌شود\&. این فایل همچنین شامل گواهی یا زنجیره گواهی کدگذاری‌شده از مخزن کلید است که کلید عمومی متناظر با کلید خصوصی استفاده‌شده برای امضا را تایید می‌کند\&. این فایل بسته به الگوریتم خلاصه‌ساز مورد استفاده، دارای پسوند \f3\&.DSA\fR، \f3\&.RSA\fR، یا \f3\&.EC\fR است\&. .SS SIGNATURE\ TIME\ STAMP دستور \f3jarsigner\fR می‌تواند هنگام امضای فایل JAR یک برچسب زمانی امضا تولید و ذخیره کند\&. علاوه بر این، \f3jarsigner\fR از سازوکارهای امضای جایگزین پشتیبانی می‌کند\&. این رفتار اختیاری است و در زمان امضا توسط کاربر از طریق گزینه‌های زیر کنترل می‌شود\&. بخش گزینه‌ها را ببینید\&. .sp .nf \f3\-tsa \fIurl\fR\fP .fi .nf \f3\-tsacert \fIalias\fR\fP .fi .nf \f3\-altsigner \fIclass\fR\fP .fi .nf \f3\-altsignerpath \fIclasspathlist\fR\fP .fi .nf \f3\-tsapolicyid \fIpolicyid\fR\fP .fi .nf \f3\fR .fi .sp .SS JAR\ FILE\ VERIFICATION اعتبارسنجی موفق فایل JAR زمانی رخ می‌دهد که امضاها معتبر باشند و هیچ‌یک از فایل‌هایی که در زمان تولید امضاها در فایل JAR وجود داشتند از آن زمان تغییری نکرده باشند\&. اعتبارسنجی فایل JAR شامل گام‌های زیر است: .TP 0.4i 1\&. اعتبارسنجی امضای فایل \f3\&.SF\fR\&. .sp اعتبارسنجی اطمینان می‌دهد که امضای ذخیره‌شده در هر فایل بلوک امضا (\f3\&.DSA\fR) با استفاده از کلید خصوصی متناظر با کلید عمومی تولید شده است که گواهی (یا زنجیره گواهی) آن نیز در فایل \f3\&.DSA\fR قرار دارد\&. همچنین اطمینان می‌دهد که امضا، امضای معتبری از فایل امضای متناظر (\f3\&.SF\fR) است و در نتیجه فایل \f3\&.SF\fR دستکاری نشده است\&. .TP 0.4i 2\&. بررسی خلاصه ذکرشده در هر مدخل فایل \f3\&.SF\fR با هر بخش متناظر در مانیفست\&. .sp فایل \f3\&.SF\fR به طور پیش‌فرض شامل سرآیندی است که حاوی هش کل فایل مانیفست است\&. هنگامی که سرآیند وجود دارد، اعتبارسنجی می‌تواند بررسی کند که آیا هش موجود در سرآیند با هش فایل مانیفست مطابقت دارد یا خیر\&. در صورت مطابقت، اعتبارسنجی به مرحله بعد می‌رود\&. .sp اگر مطابقت وجود نداشته باشد، اعتبارسنجی با بهینه‌سازی کمتری لازم است تا اطمینان حاصل شود که هش موجود در بخش اطلاعات هر فایل مبدأ در فایل \f3\&.SF\fR برابر با هش بخش متناظر آن در فایل مانیفست است\&. بخش فایل امضا را ببینید\&. .sp یکی از دلایلی که ممکن است هش فایل مانیفست ذخیره‌شده در سرآیند فایل \f3\&.SF\fR با هش فایل مانیفست فعلی برابر نباشد این است که پس از تولید امضا و فایل \f3\&.SF\fR، یک یا چند فایل (با ابزار \f3jar\fR) به فایل JAR اضافه شده باشد\&. هنگامی که از ابزار \f3jar\fR برای افزودن فایل‌ها استفاده می‌شود، فایل مانیفست با افزودن بخش‌هایی برای فایل‌های جدید تغییر می‌کند، اما فایل \f3\&.SF\fR تغییر نمی‌کند\&. در صورتی که هیچ‌یک از فایل‌هایی که در زمان تولید امضا در فایل JAR وجود داشته‌اند از آن زمان تغییر نکرده باشند، اعتبارسنجی همچنان موفق تلقی می‌شود\&. این حالت زمانی رخ می‌دهد که هش‌های موجود در بخش‌های غیرسرآیند فایل \f3\&.SF\fR با هش‌های بخش‌های متناظر در فایل مانیفست برابر باشند\&. .TP 0.4i 3\&. خواندن هر فایلی در فایل JAR که مدخلی در فایل \f3\&.SF\fR دارد\&. در حین خواندن، خلاصه فایل محاسبه شده و نتیجه با خلاصه این فایل در بخش مانیفست مقایسه می‌شود\&. خلاصه‌ها باید یکسان باشند، در غیر این صورت اعتبارسنجی شکست می‌خورد\&. .sp اگر خطاهای جدی اعتبارسنجی در طول فرآیند اعتبارسنجی رخ دهد، فرآیند متوقف شده و یک استثنای امنیتی ایجاد می‌شود\&. دستور \f3jarsigner\fR استثنا را دریافت کرده و نمایش می‌دهد\&. .PP \fIنکته:\fR شما باید هرگونه هشدار اضافی (یا خطا در صورت تعیین گزینه \f3-strict\fR) و همچنین محتوای گواهی را (با مشخص کردن گزینه‌های \f3-verbose\fR و \f3-certs\fR) بررسی کنید تا مشخص شود که آیا می‌توان به امضا اعتماد کرد یا خیر\&. .SS MULTIPLE\ SIGNATURES\ FOR\ A\ JAR\ FILE یک فایل JAR می‌تواند توسط چندین نفر با اجرای چندباره دستور \f3jarsigner\fR روی فایل و مشخص کردن نام مستعار برای هر شخص در هر بار امضا شود، به صورت زیر: .sp .nf \f3jarsigner myBundle\&.jar susan\fP .fi .nf \f3jarsigner myBundle\&.jar kevin\fP .fi .nf \f3\fR .fi .sp هنگامی که یک فایل JAR چندین بار امضا می‌شود، چندین فایل \f3\&.SF\fR و \f3\&.DSA\fR در فایل JAR حاصل وجود خواهد داشت، یک جفت برای هر امضا\&. در مثال پیشین، فایل JAR خروجی شامل فایل‌هایی با نام‌های زیر است: .sp .nf \f3SUSAN\&.SF\fP .fi .nf \f3SUSAN\&.DSA\fP .fi .nf \f3KEVIN\&.SF\fP .fi .nf \f3KEVIN\&.DSA\fP .fi .sp .SH "گزینه‌ها (OPTIONS)" بخش‌های زیر گزینه‌های گوناگون \f3jarsigner\fR را شرح می‌دهند\&. به استانداردهای زیر توجه داشته باشید: .TP 0.2i \(bu پیش از نام تمام گزینه‌ها یک علامت خط تیره (-) قرار می‌گیرد\&. .TP 0.2i \(bu گزینه‌ها را می‌توان به هر ترتیبی وارد کرد\&. .TP 0.2i \(bu مواردی که با حروف کج یا زیرخط‌دار هستند (مقادیر گزینه‌ها) نشان‌دهنده مقادیر واقعی هستند که باید وارد شوند\&. .TP 0.2i \(bu گزینه‌های \f3-storepass\fR، \f3-keypass\fR، \f3-sigfile\fR، \f3-sigalg\fR، \f3-digestalg\fR، \f3-signedjar\fR و گزینه‌های مربوط به TSA تنها هنگام امضای یک فایل JAR کاربرد دارند؛ آن‌ها هنگام اعتبارسنجی یک فایل JAR امضاشده کاربردی ندارند\&. گزینه \f3-keystore\fR هم برای امضا و هم برای اعتبارسنجی فایل JAR کاربرد دارد\&. علاوه بر این، نام‌های مستعار هنگام امضا و اعتبارسنجی فایل JAR مشخص می‌شوند\&. .TP -keystore \fIurl\fR .br نشانی اینترنتی (URL) را مشخص می‌کند که محل مخزن کلید را نشان می‌دهد\&. این مقدار به طور پیش‌فرض روی فایل \f3\&.keystore\fR در دایرکتوری خانگی کاربر، طبق ویژگی سیستمی \f3user\&.home\fR تنظیم شده است\&. هنگام امضا، وجود مخزن کلید الزامی است\&. زمانی که مخزن کلید پیش‌فرض وجود ندارد یا می‌خواهید از مخزن کلیدی غیر از حالت پیش‌فرض استفاده کنید، باید صریحاً یک مخزن کلید را مشخص نمایید\&. هنگام اعتبارسنجی نیازی به مخزن کلید نیست، اما اگر مخزن کلیدی مشخص شود یا مخزن پیش‌فرض وجود داشته باشد و گزینه \f3-verbose\fR نیز مشخص شده باشد، اطلاعات اضافی در این مورد که آیا گواهی‌های استفاده‌شده برای اعتبارسنجی فایل JAR در آن مخزن کلید وجود دارند یا خیر، در خروجی نمایش داده می‌شود\&. آرگومان \f3-keystore\fR به جای یک URL می‌تواند یک نام فایل و مسیر باشد، که در این صورت مشابه یک URL از نوع :file در نظر گرفته می‌شود؛ برای نمونه، موارد زیر معادل یکدیگرند: .sp .nf \f3\-keystore \fIfilePathAndName\fR\fP .fi .nf \f3\-keystore file:\fIfilePathAndName\fR\fP .fi .nf \f3\fR .fi .sp اگر ارائه‌دهنده Sun PKCS #11 در فایل ویژگی‌های امنیتی \f3java\&.security\fR (واقع در دایرکتوری \f3$JAVA_HOME/lib/security\fR محیط JRE) پیکربندی شده باشد، ابزارهای \f3keytool\fR و \f3jarsigner\fR می‌توانند با تعیین این گزینه‌ها روی توکن PKCS #11 عمل کنند: .sp .nf \f3\-keystore NONE\fP .fi .nf \f3\-storetype PKCS11\fP .fi .nf \f3\fR .fi .sp برای نمونه، دستور زیر محتویات توکن PKCS#11 پیکربندی‌شده را فهرست می‌کند: .sp .nf \f3keytool \-keystore NONE \-storetype PKCS11 \-list\fP .fi .nf \f3\fR .fi .sp .TP -storetype \fIstoretype\fR .br نوع مخزن کلیدی را مشخص می‌کند که باید نمونه‌سازی شود\&. نوع مخزن کلید پیش‌فرض همان مقداری است که به عنوان مقدار ویژگی \f3keystore\&.type\fR در فایل ویژگی‌های امنیتی مشخص شده و توسط متد ایستای \f3getDefaultType\fR در \f3java\&.security\&.KeyStore\fR بازگردانده می‌شود\&. پین (PIN) برای توکن PKCS #11 نیز می‌تواند با گزینه \f3-storepass\fR مشخص شود\&. اگر هیچ مقداری مشخص نشود، دستورهای \f3keytool\fR و \f3jarsigner\fR پین توکن را درخواست می‌کنند\&. اگر توکن دارای یک مسیر احراز هویت محافظت‌شده باشد (مانند یک صفحه کلید اختصاصی PIN یا یک حسگر بیومتریک)، باید گزینه \f3-protected\fR مشخص شود و هیچ گزینه گذرواژه‌ای نباید وارد گردد\&. .TP -storepass[:env | :file] \fIargument\fR .br گذرواژه‌ای را مشخص می‌کند که برای دسترسی به مخزن کلید لازم است\&. این مورد فقط هنگام امضا (نه اعتبارسنجی) فایل JAR لازم است\&. در این حالت، اگر گزینه \f3-storepass\fR در خط فرمان ارائه نشود، گذرواژه از کاربر درخواست می‌شود\&. اگر اصلاح‌کننده \f3env\fR یا \f3file\fR مشخص نشود، گذرواژه همان مقدار \fIargument\fR خواهد بود\&. در غیر این صورت، گذرواژه به صورت زیر بازیابی می‌شود: .RS .TP 0.2i \(bu \f3env\fR: بازیابی گذرواژه از متغیر محیطی با نام \f3argument\fR\&. .TP 0.2i \(bu \f3file\fR: بازیابی گذرواژه از فایل با نام \f3argument\fR\&. .RE \fIنکته:\fR گذرواژه نباید در خط فرمان یا در اسکریپت مشخص شود، مگر اینکه برای اهداف آزمایشی باشد یا روی یک سیستم امن قرار داشته باشید\&. .TP -keypass [:env | :file] \fIargument\fR .br گذرواژه مورد استفاده برای محافظت از کلید خصوصی مدخل مخزن کلید را مشخص می‌کند که با نام مستعار ارائه‌شده در خط فرمان آدرس‌دهی شده است\&. این گذرواژه هنگام استفاده از \f3jarsigner\fR برای امضای فایل JAR الزامی است\&. اگر هیچ گذرواژه‌ای در خط فرمان ارائه نشود و گذرواژه مورد نیاز با گذرواژه مخزن متفاوت باشد، از کاربر درخواست می‌شود آن را وارد کند\&. اگر اصلاح‌کننده \f3env\fR یا \f3file\fR مشخص نشود، گذرواژه دارای مقدار \f3argument\fR است\&. در غیر این صورت، گذرواژه به صورت زیر بازیابی می‌شود: .RS .TP 0.2i \(bu \f3env\fR: بازیابی گذرواژه از متغیر محیطی با نام \f3argument\fR\&. .TP 0.2i \(bu \f3file\fR: بازیابی گذرواژه از فایل با نام \f3argument\fR\&. .RE \fIنکته:\fR گذرواژه نباید در خط فرمان یا در اسکریپت مشخص شود، مگر اینکه برای اهداف آزمایشی باشد یا روی یک سیستم امن قرار داشته باشید\&. .TP -sigfile \fIfile\fR .br نام پایه فایل را برای استفاده در فایل‌های تولیدشده \f3\&.SF\fR و \f3\&.DSA\fR مشخص می‌کند\&. برای نمونه، اگر نام فایل \f3DUKESIGN\fR باشد، فایل‌های تولیدشده \f3DUKESIGN\&.SF\fR و \f3DUKESIGN\&.DSA\fR نام‌گذاری شده و در دایرکتوری \f3META-INF\fR فایل JAR امضاشده قرار می‌گیرند\&. نویسه‌های موجود در فایل باید از مجموعه \f3a-zA-Z0-9_-\fR باشند\&. تنها حروف، ارقام، خط زیرین و خط تیره مجاز هستند\&. تمامی حروف کوچک برای نام‌های فایل‌های \f3\&.SF\fR و \f3\&.DSA\fR به حروف بزرگ تبدیل می‌شوند\&. اگر گزینه \f3-sigfile\fR در خط فرمان مشخص نشود، نام پایه فایل‌های \f3\&.SF\fR و \f3\&.DSA\fR برابر با ۸ نویسه نخست نام مستعار مشخص‌شده در خط فرمان خواهد بود که همگی به حروف بزرگ تبدیل شده‌اند\&. اگر نام مستعار کمتر از ۸ نویسه داشته باشد، کل نام مستعار استفاده می‌شود\&. اگر نام مستعار حاوی نویسه‌هایی باشد که در نام فایل امضا معتبر نیستند، هر یک از این نویسه‌ها به یک خط زیرین (_) تبدیل می‌شوند تا نام فایل تشکیل شود\&. .TP -sigalg \fIalgorithm\fR .br نام الگوریتم امضا را برای استفاده در امضای فایل JAR مشخص می‌کند\&. برای مشاهده فهرستی از نام‌های استاندارد الگوریتم امضا، بخش "پیوست A: نام‌های استاندارد" را در راهنمای مرجع معماری رمزنگاری جاوا (JCA) ببینید: این الگوریتم باید با کلید خصوصی استفاده‌شده برای امضای فایل JAR سازگار باشد\&. اگر این گزینه مشخص نشود، بسته به نوع کلید خصوصی، یکی از الگوریتم‌های \f3SHA1withDSA\fR، \f3SHA256withRSA\fR یا \f3SHA256withECDSA\fR استفاده می‌شود\&. باید یا یک ارائه‌دهنده به صورت ایستا نصب شده باشد که پیاده‌سازی الگوریتم مشخص‌شده را فراهم کند یا کاربر باید یکی را با گزینه \f3-providerClass\fR مشخص کند؛ در غیر این صورت، دستور با موفقیت اجرا نخواهد شد\&. .TP -digestalg \fIalgorithm\fR .br نام الگوریتم خلاصه پیام را برای استفاده در خلاصه‌سازی مدخل‌های یک فایل JAR مشخص می‌کند\&. برای مشاهده فهرستی از نام‌های استاندارد الگوریتم خلاصه پیام، بخش "پیوست A: نام‌های استاندارد" را در راهنمای مرجع معماری رمزنگاری جاوا (JCA) ببینید: اگر این گزینه مشخص نشود، از \f3SHA256\fR استفاده می‌شود\&. باید یا یک ارائه‌دهنده به صورت ایستا نصب شده باشد که پیاده‌سازی الگوریتم مشخص‌شده را فراهم کند یا کاربر باید یکی را با گزینه \f3-providerClass\fR مشخص کند؛ در غیر این صورت، دستور با موفقیت اجرا نخواهد شد\&. .TP -certs .br اگر گزینه \f3-certs\fR همراه با گزینه‌های \f3-verify\fR و \f3-verbose\fR در خط فرمان ظاهر شود، خروجی شامل اطلاعات گواهی برای هر امضاکننده فایل JAR خواهد بود\&. این اطلاعات شامل نام نوع گواهی (ذخیره‌شده در فایل \f3\&.DSA\fR) است که کلید عمومی امضاکننده را تأیید می‌کند، و اگر گواهی یک گواهی X\&.509 باشد (نمونه‌ای از \f3java\&.security\&.cert\&.X509Certificate\fR)، نام متمایز (DN) امضاکننده را نیز در بر می‌گیرد\&. مخزن کلید نیز بررسی می‌شود\&. اگر هیچ مقدار مخزن کلیدی در خط فرمان مشخص نشده باشد، فایل مخزن کلید پیش‌فرض (در صورت وجود) بررسی می‌شود\&. اگر گواهی کلید عمومی برای یک امضاکننده با مدخلی در مخزن کلید مطابقت داشته باشد، نام مستعار برای آن مدخل مخزن کلید برای آن امضاکننده در پرانتز نمایش داده می‌شود\&. .TP -certchain \fIfile\fR .br زنجیره گواهی مورد استفاده را زمانی مشخص می‌کند که زنجیره گواهی مرتبط با کلید خصوصی مدخل مخزن کلید که با نام مستعار مشخص‌شده در خط فرمان آدرس‌دهی شده، کامل نباشد\&. این امر زمانی می‌تواند رخ دهد که مخزن کلید روی یک توکن سخت‌افزاری قرار داشته باشد که ظرفیت کافی برای نگهداری زنجیره گواهی کامل را ندارد\&. این فایل می‌تواند دنباله‌ای از گواهی‌های الحاق‌شده X\&.509 یا یک بلوک داده منفرد با قالب PKCS#7 باشد، خواه در قالب کدگذاری دودویی و خواه در قالب کدگذاری قابل چاپ (معروف به کدگذاری Base64) همان‌طور که در استاندارد RFC 1421 اینترنت تعریف شده است\&. استاندارد کدگذاری گواهی RFC 1421 را ببینید: .TP -verbose .br هنگامی که گزینه \f3-verbose\fR در خط فرمان ظاهر می‌شود، حالت پرگو را نشان می‌دهد که باعث می‌شود \f3jarsigner\fR اطلاعات بیشتری درباره پیشرفت امضا یا اعتبارسنجی JAR در خروجی چاپ کند\&. .TP -internalsf .br در گذشته، فایل \f3\&.DSA\fR (بلوک امضا) تولیدشده در زمان امضای فایل JAR، شامل یک نسخه کدگذاری‌شده کامل از فایل \f3\&.SF\fR (فایل امضا) بود که آن هم تولید می‌شد\&. این رفتار تغییر کرده است\&. برای کاهش حجم کلی فایل JAR خروجی، فایل \f3\&.DSA\fR به طور پیش‌فرض دیگر حاوی نسخه‌ای از فایل \f3\&.SF\fR نیست\&. اگر \f3-internalsf\fR در خط فرمان ظاهر شود، از رفتار قدیمی استفاده می‌شود\&. این گزینه برای آزمایش مفید است\&. در عمل، از گزینه \f3-internalsf\fR استفاده نکنید زیرا بار اضافی بیشتری به همراه دارد\&. .TP -sectionsonly .br اگر گزینه \f3-sectionsonly\fR در خط فرمان ظاهر شود، فایل \f3\&.SF\fR (فایل امضا) تولیدشده در زمان امضای فایل JAR شامل سرآیندی که حاوی هش کل فایل مانیفست باشد نخواهد بود\&. این فایل تنها شامل اطلاعات و هش‌های مربوط به هر یک از فایل‌های مبدأ موجود در فایل JAR است\&. بخش فایل امضا را ببینید\&. به طور پیش‌فرض، این سرآیند به عنوان یک بهینه‌سازی اضافه می‌شود\&. هنگامی که سرآیند وجود دارد، هر زمان که فایل JAR اعتبارسنجی می‌شود، اعتبارسنجی می‌تواند ابتدا بررسی کند که آیا هش موجود در سرآیند با هش کل فایل مانیفست مطابقت دارد یا خیر\&. در صورت مطابقت، اعتبارسنجی به مرحله بعد می‌رود\&. در صورت عدم مطابقت، انجام اعتبارسنجی با بهینه‌سازی کمتر ضروری است تا مشخص شود آیا هش موجود در بخش اطلاعات هر فایل مبدأ در فایل \f3\&.SF\fR با هش بخش متناظر آن در فایل مانیفست برابر است یا خیر\&. بخش اعتبارسنجی فایل JAR را ببینید\&. گزینه \f3-sectionsonly\fR اصولاً برای آزمایش استفاده می‌شود\&. نباید به جز برای آزمایش استفاده شود زیرا استفاده از آن بار اضافی بیشتری ایجاد می‌کند\&. .TP -protected .br مقادیر می‌توانند \f3true\fR یا \f3false\fR باشند\&. زمانی که گذرواژه باید از طریق یک مسیر احراز هویت محافظت‌شده مانند یک پین‌خوان اختصاصی مشخص شود، مقدار \f3true\fR را تعیین کنید\&. .TP -providerClass \fIprovider-class-name\fR .br برای تعیین نام فایل کلاس اصلی ارائه‌دهنده خدمات رمزنگاری زمانی که ارائه‌دهنده خدمات در فایل ویژگی‌های امنیتی \f3java\&.security\fR فهرست نشده است استفاده می‌شود\&. در صورت استفاده به همراه گزینه \f3-providerArg ConfigFilePath\fR، ابزارهای \f3keytool\fR و \f3jarsigner\fR ارائه‌دهنده را به صورت پویا نصب می‌کنند و از \fIConfigFilePath\fR برای مسیر فایل پیکربندی توکن استفاده می‌نمایند\&. مثال زیر دستوری را برای فهرست کردن مخزن کلید \f3PKCS #11\fR نشان می‌دهد زمانی که ارائه‌دهنده Oracle PKCS #11 در فایل ویژگی‌های امنیتی پیکربندی نشده است: .sp .nf \f3jarsigner \-keystore NONE \-storetype PKCS11 \e\fP .fi .nf \f3 \-providerClass sun\&.security\&.pkcs11\&.SunPKCS11 \e\fP .fi .nf \f3 \-providerArg /mydir1/mydir2/token\&.config \e\fP .fi .nf \f3 \-list\fP .fi .nf \f3\fR .fi .sp .TP -providerName \fIproviderName\fR .br اگر بیش از یک ارائه‌دهنده در فایل ویژگی‌های امنیتی \f3java\&.security\fR پیکربندی شده باشد، می‌توانید از گزینه \f3-providerName\fR برای هدف قرار دادن یک نمونه ارائه‌دهنده خاص استفاده کنید\&. آرگومان این گزینه نام ارائه‌دهنده است\&. برای ارائه‌دهنده Oracle PKCS #11، مقدار \fIproviderName\fR به شکل \f3SunPKCS11-\fR\fITokenName\fR است، که در آن \fITokenName\fR پسوند نامی است که نمونه ارائه‌دهنده با آن پیکربندی شده است، همان‌طور که در جدول ویژگی‌های پیکربندی آمده است\&. برای نمونه، دستور زیر محتویات نمونه ارائه‌دهنده مخزن کلید \f3PKCS #11\fR را با پسوند نام \f3SmartCard\fR فهرست می‌کند: .sp .nf \f3jarsigner \-keystore NONE \-storetype PKCS11 \e\fP .fi .nf \f3 \-providerName SunPKCS11\-SmartCard \e\fP .fi .nf \f3 \-list\fP .fi .nf \f3\fR .fi .sp .TP -J\fIjavaoption\fR .br رشته مشخص‌شده \fIjavaoption\fR را مستقیماً به مفسر جاوا ارسال می‌کند\&. دستور \f3jarsigner\fR یک پوشش پیرامون مفسر است\&. این گزینه نباید حاوی هیچ فاصله‌ای باشد\&. برای تنظیم محیط اجرا یا میزان مصرف حافظه مفید است\&. برای دیدن فهرستی از گزینه‌های ممکن مفسر، دستور \f3java -h\fR یا \f3java -X\fR را در خط فرمان وارد کنید\&. .TP -tsa \fIurl\fR .br اگر \f3-tsa http://example\&.tsa\&.url\fR هنگام امضای فایل JAR در خط فرمان ظاهر شود، یک برچسب زمانی برای امضا تولید می‌شود\&. این URL مکان مرجع برچسب زمانی (TSA) را مشخص می‌کند و هر URL یافته‌شده با گزینه \f3-tsacert\fR را لغو می‌نماید\&. گزینه \f3-tsa\fR نیازی به وجود گواهی کلید عمومی TSA در مخزن کلید ندارد\&. برای تولید برچسب زمانی، \f3jarsigner\fR با استفاده از پروتکل برچسب زمانی (TSP) تعریف‌شده در RFC 3161 با TSA ارتباط برقرار می‌کند\&. در صورت موفقیت، توکن برچسب زمانی بازگردانده‌شده توسط TSA به همراه امضا در فایل بلوک امضا ذخیره می‌شود\&. .TP -tsacert \fIalias\fR .br هنگامی که \f3-tsacert alias\fR در خط فرمان هنگام امضای فایل JAR ظاهر شود، یک برچسب زمانی برای امضا تولید می‌شود\&. این نام مستعار، گواهی کلید عمومی TSA در مخزن کلید معتبر را مشخص می‌کند\&. گواهی این مدخل برای یافتن افزونه Subject Information Access که حاوی URL مشخص‌کننده مکان TSA است بررسی می‌شود\&. هنگام استفاده از گزینه \f3-tsacert\fR، گواهی کلید عمومی TSA باید در مخزن کلید وجود داشته باشد\&. .TP -tsapolicyid \fIpolicyid\fR .br شناسه شیء (OID) را مشخص می‌کند که شناسه خط‌مشی ارسالی به سرور TSA را تعیین می‌نماید\&. اگر این گزینه مشخص نشود، هیچ شناسه خط‌مشی‌ای ارسال نمی‌شود و سرور TSA یک شناسه خط‌مشی پیش‌فرض را انتخاب خواهد کرد\&. شناسه‌های شیء توسط X\&.696 تعریف شده‌اند که یک استاندارد بخش استانداردسازی مخابرات ITU (ITU-T) است\&. این شناسه‌ها معمولاً مجموعه‌ای از ارقام نامنفی جداشده با نقطه مانند \f31\&.2\&.3\&.4\fR هستند\&. .TP -altsigner \fIclass\fR .br این گزینه یک سازوکار امضای جایگزین را مشخص می‌کند\&. نام کلاس کاملاً واجد شرایط (Fully-qualified)، فایل کلاسی را مشخص می‌کند که کلاس انتزاعی \f3com\&.sun\&.jarsigner\&.ContentSigner\fR را گسترش می‌دهد\&. مسیر این فایل کلاس توسط گزینه \f3-altsignerpath\fR تعریف می‌شود\&. اگر از گزینه \f3-altsigner\fR استفاده شود، دستور \f3jarsigner\fR از سازوکار امضای ارائه‌شده توسط کلاس مشخص‌شده استفاده می‌کند\&. در غیر این صورت، دستور \f3jarsigner\fR از سازوکار امضای پیش‌فرض خود بهره می‌گیرد\&. برای نمونه، برای استفاده از سازوکار امضای ارائه‌شده توسط کلاسی به نام \f3com\&.sun\&.sun\&.jarsigner\&.AuthSigner\fR، از گزینه \f3-altsigner com\&.sun\&.jarsigner\&.AuthSigner\fR در jarsigner استفاده کنید\&. .TP -altsignerpath \fIclasspathlist\fR .br مسیر فایل کلاس و هر فایل JAR که به آن وابسته است را مشخص می‌کند\&. نام فایل کلاس با گزینه \f3-altsigner\fR مشخص می‌شود\&. اگر فایل کلاس درون یک فایل JAR باشد، این گزینه مسیر آن فایل JAR را مشخص می‌کند\&. یک مسیر مطلق یا مسیری نسبت به دایرکتوری جاری می‌تواند مشخص شود\&. اگر \fIclasspathlist\fR شامل چندین مسیر یا فایل JAR باشد، باید در Oracle Solaris با دونقطه (:) و در ویندوز با سمیکالن (;) از هم جدا شوند\&. زمانی که کلاس از قبل در مسیر جستجو قرار داشته باشد، این گزینه لازم نیست\&. مثال زیر نحوه تعیین مسیر یک فایل JAR را نشان می‌دهد که حاوی فایل کلاس است؛ نام فایل JAR گنجانده شده است: .sp .nf \f3\-altsignerpath /home/user/lib/authsigner\&.jar\fP .fi .nf \f3\fR .fi .sp مثال زیر نحوه تعیین مسیر فایل JAR حاوی فایل کلاس را نشان می‌دهد در حالی که نام فایل JAR حذف شده است: .sp .nf \f3\-altsignerpath /home/user/classes/com/sun/tools/jarsigner/\fP .fi .nf \f3\fR .fi .sp .TP -strict .br در طول فرآیند امضا یا اعتبارسنجی، دستور ممکن است پیام‌های هشدار صادر کند\&. اگر این گزینه را مشخص کنید، کد خروج ابزار منعکس‌کننده پیام‌های هشدار شدیدی خواهد بود که توسط این دستور پیدا شده است\&. بخش خطاها و هشدارها را ببینید\&. .TP -verbose \fIsuboptions\fR .br برای فرآیند اعتبارسنجی، گزینه \f3-verbose\fR زیرگزینه‌هایی را برای تعیین میزان اطلاعات نمایش‌داده‌شده می‌پذیرد\&. اگر گزینه \f3-certs\fR نیز مشخص شده باشد، حالت پیش‌فرض (یا زیرگزینه \f3all\fR) هر مدخل را هنگام پردازش و پس از آن، اطلاعات گواهی هر امضاکننده فایل JAR را نمایش می‌دهد\&. اگر زیرگزینه‌های \f3-certs\fR و \f3-verbose:grouped\fR مشخص شده باشند، مدخل‌هایی با اطلاعات امضاکننده یکسان گروه‌بندی شده و همراه با اطلاعات گواهی آن‌ها نمایش داده می‌شوند\&. اگر زیرگزینه‌های \f3-certs\fR و \f3-verbose:summary\fR مشخص شده باشند، مدخل‌هایی با اطلاعات امضاکننده یکسان گروه‌بندی شده و همراه با اطلاعات گواهی آن‌ها نمایش داده می‌شوند\&. جزئیات مربوط به هر مدخل خلاصه‌سازی شده و به صورت \fIone entry (and more)\fR نمایش داده می‌شود\&. بخش مثال‌ها را ببینید\&. .SH ERRORS\ AND\ WARNINGS در طول فرآیند امضا یا اعتبارسنجی، دستور \f3jarsigner\fR ممکن است خطاها یا هشدارهای مختلفی صادر کند\&. .PP اگر شکستی رخ دهد، دستور \f3jarsigner\fR با کد ۱ خارج می‌شود\&. اگر شکستی رخ ندهد اما یک یا چند هشدار شدید وجود داشته باشد، دستور \f3jarsigner\fR در صورتی که گزینه \f3-strict\fR تعیین \fIنشده\fR باشد با کد ۰ خارج می‌شود، یا زمانی که گزینه \f3-strict\fR مشخص شده باشد با مقدار OR بیتی کدهای هشدار خارج می‌شود\&. اگر فقط هشدارهای اطلاع‌رسانی وجود داشته باشد یا اصلاً هشداری وجود نداشته باشد، دستور همیشه با کد ۰ خارج می‌شود\&. .PP برای نمونه، اگر گواهی مورد استفاده برای امضای یک مدخل منقضی شده باشد و دارای افزونه KeyUsage باشد که اجازه امضای فایل را به آن نمی‌دهد، دستور \f3jarsigner\fR زمانی که گزینه \f3-strict\fR مشخص شده باشد با کد ۱۲ (=۴+۸) خارج می‌شود\&. .PP \fIنکته:\fR کدهای خروج مجدداً استفاده می‌شوند زیرا تنها مقادیر بین ۰ تا ۲۵۵ در سیستم‌عامل‌های مبتنی بر یونیکس مجاز هستند\&. .PP بخش‌های زیر نام‌ها، کدها و توضیحات خطاها و هشدارهایی را که دستور \f3jarsigner\fR می‌تواند صادر کند، شرح می‌دهند\&. .SS FAILURE دلایلی که باعث شکست دستور \f3jarsigner\fR می‌شوند شامل (اما نه محدود به) خطای تجزیه خط فرمان، ناتوانی در یافتن جفت‌کلید برای امضای فایل JAR، یا شکست اعتبارسنجی یک JAR امضاشده است\&. .TP failure کد ۱\&. امضا یا اعتبارسنجی با شکست مواجه شد\&. .SS SEVERE\ WARNINGS \fIنکته:\fR هشدارهای شدید در صورتی که گزینه \f3-strict\fR را تعیین کنید، به عنوان خطا گزارش می‌شوند\&. .PP دلایلی که دستور \f3jarsigner\fR یک هشدار شدید صادر می‌کند شامل مواردی است مانند اینکه گواهی مورد استفاده برای امضای فایل JAR دارای خطا باشد یا فایل JAR امضاشده مشکلات دیگری داشته باشد\&. .TP hasExpiredCert کد ۴\&. این jar حاوی مدخل‌هایی است که گواهی امضاکننده آن‌ها منقضی شده است\&. .TP notYetValidCert کد ۴\&. این jar حاوی مدخل‌هایی است که گواهی امضاکننده آن‌ها هنوز معتبر نشده است\&. .TP chainNotValidated کد ۴\&. این jar حاوی مدخل‌هایی است که زنجیره گواهی آن‌ها نمی‌تواند به درستی اعتبارسنجی شود\&. .TP badKeyUsage کد ۸\&. این jar حاوی مدخل‌هایی است که افزونه KeyUsage گواهی امضاکننده آن‌ها اجازه امضای کد را نمی‌دهد\&. .TP badExtendedKeyUsage کد ۸\&. این jar حاوی مدخل‌هایی است که افزونه ExtendedKeyUsage گواهی امضاکننده آن‌ها اجازه امضای کد را نمی‌دهد\&. .TP badNetscapeCertType کد ۸\&. این jar حاوی مدخل‌هایی است که افزونه NetscapeCertType گواهی امضاکننده آن‌ها اجازه امضای کد را نمی‌دهد\&. .TP hasUnsignedEntry کد ۱۶\&. این jar حاوی مدخل‌های امضانشده‌ای است که یکپارچگی آن‌ها بررسی نشده است\&. .TP notSignedByAlias کد ۳۲\&. این jar حاوی مدخل‌های امضاشده‌ای است که توسط نام(های) مستعار مشخص‌شده امضا نشده‌اند\&. .TP aliasNotInStore کد ۳۲\&. این jar حاوی مدخل‌های امضاشده‌ای است که توسط نام مستعار در این مخزن کلید امضا نشده‌اند\&. .SS INFORMATIONAL\ WARNINGS هشدارهای اطلاع‌رسانی شامل مواردی هستند که خطا نیستند اما به عنوان عملکرد نامناسب تلقی می‌شوند\&. آن‌ها کدی ندارند\&. .TP hasExpiringCert این jar حاوی مدخل‌هایی است که گواهی امضاکننده آن‌ها ظرف شش ماه آینده منقضی می‌شود\&. .TP internalInconsistenciesDetected این jar حاوی ناهماهنگی‌های داخلی شناسایی‌شده در حین اعتبارسنجی است که ممکن است هنگام خواندن از طریق JarFile و JarInputStream محتویات متفاوتی حاصل کند\&. .TP noTimestamp این jar حاوی امضاهایی است که شامل برچسب زمانی نیستند\&. بدون برچسب زمانی، کاربران ممکن است نتوانند این فایل JAR را پس از تاریخ انقضای گواهی امضاکننده (\f3YYYY-MM-DD\fR) یا پس از هر تاریخ ابطال در آینده اعتبارسنجی کنند\&. .SH "مثال‌ها (EXAMPLES)" .SS SIGN\ A\ JAR\ FILE از دستور زیر برای امضای bundle\&.jar با کلید خصوصی کاربری با نام مستعار \f3jane\fR در مخزن کلیدی به نام \f3mystore\fR در دایرکتوری \f3working\fR استفاده کنید و نام فایل JAR امضاشده را \f3sbundle\&.jar\fR بگذارید: .sp .nf \f3jarsigner \-keystore /working/mystore\fP .fi .nf \f3 \-storepass \fP .fi .nf \f3 \-keypass \fP .fi .nf \f3 \-signedjar sbundle\&.jar bundle\&.jar jane\fP .fi .nf \f3\fR .fi .sp هیچ گزینه \f3-sigfile\fR در دستور بالا مشخص نشده است، بنابراین فایل‌های تولیدشده \f3\&.SF\fR و \f3\&.DSA\fR که باید در فایل JAR امضاشده قرار گیرند، نام‌های پیش‌فرضی بر اساس نام مستعار خواهند داشت\&. آن‌ها \f3JANE\&.SF\fR و \f3JANE\&.DSA\fR نام‌گذاری می‌شوند\&. .PP اگر می‌خواهید گذرواژه مخزن و گذرواژه کلید خصوصی از شما درخواست شود، می‌توانید دستور بالا را به صورت زیر کوتاه کنید: .sp .nf \f3jarsigner \-keystore /working/mystore\fP .fi .nf \f3 \-signedjar sbundle\&.jar bundle\&.jar jane\fP .fi .nf \f3\fR .fi .sp اگر مخزن کلید همان مخزن کلید پیش‌فرض باشد (\&.keystore در دایرکتوری خانگی شما)، نیازی به تعیین مخزن کلید ندارید، به صورت زیر: .sp .nf \f3jarsigner \-signedjar sbundle\&.jar bundle\&.jar jane\fP .fi .nf \f3\fR .fi .sp اگر می‌خواهید فایل JAR امضاشده روی فایل JAR ورودی (bundle\&.jar) بازنویسی شود، نیازی به تعیین گزینه \f3-signedjar\fR ندارید، به صورت زیر: .sp .nf \f3jarsigner bundle\&.jar jane\fP .fi .nf \f3\fR .fi .sp .SS VERIFY\ A\ SIGNED\ JAR\ FILE برای اعتبارسنجی یک فایل JAR امضاشده به منظور اطمینان از معتبر بودن امضا و دستکاری نشدن فایل JAR، از دستوری مانند زیر استفاده کنید: .sp .nf \f3jarsigner \-verify sbundle\&.jar\fP .fi .nf \f3\fR .fi .sp هنگامی که اعتبارسنجی موفقیت‌آمیز باشد، پیام \f3jar verified\fR نمایش داده می‌شود\&. در غیر این صورت، یک پیام خطا نمایش می‌یابد\&. زمانی که از گزینه \f3-verbose\fR استفاده می‌کنید می‌توانید اطلاعات بیشتری دریافت نمایید\&. یک نمونه استفاده از \f3jarsigner\fR با گزینه \f3-verbose\fR در ادامه آمده است: .sp .nf \f3jarsigner \-verify \-verbose sbundle\&.jar\fP .fi .nf \f3\fR .fi .nf \f3 198 Fri Sep 26 16:14:06 PDT 1997 META\-INF/MANIFEST\&.MF\fP .fi .nf \f3 199 Fri Sep 26 16:22:10 PDT 1997 META\-INF/JANE\&.SF\fP .fi .nf \f3 1013 Fri Sep 26 16:22:10 PDT 1997 META\-INF/JANE\&.DSA\fP .fi .nf \f3 smk 2752 Fri Sep 26 16:12:30 PDT 1997 AclEx\&.class\fP .fi .nf \f3 smk 849 Fri Sep 26 16:12:46 PDT 1997 test\&.class\fP .fi .nf \f3\fR .fi .nf \f3 s = signature was verified\fP .fi .nf \f3 m = entry is listed in manifest\fP .fi .nf \f3 k = at least one certificate was found in keystore\fP .fi .nf \f3\fR .fi .nf \f3 jar verified\&.\fP .fi .nf \f3\fR .fi .sp .SS VERIFICATION\ WITH\ CERTIFICATE\ INFORMATION اگر گزینه \f3-certs\fR را همراه با گزینه‌های \f3-verify\fR و \f3-verbose\fR مشخص کنید، خروجی شامل اطلاعات گواهی برای هر امضاکننده فایل JAR خواهد بود\&. این اطلاعات شامل نوع گواهی، اطلاعات نام متمایز امضاکننده (زمانی که گواهی X\&.509 است)، و در پرانتز، نام مستعار مخزن کلید برای امضاکننده زمانی که گواهی کلید عمومی در فایل JAR با گواهی موجود در یک مدخل مخزن کلید مطابقت دارد، برای نمونه: .sp .nf \f3jarsigner \-keystore /working/mystore \-verify \-verbose \-certs myTest\&.jar\fP .fi .nf \f3\fR .fi .nf \f3 198 Fri Sep 26 16:14:06 PDT 1997 META\-INF/MANIFEST\&.MF\fP .fi .nf \f3 199 Fri Sep 26 16:22:10 PDT 1997 META\-INF/JANE\&.SF\fP .fi .nf \f3 1013 Fri Sep 26 16:22:10 PDT 1997 META\-INF/JANE\&.DSA\fP .fi .nf \f3 208 Fri Sep 26 16:23:30 PDT 1997 META\-INF/JAVATEST\&.SF\fP .fi .nf \f3 1087 Fri Sep 26 16:23:30 PDT 1997 META\-INF/JAVATEST\&.DSA\fP .fi .nf \f3 smk 2752 Fri Sep 26 16:12:30 PDT 1997 Tst\&.class\fP .fi .nf \f3\fR .fi .nf \f3 X\&.509, CN=Test Group, OU=Java Software, O=Oracle, L=CUP, S=CA, C=US (javatest)\fP .fi .nf \f3 X\&.509, CN=Jane Smith, OU=Java Software, O=Oracle, L=cup, S=ca, C=us (jane)\fP .fi .nf \f3\fR .fi .nf \f3 s = signature was verified\fP .fi .nf \f3 m = entry is listed in manifest\fP .fi .nf \f3 k = at least one certificate was found in keystore\fP .fi .nf \f3\fR .fi .nf \f3 jar verified\&.\fP .fi .nf \f3\fR .fi .sp اگر گواهی برای یک امضاکننده گواهی X\&.509 نباشد، اطلاعات نام متمایز وجود نخواهد داشت\&. در این حالت، فقط نوع گواهی و نام مستعار نمایش داده می‌شود\&. برای نمونه، اگر گواهی یک گواهی PGP باشد و نام مستعار \f3bob\fR باشد، مقدار \f3PGP, (bob)\fR را دریافت خواهید کرد\&. .SH SEE\ ALSO .TP 0.2i \(bu jar(1) .TP 0.2i \(bu keytool(1) .TP 0.2i \(bu مبحث ویژگی‌های امنیتی در Java SE: .RE .br 'pl 8.5i 'bp