'\" t .\" Automatically generated by Pandoc 3.10.2 .\" .TH "JARSIGNER" "1" "2026" "JDK 25.0.4.1" "دستورات JDK" .SH "نام (NAME)" jarsigner \- امضا و اعتبارسنجی فایل‌های بایگانی جاوا (JAR) در OpenJDK 25 .SH "خلاصه دستور (SYNOPSIS)" \f[CR]jarsigner\f[R] [\f[I]گزینه‌ها\f[R]] \f[I]jar\-file\f[R] \f[I]alias\f[R] .PP \f[CR]jarsigner\f[R] \f[CR]\-verify\f[R] [\f[I]گزینه‌ها\f[R]] \f[I]jar\-file\f[R] [\f[I]alias\f[R] ...] .PP \f[CR]jarsigner\f[R] \f[CR]\-version\f[R] .TP \f[I]گزینه‌ها\f[R] گزینه‌های خط فرمان. بخش \f[B]گزینه‌های JARSIGNER\f[R] را ببینید. .TP \f[CR]\-verify\f[R] گزینه \f[CR]\-verify\f[R] می‌تواند صفر یا چند نام مستعار مخزن کلید (keystore alias) را بعد از نام فایل JAR دریافت کند. هنگامی که گزینه \f[CR]\-verify\f[R] مشخص می‌شود، دستور \f[CR]jarsigner\f[R] بررسی می‌کند که گواهی استفاده‌شده برای اعتبارسنجی هر مدخل امضاشده در فایل JAR با یکی از نام‌های مستعار مخزن کلید مطابقت داشته باشد. نام‌های مستعار در مخزن کلید مشخص‌شده با \f[CR]\-keystore\f[R] یا در مخزن کلید پیش‌فرض تعریف شده‌اند. .RS اگر گزینه \f[CR]\-strict\f[R] را نیز مشخص کنید و دستور \f[CR]jarsigner\f[R] هشدارهای شدیدی شناسایی کند، پیام \(dqjar verified, with signer errors\(dq نمایش داده می‌شود. .RE .TP \f[I]jar\-file\f[R] فایل JAR که باید امضا شود. .RS اگر گزینه \f[CR]\-strict\f[R] را نیز مشخص کرده باشید و دستور \f[CR]jarsigner\f[R] هشدارهای شدیدی شناسایی کند، پیام \(dqjar signed, with signer errors\(dq نمایش داده می‌شود. .RE .TP \f[I]alias\f[R] نام‌های مستعار در مخزن کلید تعیین‌شده توسط \f[CR]\-keystore\f[R] یا در مخزن کلید پیش‌فرض تعریف می‌شوند. .TP \f[CR]\-version\f[R] گزینه \f[CR]\-version\f[R] نسخه برنامه \f[CR]jarsigner\f[R] را چاپ می‌کند. .SH "توضیحات (DESCRIPTION)" ابزار \f[CR]jarsigner\f[R] دو هدف اصلی دارد: .IP \(bu 2 امضای فایل‌های بایگانی جاوا (JAR). .IP \(bu 2 اعتبارسنجی امضاها و بررسی یکپارچگی فایل‌های JAR امضاشده. .PP قابلیت JAR امکان بسته‌بندی فایل‌های کلاس، تصاویر، صداها و سایر داده‌های دیجیتال را در یک فایل واحد جهت توزیع سریع‌تر و آسان‌تر فراهم می‌کند. ابزاری به نام \f[CR]jar\f[R] به توسعه‌دهندگان امکان ساخت فایل‌های JAR را می‌دهد. (از نظر فنی، هر فایل ZIP را نیز می‌توان یک فایل JAR در نظر گرفت، هرچند هنگام ایجاد توسط دستور \f[CR]jar\f[R] یا پردازش توسط دستور \f[CR]jarsigner\f[R]، فایل‌های JAR شامل یک فایل \f[CR]META\-INF/MANIFEST.MF\f[R] نیز هستند.) .PP امضای دیجیتال رشته‌ای از بیت‌ها است که از روی داده‌ها (داده‌های در حال امضا) و کلید خصوصی یک موجودیت (شخص، شرکت و غیره) محاسبه می‌شود. مشابه امضای دست‌نویس، امضای دیجیتال دارای ویژگی‌های مفید بسیاری است: .IP \(bu 2 اصالت آن را می‌توان با محاسباتی که از کلید عمومی متناظر با کلید خصوصی تولیدکننده امضا استفاده می‌کند، اعتبارسنجی کرد. .IP \(bu 2 با فرض مخفی نگه داشتن کلید خصوصی، امکان جعل آن وجود ندارد. .IP \(bu 2 تابعی از داده‌های امضاشده است و بنابراین نمی‌توان ادعا کرد که امضای داده‌های دیگر نیز هست. .IP \(bu 2 داده‌های امضاشده قابل تغییر نیستند. اگر داده‌ها تغییر کنند، اصالت امضا دیگر قابل اعتبارسنجی نخواهد بود. .PP دستور \f[CR]jarsigner\f[R] از اطلاعات موجود در یک مخزن کلید (keystore) برای تولید امضاهای دیجیتال برای فایل‌های JAR استفاده می‌کند. مخزن کلید پایگاه‌داده‌ای از کلیدهای خصوصی و گواهی‌های X.509 مرتبط با آن‌ها است. دستور \f[CR]keytool\f[R] می‌تواند برای ایجاد و مدیریت مخازن کلید استفاده شود. .PP دستور \f[CR]jarsigner\f[R] از کلید خصوصی یک موجودیت برای تولید یک امضا استفاده می‌کند. فایل JAR امضاشده حاوی گواهی از مخزن کلید برای کلید عمومی متناظر با کلید خصوصی استفاده‌شده برای امضای فایل نیز خواهد بود. دستور \f[CR]jarsigner\f[R] می‌تواند امضای دیجیتال فایل JAR را با بررسی گواهی‌های موجود در داخل فایل JAR (در فایل بلوک امضا) اعتبارسنجی کند. .PP دستور \f[CR]jarsigner\f[R] می‌تواند برچسب‌های زمانی (timestamps) را هنگام تولید امضاها درج کند. این کار به سیستم‌ها (مانند سیستم‌های زمان اجرا در جاوا) که امضاهای JAR را اعتبارسنجی می‌کنند اجازه می‌دهد تا بررسی کنند که آیا امضا هنگام معتبر بودن گواهی امضا تولید شده است یا خیر. علاوه بر این، گزینه‌هایی برای دستور \f[CR]jarsigner\f[R] وجود دارد که به سیستم‌ها اجازه می‌دهد هشدارهای مربوط به وضعیت گواهی (مانند گواهی‌های منقضی‌شده یا لغو‌شده) را تولید و مشاهده کنند. .PP در حال حاضر دستور \f[CR]jarsigner\f[R] فقط می‌تواند فایل‌های JAR ایجادشده توسط دستور \f[CR]jar\f[R] یا فایل‌های ZIP را امضا کند. فایل‌های بسته‌بندی ارائه‌شده با سایر قالب‌های بسته‌بندی را نمی‌توان امضا کرد. .SH "نام‌های مستعار مخزن کلید (KEYSTORE ALIASES)" تمام ورودی‌های مخزن کلید با استفاده از نام‌های مستعار منحصربه‌فرد قابل دسترسی هستند. هنگام استفاده از دستور \f[CR]jarsigner\f[R] برای امضای یک فایل JAR، باید نام مستعار مدخل مخزن کلید حاوی کلید خصوصی مورد نیاز برای تولید امضا را مشخص کنید. برای مثال، دستور زیر از کلید خصوصی مرتبط با نام مستعار \f[CR]working\f[R] در مخزن کلید پیش‌فرض برای امضای فایل JAR به نام \f[CR]bundle.jar\f[R] استفاده می‌کند: .RS .PP \f[CR]jarsigner bundle.jar working\f[R] .RE .PP اگر یک مدخل مخزن کلید با گذرواژه محافظت شده باشد، دستور \f[CR]jarsigner\f[R] گذرواژه را از شما درخواست می‌کند. .SH "محل مخزن کلید (KEYSTORE LOCATION)" دستور \f[CR]jarsigner\f[R] دارای گزینه \f[CR]\-keystore\f[R] برای تعیین URL مخزن کلیدی است که باید استفاده شود. مخزن کلید به طور پیش‌فرض در فایلی به نام \f[CR].keystore\f[R] در پوشه خانگی کاربر ذخیره می‌شود؛ همان‌طور که توسط ویژگی سیستم \f[CR]user.home\f[R] مشخص شده است. .PP ورودی از URL به متد \f[CR]KeyStore.load\f[R] ارسال می‌شود. اگر \f[CR]NONE\f[R] به عنوان URL مشخص شود، یک مخزن کلید بدون فایل مقداردهی اولیه می‌شود؛ برای مثال، زمانی که مخزن کلید در یک توکن سخت‌افزاری توزیع‌شده قرار دارد. .SH "پیاده‌سازی مخزن کلید (KEYSTORE IMPLEMENTATION)" کلاس \f[CR]KeyStore\f[R] ارائه‌شده در بسته \f[CR]java.security\f[R]، رابط‌های کاملاً تعریف‌شده‌ای را برای دسترسی و اصلاح اطلاعات موجود در یک مخزن کلید ارائه می‌دهد. چندین پیاده‌سازی مشخص مختلف می‌توانند وجود داشته باشند، که هر کدام یک مخزن کلید از یک نوع خاص هستند. .PP در حال حاضر دو ابزار خط فرمان از پیاده‌سازی‌های مخزن کلید استفاده می‌کنند: \f[CR]keytool\f[R] و \f[CR]jarsigner\f[R]. پیاده‌سازی پیش‌فرض مخزن کلید PKCS12 است که یک فرمت مخزن کلید مبتنی بر استاندارد بین‌المللی بر پایه استاندارد RSA PKCS12 Personal Information Exchange Syntax Standard است. .PP دستور \f[CR]jarsigner\f[R] می‌تواند از مخزن کلید مبتنی بر فایل یا هر نوع دیگری از پیاده‌سازی مخزن کلید استفاده کند. به عنوان مثال، هنگام دسترسی به یک توکن سخت‌افزاری PKCS#11، می‌توانید گزینه \f[CR]\-keystore NONE\f[R] و گزینه \f[CR]\-storetype PKCS11\f[R] را برای هدایت دستور \f[CR]jarsigner\f[R] به مخزن کلید توکن سخت‌افزاری مشخص کنید. .PP می‌توانید گزینه \f[CR]\-storetype\f[R] را در خط فرمان برای تعیین نوع مخزن کلید مشخص کنید. اگر نوع مخزن کلید مشخص نشده باشد، دستور \f[CR]jarsigner\f[R] از نوع مشخص‌شده توسط ویژگی امنیتی \f[CR]keystore.type\f[R] در فایل ویژگی‌های امنیتی \f[CR]java.security\f[R] استفاده می‌کند. .PP دستور \f[CR]jarsigner\f[R] همچنین از نوع مخزن کلید \f[CR]KeychainStore\f[R] در سیستم‌های macOS پشتیبانی می‌کند. این نوع مخزن کلید به دستور امکان می‌دهد به گواهی‌ها و کلیدهای خصوصی ذخیره‌شده در زنجیره کلید سیستم اپل دسترسی داشته باشد. .SH "الگوریتم‌های پشتیبانی‌شده (SUPPORTED ALGORITHMS)" به طور پیش‌فرض، دستور \f[CR]jarsigner\f[R] یک فایل JAR را با استفاده از یکی از الگوریتم‌ها و پسوندهای فایل بلوک زیر بسته به نوع و اندازه کلید خصوصی امضا می‌کند: .PP الگوریتم‌های امضای پیش‌فرض و پسوندهای فایل بلوک .TS tab(@); l l l l. T{ keyalg T}@T{ key size T}@T{ default sigalg T}@T{ block file extension T} _ T{ DSA T}@T{ هر اندازه‌ای T}@T{ SHA256withDSA T}@T{ \&.DSA T} T{ RSA T}@T{ < 624 T}@T{ SHA256withRSA T}@T{ \&.RSA T} T{ T}@T{ <= 7680 T}@T{ SHA384withRSA T}@T{ T} T{ T}@T{ > 7680 T}@T{ SHA512withRSA T}@T{ T} T{ EC T}@T{ < 512 T}@T{ SHA384withECDSA T}@T{ \&.EC T} T{ T}@T{ >= 512 T}@T{ SHA512withECDSA T}@T{ T} T{ RSASSA\-PSS T}@T{ < 624 T}@T{ RSASSA\-PSS (with SHA\-256) T}@T{ \&.RSA T} T{ T}@T{ <= 7680 T}@T{ RSASSA\-PSS (with SHA\-384) T}@T{ T} T{ T}@T{ > 7680 T}@T{ RSASSA\-PSS (with SHA\-512) T}@T{ T} T{ EdDSA T}@T{ 255 T}@T{ Ed25519 T}@T{ \&.EC T} T{ T}@T{ 448 T}@T{ Ed448 T}@T{ T} .TE .IP \(bu 2 اگر یک کلید RSASSA\-PSS با پارامترها کدگذاری شده باشد، jarsigner از همان پارامترها در امضا استفاده خواهد کرد. در غیر این صورت، jarsigner از پارامترهایی استفاده می‌کند که بر اساس اندازه کلید طبق جدول بالا تعیین می‌شوند. به عنوان مثال، یک کلید ۳۰۷۲ بیتی RSASSA\-PSS از RSASSA\-PSS به عنوان الگوریتم امضا و SHA\-384 به عنوان الگوریتم‌های هش و MGF1 استفاده خواهد کرد. .IP \(bu 2 اگر الگوریتم کلید در این جدول فهرست نشده باشد، هنگام امضای یک فایل JAR از پسوند \f[CR].DSA\f[R] استفاده می‌شود. .PP این الگوریتم‌های امضای پیش‌فرض را می‌توان با استفاده از گزینه \f[CR]\-sigalg\f[R] لغو و جایگزین کرد. .PP دستور \f[CR]jarsigner\f[R] از ویژگی‌های امنیتی \f[CR]jdk.jar.disabledAlgorithms\f[R] و \f[CR]jdk.security.legacyAlgorithms\f[R] برای تعیین اینکه کدام الگوریتم‌ها یک خطر امنیتی در نظر گرفته می‌شوند استفاده می‌کند. اگر فایل JAR با هر الگوریتمی که غیرفعال شده است امضا شده باشد، مانند یک فایل JAR امضانشده با آن رفتار خواهد شد. اگر فایل JAR با هر یک از الگوریتم‌های موروثی (legacy) امضا شده باشد، به عنوان امضاشده همراه با یک هشدار اطلاع‌رسانی در نظر گرفته می‌شود تا به کاربران اطلاع دهد که الگوریتم موروثی در یک به‌روزرسانی آینده غیرفعال خواهد شد. برای دریافت خروجی اعتبارسنجی با جزئیات کامل، گزینه \f[CR]\-J\-Djava.security.debug=jar\f[R] را بگنجانید. ویژگی‌های امنیتی \f[CR]jdk.jar.disabledAlgorithms\f[R] و \f[CR]jdk.security.legacyAlgorithms\f[R] در فایل \f[CR]java.security\f[R] (واقع در دایرکتوری \f[CR]$JAVA_HOME/conf/security\f[R] متعلق به JDK) تعریف شده‌اند. .PP \f[B]نکته:\f[R] .PP به منظور بهبود امنیت پیش‌فرض، اندازه کلید پیش‌فرض و نام‌های الگوریتم امضا به طور دوره‌ای با هر نسخه جدید JDK به مقادیر قوی‌تر به‌روزرسانی می‌شوند. اگر قابلیت همکاری با نسخه‌های قدیمی‌تر JDK اهمیت دارد، لطفاً اطمینان حاصل کنید که مقادیر پیش‌فرض توسط آن نسخه‌ها پشتیبانی می‌شوند، یا در غیر این صورت با مسئولیت خود از گزینه \f[CR]\-sigalg\f[R] برای لغو مقادیر پیش‌فرض استفاده کنید. .SH "فایل JAR امضاشده (THE SIGNED JAR FILE)" هنگامی که از دستور \f[CR]jarsigner\f[R] برای امضای یک فایل JAR استفاده می‌شود، خروجی همان فایل JAR ورودی است، با این تفاوت که با افزودن دو فایل اضافی به دایرکتوری \f[CR]META\-INF\f[R] تغییر می‌یابد: .IP \(bu 2 یک فایل امضا با پسوند \f[CR].SF\f[R] .IP \(bu 2 یک فایل بلوک امضا با پسوند \f[CR].DSA\f[R]، \f[CR].RSA\f[R] یا \f[CR].EC\f[R] .PP نام پایه این دو فایل بر اساس نام مشخص‌شده با گزینه \f[CR]\-sigfile\f[R] تعیین می‌شود. اگر گزینه \f[CR]\-sigfile\f[R] استفاده نشود، نام‌های پیش‌فرض بر اساس نام مستعار مشخص‌شده در خط فرمان خواهند بود. .PP اگر نام مستعار طولانی‌تر از ۸ کاراکتر باشد یا حاوی کاراکترهایی باشد که در نام فایل مجاز نیستند، نام فایل کوتاه یا تبدیل می‌شود. .SH "فایل امضا (SIGNATURE FILE)" فایل امضا (\f[CR].SF\f[R]) شبیه به فایل مانیفست است، به این صورت که برای هر فایل منبع گنجانده‌شده در فایل JAR، مدخلی وجود دارد. با این حال، به جای هش کردن کل فایل منبع، فایل امضا هش ورودی فایل منبع در فایل مانیفست را محاسبه و ذخیره می‌کند. .PP به طور پیش‌فرض، یک فایل امضا همچنین حاوی یک هدر با هش کل فایل مانیفست است. وجود این هدر اعتبارسنجی را کارآمدتر می‌کند؛ زیرا اگر هش کل فایل مانیفست مطابقت داشته باشد، بررسی هش‌های هر فایل منبع منفرد الزامی نیست. می‌توانید گزینه \f[CR]\-sectionsonly\f[R] را برای جلوگیری از افزودن این هدر به فایل امضا مشخص کنید. .PP فایل امضا می‌تواند شامل اطلاعات اضافی مانند تاریخ و زمان امضا نیز باشد. .SH "فایل بلوک امضا (SIGNATURE BLOCK FILE)" فایل بلوک امضا حاوی امضای دیجیتال واقعی تولیدشده توسط دستور \f[CR]jarsigner\f[R]، همراه با گواهی یا زنجیره گواهی مورد نیاز برای اعتبارسنجی امضا است. امضا در قالب یک پیام PKCS#7 کدگذاری می‌شود. .SH "برچسب زمانی امضا (SIGNATURE TIME STAMP)" دستور \f[CR]jarsigner\f[R] می‌تواند یک برچسب زمانی امضا (signature timestamp) را هنگام امضای یک فایل JAR تولید و ذخیره کند. علاوه بر این، دستور \f[CR]jarsigner\f[R] می‌تواند یک برچسب زمانی را در یک فایل JAR امضاشده اعتبارسنجی کند. .PP تولید برچسب زمانی با اتصال به یک مرجع برچسب زمانی (Time Stamping Authority یا TSA) از طریق گزینه‌های \f[CR]\-tsa\f[R] یا \f[CR]\-tsacert\f[R] انجام می‌شود. اطلاعات برچسب زمانی در فایل بلوک امضا ذخیره می‌شود. .SH "اعتبارسنجی فایل JAR (JAR FILE VERIFICATION)" اعتبارسنجی موفقیت‌آمیز فایل JAR زمانی رخ می‌دهد که امضاها معتبر باشند و هیچ‌یک از فایل‌هایی که هنگام تولید امضا در فایل JAR وجود داشته‌اند، از آن زمان تغییر نکرده باشند. اعتبارسنجی فایل JAR شامل مراحل زیر است: .IP \(bu 2 اعتبارسنجی امضا روی فایل \f[CR].SF\f[R] با استفاده از اطلاعات موجود در فایل بلوک امضا. .IP \(bu 2 اعتبارسنجی هش‌های موجود در فایل \f[CR].SF\f[R] در برابر فایل مانیفست. .IP \(bu 2 اعتبارسنجی هش‌های موجود در فایل مانیفست در برابر هر یک از فایل‌های موجود در فایل JAR. .PP اگر هر یک از این مراحل با شکست مواجه شود، فرآیند اعتبارسنجی ناموفق خواهد بود. .PP علاوه بر این، اگر زنجیره گواهی مورد استفاده برای امضا منقضی یا لغو شده باشد، هشدارهای مناسب صادر می‌شود. .SH "امضاهای چندگانه برای فایل JAR (MULTIPLE SIGNATURES FOR A JAR FILE)" یک فایل JAR می‌تواند توسط چندین موجودیت مختلف امضا شود. هر بار که دستور \f[CR]jarsigner\f[R] روی یک فایل JAR اجرا می‌شود، امضای جدیدی اضافه می‌شود و امضاهای موجود دست‌نخورده باقی می‌مانند. .PP هر امضا دارای فایل‌های \f[CR].SF\f[R] و بلوک امضای مجزای خود در دایرکتوری \f[CR]META\-INF\f[R] خواهد بود. .SH "گزینه‌های JARSIGNER (OPTIONS FOR JARSIGNER)" .PP بخش‌های زیر گزینه‌های \f[CR]jarsigner\f[R] را شرح می‌دهند. به استانداردهای زیر توجه فرمایید: .IP \(bu 2 تمام نام‌های گزینه‌ها با یک خط تیره (-) شروع می‌شوند. .IP \(bu 2 گزینه‌ها را می‌توان به هر ترتیبی ارائه داد. .IP \(bu 2 مواردی که با حروف کج (ایتالیک) یا زیرخط‌دار نمایش داده شده‌اند (مقادیر گزینه‌ها)، نشان‌دهنده مقادیر واقعی هستند که باید وارد شوند. .IP \(bu 2 گزینه‌های \f[CR]-storepass\f[R]، \f[CR]-keypass\f[R]، \f[CR]-sigfile\f[R]، \f[CR]-sigalg\f[R]، \f[CR]-digestalg\f[R]، \f[CR]-signedjar\f[R] و گزینه‌های مرتبط با TSA تنها هنگام امضای فایل JAR مرتبط هستند و هنگام اعتبارسنجی فایل JAR امضاشده کاربردی ندارند. گزینه \f[CR]-keystore\f[R] هم برای امضا و هم برای اعتبارسنجی فایل JAR مرتبط است. علاوه بر این، نام‌های مستعار هنگام امضا و اعتبارسنجی فایل JAR مشخص می‌شوند. .TP \f[CR]-keystore\f[R] \f[I]url\f[R] نشانی URL نشان‌دهنده محل مخزن کلید را مشخص می‌کند. این گزینه به طور پیش‌فرض روی فایل \f[CR].keystore\f[R] در دایرکتوری خانگی کاربر، طبق ویژگی سیستمی \f[CR]user.home\f[R] تنظیم است. .RS .PP مخزن کلید هنگام امضا الزامی است. هنگامی که مخزن کلید پیش‌فرض وجود ندارد یا اگر می‌خواهید از مخزنی غیر از پیش‌فرض استفاده کنید، باید صریحاً یک مخزن کلید مشخص نمایید. .PP مخزن کلید هنگام اعتبارسنجی الزامی نیست، اما اگر مشخص شود یا مخزن پیش‌فرض وجود داشته باشد و گزینه \f[CR]-verbose\f[R] نیز مشخص شده باشد، اطلاعات اضافی در مورد اینکه آیا گواهی‌های استفاده‌شده برای اعتبارسنجی فایل JAR در آن مخزن کلید وجود دارند یا خیر خروجی داده می‌شود. .PP آرگومان \f[CR]-keystore\f[R] می‌تواند یک مسیر و نام فایل به جای URL باشد، که در این حالت مانند یک URL با طرح file: رفتار می‌شود، برای مثال موارد زیر معادل یکدیگرند: .IP \(bu 2 \f[CR]-keystore\f[R] \f[I]filePathAndName\f[R] .IP \(bu 2 \f[CR]-keystore file:\f[R]\f[I]filePathAndName\f[R] .PP اگر ارائه‌دهنده Sun PKCS #11 در فایل ویژگی‌های امنیتی \f[CR]java.security\f[R] (واقع در دایرکتوری \f[CR]$JAVA_HOME/conf/security\f[R] در JDK) پیکربندی شده باشد، ابزارهای \f[CR]keytool\f[R] و \f[CR]jarsigner\f[R] می‌توانند با مشخص کردن این گزینه‌ها روی توکن PKCS #11 کار کنند: .RS .PP \f[CR]-keystore NONE -storetype PKCS11\f[R] .RE .PP به عنوان مثال، دستور زیر محتویات توکن PKCS#11 پیکربندی‌شده را فهرست می‌کند: .RS .PP \f[CR]keytool -keystore NONE -storetype PKCS11 -list\f[R] .RE .RE .TP \f[CR]-storepass\f[R] [\f[CR]:env\f[R] | \f[CR]:file\f[R]] \f[I]argument\f[R] گذرواژه مورد نیاز برای دسترسی به مخزن کلید را مشخص می‌کند. این مورد فقط هنگام امضا (نه اعتبارسنجی) یک فایل JAR مورد نیاز است. در این حالت، اگر گزینه \f[CR]-storepass\f[R] در خط فرمان ارائه نشود، از کاربر درخواست گذرواژه می‌شود. .RS .PP اگر اصلاح‌کننده \f[CR]env\f[R] یا \f[CR]file\f[R] مشخص نشود، گذرواژه دارای مقدار \f[I]argument\f[R] خواهد بود. در غیر این صورت، گذرواژه به شرح زیر بازیابی می‌شود: .IP \(bu 2 \f[CR]env\f[R]: بازیابی گذرواژه از متغیر محیطی با نام \f[I]argument\f[R]. .IP \(bu 2 \f[CR]file\f[R]: بازیابی گذرواژه از فایل با نام \f[I]argument\f[R]. .PP \f[B]نکته:\f[R] .PP گذرواژه نباید در خط فرمان یا در یک اسکریپت مشخص شود مگر اینکه برای اهداف آزمایشی باشد، یا روی یک سیستم امن باشید. .RE .TP \f[CR]-storetype\f[R] \f[I]storetype\f[R] نوع مخزن کلیدی که باید نمونه‌سازی شود را مشخص می‌کند. نوع پیش‌فرض مخزن کلید، مقداری است که به عنوان مقدار ویژگی \f[CR]keystore.type\f[R] در فایل ویژگی‌های امنیتی تعیین شده و توسط متد ایستای \f[CR]getDefaultType\f[R] در \f[CR]java.security.KeyStore\f[R] بازگردانده می‌شود. .RS .PP کد PIN برای یک توکن PKCS #11 را نیز می‌توان با گزینه \f[CR]-storepass\f[R] مشخص کرد. اگر هیچ مقداری مشخص نشود، دستورات \f[CR]keytool\f[R] و \f[CR]jarsigner\f[R] کد PIN توکن را درخواست می‌کنند. اگر توکن دارای مسیر احراز هویت محافظت‌شده باشد (مانند یک صفحه کلید اختصاصی PIN یا یک اثرانگشت‌خوان بیومتریک)، گزینه \f[CR]-protected\f[R] باید مشخص شود و هیچ گزینه گذرواژه‌ای نباید ارائه گردد. .RE .TP \f[CR]-keypass\f[R] [\f[CR]:env\f[R] | \f[CR]:file\f[R]] \f[I]argument\f[R] \f[CR]-certchain\f[R] \f[I]file\f[R] گذرواژه مورد استفاده برای محافظت از کلید خصوصی مدخل مخزن کلید که با نام مستعار مشخص‌شده در خط فرمان آدرس‌دهی شده را تعیین می‌کند. این گذرواژه هنگام استفاده از \f[CR]jarsigner\f[R] برای امضای فایل JAR الزامی است. اگر هیچ گذرواژه‌ای در خط فرمان ارائه نشود و گذرواژه مورد نیاز با گذرواژه مخزن متفاوت باشد، از کاربر خواسته می‌شود آن را وارد کند. .RS .PP اگر اصلاح‌کننده \f[CR]env\f[R] یا \f[CR]file\f[R] مشخص نشود، گذرواژه دارای مقدار \f[I]argument\f[R] خواهد بود. در غیر این صورت، گذرواژه به شرح زیر بازیابی می‌شود: .IP \(bu 2 \f[CR]env\f[R]: بازیابی گذرواژه از متغیر محیطی با نام \f[I]argument\f[R]. .IP \(bu 2 \f[CR]file\f[R]: بازیابی گذرواژه از فایل با نام \f[I]argument\f[R]. .PP \f[B]نکته:\f[R] .PP گذرواژه نباید در خط فرمان یا در اسکریپت مشخص شود مگر اینکه برای اهداف آزمایشی باشد، یا روی یک سیستم امن باشید. .RE .TP \f[CR]-certchain\f[R] \f[I]file\f[R] زنجیره گواهی مورد استفاده را زمانی که زنجیره گواهی مرتبط با کلید خصوصی مدخل مخزن کلید آدرس‌دهی‌شده با نام مستعار کامل نیست، مشخص می‌کند. این حالت زمانی رخ می‌دهد که مخزن کلید روی یک توکن سخت‌افزاری قرار دارد و ظرفیت کافی برای نگهداری زنجیره گواهی کامل وجود ندارد. فایل می‌تواند دنباله‌ای از گواهی‌های الحاق‌شده X.509 یا یک بلوک داده با فرمت PKCS#7 باشد، خواه در قالب باینری یا قالب کدگذاری قابل چاپ (Base64) طبق تعریف \f[B]Internet RFC 1421 Certificate Encoding Standard\f[R] [http://tools.ietf.org/html/rfc1421]. .TP \f[CR]-sigfile\f[R] \f[I]file\f[R] نام فایل پایه مورد استفاده برای فایل‌های \f[CR].SF\f[R] و بلوک امضای تولیدشده را تعیین می‌کند. به عنوان مثال، اگر فایل \f[CR]DUKESIGN\f[R] باشد، فایل‌های \f[CR].SF\f[R] و بلوک امضای تولیدشده \f[CR]DUKESIGN.SF\f[R] و \f[CR]DUKESIGN.RSA\f[R] نام‌گذاری می‌شوند و در دایرکتوری \f[CR]META-INF\f[R] فایل JAR امضاشده قرار می‌گیرند. .RS .PP کاراکترهای موجود در فایل باید از مجموعه \f[CR]a-zA-Z0-9_-\f[R] باشند. فقط حروف، اعداد، خط زیر و خط تیره مجاز هستند. تمام حروف کوچک برای نام فایل‌های \f[CR].SF\f[R] و بلوک امضا به حروف بزرگ تبدیل می‌شوند. .PP اگر گزینه \f[CR]-sigfile\f[R] در خط فرمان ظاهر نشود، نام پایه فایل برای فایل‌های \f[CR].SF\f[R] و بلوک امضا، ۸ کاراکتر اول نام مستعار مشخص‌شده در خط فرمان خواهد بود که همگی به حروف بزرگ تبدیل شده‌اند. اگر نام مستعار کمتر از ۸ کاراکتر داشته باشد، از کل نام مستعار استفاده می‌شود. اگر نام مستعار شامل کاراکترهایی باشد که در نام فایل امضا معتبر نیستند، هر یک از این کاراکترها به یک خط زیر (_) تبدیل می‌شوند. .RE .TP \f[CR]-signedjar\f[R] \f[I]file\f[R] نام فایل JAR امضاشده خروجی را مشخص می‌کند. .TP \f[CR]-digestalg\f[R] \f[I]algorithm\f[R] نام الگوریتم چکیده پیام را برای استفاده هنگام ایجاد چکیده مدخل‌های فایل JAR مشخص می‌کند. .RS .PP برای مشاهده فهرستی از نام‌های استاندارد الگوریتم‌های چکیده پیام، بخش Java Security Standard Algorithm Names را ببینید. .PP اگر این گزینه مشخص نشود، از \f[CR]SHA-384\f[R] استفاده می‌شود. باید یک ارائه‌دهنده به صورت ایستا نصب شده باشد که پیاده‌سازی الگوریتم مشخص‌شده را ارائه دهد، یا کاربر باید با گزینه‌های \f[CR]-addprovider\f[R] یا \f[CR]-providerClass\f[R] یکی را مشخص کند؛ در غیر این صورت دستور با شکست مواجه می‌شود. .RE .TP \f[CR]-sigalg\f[R] \f[I]algorithm\f[R] نام الگوریتم امضا را برای امضای فایل JAR مشخص می‌کند. .RS .PP این الگوریتم باید با کلید خصوصی استفاده‌شده برای امضای فایل JAR سازگار باشد. اگر این گزینه مشخص نشود، از الگوریتم پیش‌فرض متناسب با کلید خصوصی مطابق با بخش \f[B]الگوریتم‌های پشتیبانی‌شده\f[R] استفاده می‌شود. باید یک ارائه‌دهنده نصب‌شده به صورت ایستا وجود داشته باشد که پیاده‌سازی الگوریتم مشخص‌شده را ارائه دهد یا شما باید با گزینه \f[CR]-addprovider\f[R] یا \f[CR]-providerClass\f[R] آن را مشخص کنید؛ در غیر این صورت دستور موفق نخواهد بود. .PP برای فهرستی از نام‌های استاندارد الگوریتم‌های چکیده پیام، بخش Java Security Standard Algorithm Names را ببینید. .RE .TP \f[CR]-verify\f[R] یک فایل JAR امضاشده را اعتبارسنجی می‌کند. .TP \f[CR]-verbose\f[R][\f[CR]:\f[R]\f[I]suboptions\f[R]] هنگامی که گزینه \f[CR]-verbose\f[R] در خط فرمان ظاهر می‌شود، نشان می‌دهد که \f[CR]jarsigner\f[R] هنگام امضا یا اعتبارسنجی از حالت پرحرف (verbose) استفاده کند که در آن زیرگزینه‌ها میزان اطلاعات نمایشی را تعیین می‌کنند. این امر باعث می‌شود \f[CR]jarsigner\f[R] اطلاعات بیشتری درباره پیشرفت امضا یا اعتبارسنجی JAR خروجی دهد. مقادیر \f[I]suboptions\f[R] می‌توانند \f[CR]all\f[R]، \f[CR]grouped\f[R] یا \f[CR]summary\f[R] باشند. .RS .PP اگر گزینه \f[CR]-certs\f[R] نیز مشخص شده باشد، حالت پیش‌فرض (یا زیرگزینه \f[CR]all\f[R]) هر مدخل را در حین پردازش نمایش می‌دهد و پس از آن، اطلاعات گواهی برای هر امضاکننده فایل JAR را نمایش می‌دهد. .PP اگر گزینه \f[CR]-certs\f[R] و زیرگزینه \f[CR]-verbose:grouped\f[R] مشخص شده باشند، مدخل‌های دارای اطلاعات امضاکننده یکسان گروه‌بندی شده و همراه با اطلاعات گواهی آن‌ها نمایش داده می‌شوند. .PP اگر گزینه \f[CR]-certs\f[R] و زیرگزینه \f[CR]-verbose:summary\f[R] مشخص شده باشند، مدخل‌های دارای اطلاعات امضاکننده یکسان گروه‌بندی شده و همراه با اطلاعات گواهی آن‌ها نمایش داده می‌شوند. .PP جزئیات هر مدخل خلاصه‌سازی شده و به صورت \f[I]one entry (and more)\f[R] نمایش داده می‌شود. بخش‌های \f[B]مثال اعتبارسنجی فایل JAR امضاشده\f[R] و \f[B]مثال اعتبارسنجی همراه با اطلاعات گواهی\f[R] را ببینید. .RE .TP \f[CR]-certs\f[R] اگر گزینه \f[CR]-certs\f[R] همراه با گزینه‌های \f[CR]-verify\f[R] و \f[CR]-verbose\f[R] در خط فرمان ظاهر شود، خروجی شامل اطلاعات گواهی برای هر امضاکننده فایل JAR خواهد بود. این اطلاعات شامل نام نوع گواهی (ذخیره‌شده در فایل بلوک امضا) است که کلید عمومی امضاکننده را تأیید می‌کند، و اگر گواهی یک گواهی X.509 باشد (نمونه‌ای از \f[CR]java.security.cert.X509Certificate\f[R])، شامل نام متمایز (distinguished name) امضاکننده خواهد بود. .RS .PP مخزن کلید نیز بررسی می‌شود. اگر هیچ مقدار مخزن کلیدی در خط فرمان مشخص نشده باشد، فایل مخزن کلید پیش‌فرض (در صورت وجود) بررسی می‌شود. اگر گواهی کلید عمومی برای یک امضاکننده با مدخلی در مخزن کلید مطابقت داشته باشد، نام مستعار مدخل مخزن کلید برای آن امضاکننده در داخل پرانتز نمایش داده می‌شود. .RE .TP \f[CR]-revCheck\f[R] این گزینه بررسی وضعیت ابطال گواهی‌ها را هنگام امضا یا اعتبارسنجی فایل JAR فعال می‌کند. در صورت مشخص شدن گزینه \f[CR]-revCheck\f[R] در خط فرمان، دستور \f[CR]jarsigner\f[R] تلاش می‌کند اتصالات شبکه‌ای برای واکشی پاسخ‌های OCSP و لیست‌های ابطال گواهی (CRL) برقرار کند. توجه داشته باشید که بررسی‌های ابطال فعال نمی‌شوند مگر اینکه این گزینه صریحاً مشخص شده باشد. .TP \f[CR]-tsa\f[R] \f[I]url\f[R] اگر \f[CR]-tsa http://example.tsa.url\f[R] هنگام امضای فایل JAR در خط فرمان مشخص شود، یک برچسب زمانی برای امضا تولید می‌گردد. آدرس URL، مکان مرجع برچسب‌گذاری زمانی (TSA) را مشخص کرده و هرگونه URL یافت‌شده با گزینه \f[CR]-tsacert\f[R] را بازنویسی می‌کند. گزینه \f[CR]-tsa\f[R] نیازی به وجود گواهی کلید عمومی TSA در مخزن کلید ندارد. .RS .PP برای تولید برچسب زمانی، \f[CR]jarsigner\f[R] با پروتکل برچسب زمانی (TSP) تعریف‌شده در RFC 3161 با TSA ارتباط برقرار می‌کند. در صورت موفقیت، توکن برچسب زمانی بازگردانده‌شده توسط TSA به همراه امضا در فایل بلوک امضا ذخیره می‌شود. .RE .TP \f[CR]-tsacert\f[R] \f[I]alias\f[R] هنگامی که \f[CR]-tsacert\f[R] \f[I]alias\f[R] در حین امضای فایل JAR در خط فرمان مشخص شود، یک برچسب زمانی برای امضا تولید می‌شود. نام مستعار، گواهی کلید عمومی TSA را در مخزن کلید فعال مشخص می‌کند. گواهی این مدخل برای افزونه Subject Information Access که حاوی یک URL نشان‌دهنده مکان TSA است بررسی می‌شود. .RS .PP هنگام استفاده از گزینه \f[CR]-tsacert\f[R]، گواهی کلید عمومی TSA باید در مخزن کلید موجود باشد. .RE .TP \f[CR]-tsapolicyid\f[R] \f[I]policyid\f[R] شناسه شیء (OID) را که خط‌مشی ارسالی به سرور TSA را مشخص می‌کند تعیین می‌نماید. اگر این گزینه مشخص نشود، هیچ شناسه خط‌مشی ارسال نمی‌شود و سرور TSA یک خط‌مشی پیش‌فرض را انتخاب خواهد کرد. .RS .PP شناسه‌های شیء توسط X.696 که استاندارد بخش استانداردسازی مخابرات ITU (ITU-T) است تعریف می‌شوند. این شناسه‌ها معمولاً مجموعه‌ای از ارقام نامنفی جداشده با نقطه هستند، مانند \f[CR]1.2.3.4\f[R]. .RE .TP \f[CR]-tsadigestalg\f[R] \f[I]algorithm\f[R] الگوریتم چکیده پیامی را که برای تولید نقش پیام (message imprint) ارسالی به سرور TSA استفاده می‌شود مشخص می‌کند. اگر این گزینه مشخص نشود، از SHA-384 استفاده خواهد شد. .RS .PP بخش \f[B]الگوریتم‌های پشتیبانی‌شده\f[R] را ببینید. .PP برای فهرستی از نام‌های استاندارد الگوریتم‌های چکیده پیام، بخش Java Security Standard Algorithm Names را ببینید. .RE .TP \f[CR]-internalsf\f[R] در گذشته، فایل بلوک امضای تولیدشده هنگام امضای فایل JAR شامل یک نسخه کامل و کدگذاری‌شده از فایل \f[CR].SF\f[R] (فایل امضا) بود. این رفتار تغییر کرده است. برای کاهش اندازه کلی فایل JAR خروجی، فایل بلوک امضا به طور پیش‌فرض دیگر حاوی کپی فایل \f[CR].SF\f[R] نیست. اگر \f[CR]-internalsf\f[R] در خط فرمان ظاهر شود، از رفتار قدیمی استفاده می‌شود. این گزینه برای آزمایش مفید است. در عمل از گزینه \f[CR]-internalsf\f[R] استفاده نکنید زیرا سربار بالاتری ایجاد می‌کند. .TP \f[CR]-sectionsonly\f[R] اگر گزینه \f[CR]-sectionsonly\f[R] در خط فرمان ظاهر شود، فایل \f[CR].SF\f[R] (فایل امضا) تولیدشده هنگام امضای فایل JAR شامل هدر حاوی هش کل فایل مانیفست نخواهد بود. این فایل فقط حاوی اطلاعات و هش‌های مربوط به هر فایل منبع منفرد گنجانده‌شده در فایل JAR است. بخش فایل امضا را ببینید. .RS .PP به طور پیش‌فرض، این هدر به عنوان یک بهینه‌سازی اضافه می‌شود. هنگامی که این هدر وجود دارد، هر زمان که فایل JAR اعتبارسنجی می‌شود، اعتبارسنجی ابتدا بررسی می‌کند که آیا هش موجود در هدر با هش کل فایل مانیفست مطابقت دارد یا خیر. در صورت وجود تطابق، اعتبارسنجی به مرحله بعد می‌رود. در صورت عدم تطابق، لازم است اعتبارسنجی با بهینه‌سازی کمتری انجام شود تا اطمینان حاصل گردد که هش موجود در هر بخش اطلاعات فایل منبع در فایل \f[CR].SF\f[R] با هش بخش متناظر آن در فایل مانیفست برابر است. بخش \f[B]اعتبارسنجی فایل JAR\f[R] را ببینید. .PP گزینه \f[CR]-sectionsonly\f[R] در درجه اول برای آزمایش استفاده می‌شود. نباید به غیر از مقاصد آزمایشی استفاده شود زیرا استفاده از آن سربار بالاتری ایجاد می‌کند. .RE .TP \f[CR]-protected\f[R] مقادیر می‌توانند \f[CR]true\f[R] یا \f[CR]false\f[R] باشند. هنگامی که گذرواژه باید از طریق یک مسیر احراز هویت محافظت‌شده مانند یک دستگاه کارت‌خوان PIN اختصاصی مشخص شود، مقدار \f[CR]true\f[R] را تعیین کنید. .TP \f[CR]-providerName\f[R] \f[I]providerName\f[R] اگر بیش از یک ارائه‌دهنده در فایل ویژگی‌های امنیتی \f[CR]java.security\f[R] پیکربندی شده باشد، می‌توانید از گزینه \f[CR]-providerName\f[R] برای هدف قرار دادن یک نمونه ارائه‌دهنده خاص استفاده کنید. آرگومان این گزینه نام ارائه‌دهنده است. .RS .PP برای ارائه‌دهنده Oracle PKCS #11، مقدار \f[I]providerName\f[R] به صورت \f[CR]SunPKCS11-\f[R]\f[I]TokenName\f[R] است که در آن \f[I]TokenName\f[R] پسوند نامی است که نمونه ارائه‌دهنده با آن پیکربندی شده است. به عنوان مثال، دستور زیر محتویات نمونه ارائه‌دهنده مخزن کلید \f[CR]PKCS #11\f[R] را با پسوند نام \f[CR]SmartCard\f[R] فهرست می‌کند: .RS .PP \f[CR]jarsigner -keystore NONE -storetype PKCS11 -providerName SunPKCS11-SmartCard -list\f[R] .RE .RE .TP \f[CR]-addprovider\f[R] \f[I]name\f[R] [\f[CR]-providerArg\f[R] \f[I]arg\f[R]] یک ارائه‌دهنده امنیتی را با نام (مانند SunPKCS11) و یک آرگومان پیکربندی اختیاری اضافه می‌کند. مقدار ارائه‌دهنده امنیتی، نام یک ارائه‌دهنده امنیتی است که در یک ماژول تعریف شده است. .RS .PP ابزارهای \f[CR]keytool\f[R] و \f[CR]jarsigner\f[R] همراه با گزینه \f[CR]-providerArg ConfigFilePath\f[R]، ارائه‌دهنده را به صورت پویا نصب می‌کنند و از \f[CR]ConfigFilePath\f[R] برای مسیر فایل پیکربندی توکن استفاده می‌نمایند. مثال زیر دستوری را برای فهرست کردن مخزن کلید \f[CR]PKCS #11\f[R] نشان می‌دهد در حالی که ارائه‌دهنده Oracle PKCS #11 در فایل ویژگی‌های امنیتی پیکربندی نشده است: .RS .PP \f[CR]jarsigner -keystore NONE -storetype PKCS11 -addprovider SunPKCS11 -providerArg /mydir1/mydir2/token.config\f[R] .RE .RE .TP \f[CR]-providerClass\f[R] \f[I]provider-class-name\f[R] [\f[CR]-providerArg\f[R] \f[I]arg\f[R]] برای تعیین نام فایل کلاس اصلی ارائه‌دهنده خدمات رمزنگاری زمانی که ارائه‌دهنده خدمات در فایل ویژگی‌های امنیتی \f[CR]java.security\f[R] فهرست نشده است استفاده می‌شود. یک ارائه‌دهنده امنیتی را با نام کلاس کاملاً واجد شرایط و یک آرگومان پیکربندی اختیاری اضافه می‌کند. .RS .PP \f[B]نکته:\f[R] .PP روش ترجیحی برای بارگذاری PKCS11 استفاده از ماژول‌ها است. گزینه \f[CR]-addprovider\f[R] را ببینید. .RE .TP \f[CR]-providerPath\f[R] \f[I]classpath\f[R] برای تعیین مسیر کلاس (classpath) برای ارائه‌دهندگان مشخص‌شده توسط گزینه \f[CR]-providerClass\f[R] استفاده می‌شود. مسیرهای متعدد باید با کاراکتر جداکننده مسیر وابسته به سیستم جدا شوند. .TP \f[CR]-J\f[R]\f[I]javaoption\f[R] رشته \f[I]javaoption\f[R] مشخص‌شده را مستقیماً به مفسر جاوا ارسال می‌کند. دستور \f[CR]jarsigner\f[R] پوششی پیرامون مفسر است. این گزینه نباید شامل هیچ فاصله‌ای باشد. این گزینه برای تنظیم محیط اجرا یا میزان استفاده از حافظه مفید است. برای مشاهده فهرستی از گزینه‌های ممکن مفسر، عبارت \f[CR]java -h\f[R] یا \f[CR]java -X\f[R] را در خط فرمان وارد کنید. .TP \f[CR]-strict\f[R] در طول فرآیند امضا یا اعتبارسنجی، دستور ممکن است پیام‌های هشدار صادر کند. اگر این گزینه را مشخص کنید، کد خروج ابزار منعکس‌کننده پیام‌های هشدار شدیدی خواهد بود که دستور یافته است. بخش \f[B]خطاها و هشدارها\f[R] را ببینید. .TP \f[CR]-conf\f[R] \f[I]url\f[R] یک فایل گزینه‌های از پیش پیکربندی‌شده را مشخص می‌کند. برای جزئیات بیشتر، \f[B]مستندات keytool\f[R] را بخوانید. کلیدهای ویژگی پشتیبانی‌شده عبارتند از \(dqjarsigner.all\(dq برای همه اقدامات، \(dqjarsigner.sign\(dq برای امضا و \(dqjarsigner.verify\(dq برای اعتبارسنجی. آرگومان‌های \f[CR]jarsigner\f[R] از جمله نام فایل JAR و نام(های) مستعار را نمی‌توان در این فایل تنظیم کرد. .TP \f[CR]-version\f[R] نسخه برنامه را چاپ می‌کند. .SH "خطاها و هشدارها (ERRORS AND WARNINGS)" .PP در طول فرآیند امضا یا اعتبارسنجی، دستور \f[CR]jarsigner\f[R] ممکن است خطاها یا هشدارهای مختلفی صادر کند. .PP در صورت بروز شکست، دستور \f[CR]jarsigner\f[R] با کد ۱ خارج می‌شود. اگر شکستی رخ ندهد اما یک یا چند هشدار شدید وجود داشته باشد، در صورتی که گزینه \f[CR]-strict\f[R] مشخص \f[B]نشده\f[R] باشد دستور \f[CR]jarsigner\f[R] با کد ۰ خارج می‌شود، یا در صورت مشخص شدن گزینه \f[CR]-strict\f[R]، با مقدار بیتی OR حاصل از کدهای هشدار خارج می‌شود. اگر فقط هشدارهای اطلاع‌رسانی وجود داشته باشد یا اصلاً هشداری وجود نداشته باشد، دستور همیشه با کد ۰ خارج می‌شود. .PP به عنوان مثال، اگر گواهی استفاده‌شده برای امضای یک مدخل منقضی شده باشد و دارای افزونه KeyUsage باشد که اجازه امضای فایل را به آن نمی‌دهد، دستور \f[CR]jarsigner\f[R] در صورت تعیین گزینه \f[CR]-strict\f[R] با کد ۱۲ (=۴+۸) خارج می‌شود. .PP \f[B]نکته:\f[R] کدهای خروج مجدداً استفاده می‌شوند زیرا تنها مقادیر ۰ تا ۲۵۵ در لینوکس و macOS مجاز هستند. .PP بخش‌های زیر نام‌ها، کدها و توضیحات مربوط به خطاها و هشدارهایی را که دستور \f[CR]jarsigner\f[R] می‌تواند صادر کند، شرح می‌دهند. .SH "شکست (FAILURE)" .PP دلایل شکست دستور \f[CR]jarsigner\f[R] شامل (اما نه محدود به) خطای تجزیه خط فرمان، ناتوانی در یافتن جفت‌کلید برای امضای فایل JAR، یا شکست اعتبارسنجی یک فایل JAR امضاشده است. .TP failure کد ۱. امضا یا اعتبارسنجی با شکست مواجه شد. .SH "هشدارهای شدید (SEVERE WARNINGS)" .PP \f[B]نکته:\f[R] .PP اگر گزینه \f[CR]-strict\f[R] را مشخص کنید، هشدارهای شدید به عنوان خطا گزارش می‌شوند. .PP دلایلی که باعث می‌شود دستور \f[CR]jarsigner\f[R] یک هشدار شدید صادر کند شامل وجود خطا در گواهی استفاده‌شده برای امضای فایل JAR یا وجود مشکلات دیگر در فایل JAR امضاشده است. .TP hasExpiredCert کد ۴. این JAR حاوی مدخل‌هایی است که گواهی امضاکننده آن‌ها منقضی شده است. .TP hasExpiredTsaCert کد ۴. برچسب زمانی منقضی شده است. .TP notYetValidCert کد ۴. این JAR حاوی مدخل‌هایی است که گواهی امضاکننده آن‌ها هنوز معتبر نشده است. .TP chainNotValidated کد ۴. این JAR حاوی مدخل‌هایی است که زنجیره گواهی آن‌ها اعتبارسنجی نشده است. .TP tsaChainNotValidated کد ۶۴. برچسب زمانی نامعتبر است. .TP signerSelfSigned کد ۴. این JAR حاوی مدخل‌هایی است که گواهی امضاکننده آن‌ها خودامضاشده (self-signed) است. .TP disabledAlg کد ۴. یک الگوریتم استفاده‌شده ریسک امنیتی در نظر گرفته شده و غیرفعال است. .TP badKeyUsage کد ۸. این JAR حاوی مدخل‌هایی است که افزونه KeyUsage در گواهی امضاکننده آن‌ها اجازه امضای کد را نمی‌دهد. .TP badExtendedKeyUsage کد ۸. این JAR حاوی مدخل‌هایی است که افزونه ExtendedKeyUsage در گواهی امضاکننده آن‌ها اجازه امضای کد را نمی‌دهد. .TP badNetscapeCertType کد ۸. این JAR حاوی مدخل‌هایی است که افزونه NetscapeCertType در گواهی امضاکننده آن‌ها اجازه امضای کد را نمی‌دهد. .TP hasUnsignedEntry کد ۱۶. این JAR حاوی مدخل‌های امضانشده‌ای است که یکپارچگی آن‌ها بررسی نشده است. .TP notSignedByAlias کد ۳۲. این JAR حاوی مدخل‌های امضاشده‌ای است که توسط نام(های) مستعار مشخص‌شده امضا نشده‌اند. .TP aliasNotInStore کد ۳۲. این JAR حاوی مدخل‌های امضاشده‌ای است که توسط نام مستعار موجود در این مخزن کلید امضا نشده‌اند. .TP tsaChainNotValidated کد ۶۴. این JAR حاوی مدخل‌هایی است که زنجیره گواهی TSA آن‌ها نامعتبر است. .SH "هشدارهای اطلاع‌رسانی (INFORMATIONAL WARNINGS)" .TP extraAttributesDetected مجوزهای فایل POSIX و/یا ویژگی‌های پیوند نمادین (symlink) هنگام امضا یا اعتبارسنجی یک فایل JAR شناسایی شده‌اند. ابزار \f[CR]jarsigner\f[R] این ویژگی‌ها را در فایل امضاشده جدید حفظ می‌کند، اما هشدار می‌دهد که این ویژگی‌ها امضا نشده‌اند و توسط امضا محافظت نمی‌شوند. .TP hasExpiringCert این JAR حاوی ورودی‌هایی است که گواهی امضاکننده آن‌ها ظرف شش ماه منقضی می‌شود. .TP hasExpiringTsaCert برچسب زمانی ظرف یک سال در تاریخ \f[CR]YYYY\-MM\-DD\f[R] منقضی خواهد شد. .TP hasMultipleManifests این JAR حاوی چندین فایل مانیفست بود. در حین امضا، یکی از فایل‌ها انتخاب شد و بقیه کنار گذاشته شدند. .TP hasNonexistentEntries این JAR حاوی ورودی‌های امضاشده برای فایل‌هایی است که وجود ندارند. .TP internalInconsistenciesDetected این فایل JAR حاوی ناسازگاری‌های درونی است که در حین اعتبارسنجی شناسایی شده و ممکن است هنگام خواندن از طریق JarFile و JarInputStream به محتویات متفاوتی منجر شود. .TP legacyAlg الگوریتم مورد استفاده یک ریسک امنیتی در نظر گرفته شده اما غیرفعال نشده است. .TP noTimestamp این JAR حاوی امضاهایی است که برچسب زمانی ندارند. بدون برچسب زمانی، کاربران ممکن است نتوانند این فایل JAR را پس از تاریخ انقضای گواهی امضاکننده (\f[CR]YYYY\-MM\-DD\f[R]) یا پس از هر تاریخ لغو در آینده اعتبارسنجی کنند. .SH "مثال امضای فایل JAR (EXAMPLE OF SIGNING A JAR FILE)" .PP برای امضای \f[CR]bundle.jar\f[R] با کلید خصوصی کاربری که نام مستعار آن در مخزن کلید \f[CR]jane\f[R] است در مخزن کلیدی به نام \f[CR]mystore\f[R] در دایرکتوری \f[CR]working\f[R] و نام‌گذاری فایل JAR امضاشده به \f[CR]sbundle.jar\f[R]، از دستور زیر استفاده کنید: .RS .PP \f[CR]jarsigner -keystore /working/mystore -storepass\f[R] \f[I]keystore_password\f[R] \f[CR]-keypass\f[R] \f[I]private_key_password\f[R] \f[CR]-signedjar sbundle.jar bundle.jar jane\f[R] .RE .PP در دستور قبلی گزینه \f[CR]-sigfile\f[R] مشخص نشده است، بنابراین فایل‌های \f[CR].SF\f[R] و بلوک امضای تولیدشده برای قرارگیری در فایل JAR امضاشده، نام‌های پیش‌فرضی بر اساس نام مستعار خواهند داشت. نام آن‌ها \f[CR]JANE.SF\f[R] و \f[CR]JANE.RSA\f[R] خواهد بود. .PP اگر می‌خواهید گذرواژه مخزن و گذرواژه کلید خصوصی از شما درخواست شود، می‌توانید دستور قبلی را به صورت زیر کوتاه کنید: .RS .PP \f[CR]jarsigner -keystore /working/mystore -signedjar sbundle.jar bundle.jar jane\f[R] .RE .PP اگر \f[CR]keystore\f[R] مخزن کلید پیش‌فرض باشد (\f[CR].keystore\f[R] در دایرکتوری خانگی شما)، نیازی به تعیین \f[CR]keystore\f[R] ندارید، به صورت زیر: .RS .PP \f[CR]jarsigner -signedjar sbundle.jar bundle.jar jane\f[R] .RE .PP اگر می‌خواهید فایل JAR امضاشده جایگزین فایل JAR ورودی (\f[CR]bundle.jar\f[R]) شود، نیازی به تعیین گزینه \f[CR]-signedjar\f[R] ندارید، به صورت زیر: .RS .PP \f[CR]jarsigner bundle.jar jane\f[R] .RE .SH "مثال اعتبارسنجی فایل JAR امضاشده (EXAMPLE OF VERIFYING A SIGNED JAR FILE)" .PP برای اعتبارسنجی یک فایل JAR امضاشده به منظور اطمینان از معتبر بودن امضا و عدم دستکاری فایل JAR، از دستوری مانند زیر استفاده کنید: .RS .PP \f[CR]jarsigner -verify ButtonDemo.jar\f[R] .RE .PP هنگامی که اعتبارسنجی موفقیت‌آمیز باشد، عبارت \f[CR]jar verified\f[R] نمایش داده می‌شود. در غیر این صورت یک پیام خطا نمایش داده می‌شود. هنگامی که از گزینه \f[CR]-verbose\f[R] استفاده کنید می‌توانید اطلاعات بیشتری دریافت کنید. نمونه‌ای از استفاده از \f[CR]jarsigner\f[R] با گزینه \f[CR]-verbose\f[R] به شرح زیر است: .IP .nf \f[CB] jarsigner -verify -verbose ButtonDemo.jar s 866 Tue Sep 12 20:08:48 EDT 2017 META-INF/MANIFEST.MF 825 Tue Sep 12 20:08:48 EDT 2017 META-INF/ORACLE_C.SF 7475 Tue Sep 12 20:08:48 EDT 2017 META-INF/ORACLE_C.RSA 0 Tue Sep 12 20:07:54 EDT 2017 META-INF/ 0 Tue Sep 12 20:07:16 EDT 2017 components/ 0 Tue Sep 12 20:07:16 EDT 2017 components/images/ sm 523 Tue Sep 12 20:07:16 EDT 2017 components/ButtonDemo$1.class sm 3440 Tue Sep 12 20:07:16 EDT 2017 components/ButtonDemo.class sm 2346 Tue Sep 12 20:07:16 EDT 2017 components/ButtonDemo.jnlp sm 172 Tue Sep 12 20:07:16 EDT 2017 components/images/left.gif sm 235 Tue Sep 12 20:07:16 EDT 2017 components/images/middle.gif sm 172 Tue Sep 12 20:07:16 EDT 2017 components/images/right.gif s = signature was verified m = entry is listed in manifest k = at least one certificate was found in keystore - Signed by \(dqCN=\(dqOracle America, Inc.\(dq, OU=Software Engineering, O=\(dqOracle America, Inc.\(dq, L=Redwood City, ST=California, C=US\(dq Digest algorithm: SHA-256 Signature algorithm: SHA256withRSA, 2048-bit key Timestamped by \(dqCN=Symantec Time Stamping Services Signer - G4, O=Symantec Corporation, C=US\(dq on Tue Sep 12 20:08:49 UTC 2017 Timestamp digest algorithm: SHA-1 Timestamp signature algorithm: SHA1withRSA, 2048-bit key jar verified. The signer certificate expired on 2018-02-01. However, the JAR will be valid until the timestamp expires on 2020-12-29. \f[R] .fi .SH "مثال اعتبارسنجی همراه با اطلاعات گواهی (EXAMPLE OF VERIFICATION WITH CERTIFICATE INFORMATION)" .PP اگر گزینه \f[CR]-certs\f[R] را همراه با گزینه‌های \f[CR]-verify\f[R] و \f[CR]-verbose\f[R] مشخص کنید، خروجی شامل اطلاعات گواهی برای هر امضاکننده فایل JAR خواهد بود. این اطلاعات شامل نوع گواهی، اطلاعات نام متمایز امضاکننده (زمانی که گواهی X.509 است)، و در صورت تطابق گواهی کلید عمومی موجود در فایل JAR با مدخلی در مخزن کلید، نام مستعار مخزن کلید برای امضاکننده در داخل پرانتز خواهد بود، به عنوان مثال: .IP .nf \f[CB] jarsigner -keystore $JAVA_HOME/lib/security/cacerts -verify -verbose -certs ButtonDemo.jar s k 866 Tue Sep 12 20:08:48 EDT 2017 META-INF/MANIFEST.MF >>> Signer X.509, CN=\(dqOracle America, Inc.\(dq, OU=Software Engineering, O=\(dqOracle America, Inc.\(dq, L=Redwood City, ST=California, C=US [certificate is valid from 2017-01-30, 7:00 PM to 2018-02-01, 6:59 PM] X.509, CN=Symantec Class 3 SHA256 Code Signing CA, OU=Symantec Trust Network, O=Symantec Corporation, C=US [certificate is valid from 2013-12-09, 7:00 PM to 2023-12-09, 6:59 PM] X.509, CN=VeriSign Class 3 Public Primary Certification Authority - G5, OU=\(dq(c) 2006 VeriSign, Inc. - For authorized use only\(dq, OU=VeriSign Trust Network, O=\(dqVeriSign, Inc.\(dq, C=US (verisignclass3g5ca [jdk]) [trusted certificate] >>> TSA X.509, CN=Symantec Time Stamping Services Signer - G4, O=Symantec Corporation, C=US [certificate is valid from 2012-10-17, 8:00 PM to 2020-12-29, 6:59 PM] X.509, CN=Symantec Time Stamping Services CA - G2, O=Symantec Corporation, C=US [certificate is valid from 2012-12-20, 7:00 PM to 2020-12-30, 6:59 PM] 825 Tue Sep 12 20:08:48 EDT 2017 META-INF/ORACLE_C.SF 7475 Tue Sep 12 20:08:48 EDT 2017 META-INF/ORACLE_C.RSA 0 Tue Sep 12 20:07:54 EDT 2017 META-INF/ 0 Tue Sep 12 20:07:16 EDT 2017 components/ 0 Tue Sep 12 20:07:16 EDT 2017 components/images/ smk 523 Tue Sep 12 20:07:16 EDT 2017 components/ButtonDemo$1.class [entry was signed on 2017-09-12, 4:08 PM] >>> Signer X.509, CN=\(dqOracle America, Inc.\(dq, OU=Software Engineering, O=\(dqOracle America, Inc.\(dq, L=Redwood City, ST=California, C=US [certificate is valid from 2017-01-30, 7:00 PM to 2018-02-01, 6:59 PM] X.509, CN=Symantec Class 3 SHA256 Code Signing CA, OU=Symantec Trust Network, O=Symantec Corporation, C=US [certificate is valid from 2013-12-09, 7:00 PM to 2023-12-09, 6:59 PM] X.509, CN=VeriSign Class 3 Public Primary Certification Authority - G5, OU=\(dq(c) 2006 VeriSign, Inc. - For authorized use only\(dq, OU=VeriSign Trust Network, O=\(dqVeriSign, Inc.\(dq, C=US (verisignclass3g5ca [jdk]) [trusted certificate] >>> TSA X.509, CN=Symantec Time Stamping Services Signer - G4, O=Symantec Corporation, C=US [certificate is valid from 2012-10-17, 8:00 PM to 2020-12-29, 6:59 PM] X.509, CN=Symantec Time Stamping Services CA - G2, O=Symantec Corporation, C=US [certificate is valid from 2012-12-20, 7:00 PM to 2020-12-30, 6:59 PM] smk 3440 Tue Sep 12 20:08:48 EDT 2017 components/ButtonDemo.class \&... smk 2346 Tue Sep 12 20:08:48 EDT 2017 components/ButtonDemo.jnlp \&... smk 172 Tue Sep 12 20:08:48 EDT 2017 components/images/left.gif \&... smk 235 Tue Sep 12 20:08:48 EDT 2017 components/images/middle.gif \&... smk 172 Tue Sep 12 20:08:48 EDT 2017 components/images/right.gif \&... s = signature was verified m = entry is listed in manifest k = at least one certificate was found in keystore - Signed by \(dqCN=\(dqOracle America, Inc.\(dq, OU=Software Engineering, O=\(dqOracle America, Inc.\(dq, L=Redwood City, ST=California, C=US\(dq Digest algorithm: SHA-256 Signature algorithm: SHA256withRSA, 2048-bit key Timestamped by \(dqCN=Symantec Time Stamping Services Signer - G4, O=Symantec Corporation, C=US\(dq on Tue Sep 12 20:08:49 UTC 2017 Timestamp digest algorithm: SHA-1 Timestamp signature algorithm: SHA1withRSA, 2048-bit key jar verified. The signer certificate expired on 2018-02-01. However, the JAR will be valid until the timestamp expires on 2020-12-29. \f[R] .fi .PP اگر گواهی یک امضاکننده یک گواهی X.509 نباشد، هیچ اطلاعات نام متمایزی وجود نخواهد داشت. در این صورت، فقط نوع گواهی و نام مستعار نمایش داده می‌شوند. به عنوان مثال، اگر گواهی یک گواهی PGP باشد و نام مستعار \f[CR]bob\f[R] باشد، عبارت \f[CR]PGP, (bob)\f[R] را دریافت خواهید کرد.