名前
jarsigner - Java Archive (JAR)ファイルに署名して確認
シノプシス
jarsigner
[options] jar-file alias
jarsigner
-verify
[options] jar-file [alias ...]
jarsigner
-version
- options
- コマンド行オプション。 「jarsignerのオプション」を参照してください。
-verify
-
-verify
オプションでは、JARファイル名の後に0個以上のキーストア別名を指定できます。-verify
オプションを指定すると、jarsigner
コマンドは、JARファイル内の個々の署名済エントリを検証するために使用された証明書がいずれかのキーストア別名と一致するかどうかを確認します。 別名は、-keystore
で指定されたキーストアまたはデフォルトのキーストアで定義されています。-strict
オプションも指定し、jarsigner
コマンドが重大な警告を検出した場合、メッセージ"jar検証済、署名者エラーあり"が表示されます。 - jar-file
-
署名が付けられるJARファイルです。
-strict
オプションも指定した場合は、jarsigner
コマンドで重大な警告が検出されると、「jar signed, with signer errors」というメッセージが表示されます。 - alias
-
別名は、
-keystore
で指定されたキーストアまたはデフォルトのキーストアで定義されています。 -version
-
-version
オプションは、プログラム・バージョンのjarsigner
を出力します。
説明
jarsigner
ツールの目的は次の2つです。
Java Archive (JAR)ファイルに署名を付ける。
署名付きJARファイルの署名と整合性を検証する。
JAR機能を使用すると、クラス・ファイル、イメージ、サウンドおよびその他のデジタル・データを単一のファイルにパッケージ化できるので、ファイルを迅速かつ容易に配布できます。 開発者は、jar
という名前のツールを使用してJARファイルを作成できます。 (技術的には、ZIPファイルもJARファイルとみなすことができますが、jar
コマンドで作成するか、jarsigner
コマンドで処理すると、JARファイルにもMETA-INF/MANIFEST.MF
ファイルが含まれます。)
デジタル署名は、なんらかのデータ(署名の対象となるデータ)と、エンティティ(人、会社など)の秘密キーとに基づいて計算されるビット列です。 手書きの署名と同様に、デジタル署名には多くの利点があります。
署名の生成に使われた秘密キーと対になる公開キーを使用して計算を行うことで、デジタル署名が本物かどうかを検証できる。
秘密キーが他人に知られないかぎり、偽造は不可能である。
デジタル署名は、その署名が付いたデータのみを対象とするものであり、他のデータの署名として機能することはありません。
署名付きデータは変更できない。 データが変更された場合は、その署名が本物であることが検証できない。
ファイルに対してエンティティの署名を生成するには、まず、エンティティは、そのエンティティに関連する公開キーと秘密キーのペアを持つ必要があります。また、公開キーを認証する1つまたは複数の証明書も必要です。 証明書とは、あるエンティティが発行したデジタル署名付きの文書であり、別のエンティティの公開キーが特定の値であることを証明しています。
jarsigner
コマンドは、キーストアに含まれるキーと証明書情報を使用して、JARファイルのデジタル署名を生成します。 キーストアは、秘密キーとそれに関連するX.509証明書チェーン(対応する公開キーを認証する)が格納されたデータベースです。 キーストアの作成と管理には、keytool
コマンドを使用します。
jarsigner
コマンドは、エンティティの秘密キーを使用して署名を生成します。 署名付きJARファイルには、ファイルの署名に使用する秘密キーに対応する公開キーを保存するキーストアから取った証明書のコピーも含まれています。 jarsigner
コマンドは、署名付きJARファイルのデジタル署名を、ファイル内(の署名ブロック・ファイル)に含まれている証明書を使用して検証できます。
jarsigner
コマンドでは、システムまたはデプロイヤがシグネチャ証明書がまだ有効である間にJARファイルがシグネチャされたかどうかを確認できるタイムスタンプを含むシグネチャを生成できます。
さらに、アプリケーションはAPIを使用してタイムスタンプ情報を取得できます。
現時点では、jarsigner
コマンドで署名できるのは、jar
コマンドで作成されたJARファイルまたはZIPファイルのみです。 JARファイルはzipファイルと同じですが、JARファイルにはMETA-INF/MANIFEST.MF
ファイルが含まれている点が異なります。 META-INF/MANIFEST.MF
ファイルは、jarsigner
コマンドがzipファイルに署名を付けるときに作成されます。
デフォルトでは、jarsigner
コマンドはJARまたはzipファイルに署名を付けます。 署名付きJARファイルを検証する場合は、-verify
オプションを使用します。
また、jarsigner
コマンドは、署名または検証後に署名者の証明書の検証も試みます。 -revCheck
オプションが指定されている場合、検証時に署名者証明書チェーン内の各証明書の失効ステータスがチェックされます。 検証エラーやその他の問題が発生した場合は、コマンドによって警告メッセージが生成されます。 -strict
オプションを指定した場合は、コマンドで重大な警告がエラーとして処理されます。 「エラーと警告」を参照してください。
キーストアの別名
キーストアのすべてのエントリは、一意の別名を使用してアクセスされます。
jarsigner
コマンドを使用してJARファイルに署名を付けるときは、署名の生成に必要な秘密キーを含むキーストア・エントリの別名を指定する必要があります。 出力ファイルが指定されていない場合は、元のJARファイルを署名付きJARファイルで上書きします。
キーストアはパスワードで保護されているので、ストアのパスワードを指定する必要があります。 コマンド行で指定しないと、入力を求められます。 同様に、秘密鍵はパスワードのあるキーストアで保護されるため、コマンドラインで指定しない場合はパスワードの入力を求めるプロンプトが表示され、ストア・パスワードと同じではありません。
キーストアの場所
jarsigner
コマンドには、使用するキーストアのURLを指定する-keystore
オプションがあります。 キーストアは、デフォルトではユーザーのホーム・ディレクトリの.keystore
という名前のファイルに格納されます。ユーザーのホーム・ディレクトリは、user.home
システム・プロパティによって決まります。
LinuxおよびOS X: user.home
のデフォルトはユーザー・ホーム・ディレクトリです。
-keystore
オプションからの入力ストリームは、KeyStore.load
メソッドに渡されます。 URLとしてNONE
が指定されている場合は、nullのストリームがKeyStore.load
メソッドに渡されます。 NONE
は、KeyStore
クラスがファイル・ベースでない場合(ハードウェア・トークン・デバイス上にある場合など)に指定する必要があります。
キーストアの実装
java.security
パッケージで提供されるKeyStore
クラスには、キーストア内の情報に対するアクセスと変更を行うための明確に定義されたインタフェースが用意されています。 複数の異なる固定実装を生成できます(それぞれ特定のタイプのキーストアを実装)。
現在、キーストア実装(keytool
およびjarsigner
)を使用する2つのコマンドライン・ツールがあります。
デフォルトのキーストア実装はPKCS12
です。 これは、RSA PKCS12 Personal Information Exchange Syntax Standardに基づくクロス・プラットフォーム・キーストアです。 この規格は、ユーザーの秘密キー、証明書、その他の秘密を格納および転送することを主な目的としています。 Oracleが提供する組み込みの実装がもう1つあります。 キーストアを、独自のキーストア・タイプ(format)がJKS
という名前のファイルとして実装します。 この実装では、個々の秘密キーは個別のパスワードによって保護され、キーストア全体の整合性も(秘密キーとは別の)パスワードによって保護されます。
キーストアの実装はプロバイダベースです。つまり、KeyStore
クラスが提供するアプリケーション・インタフェースは、Service Provider Interface (SPI)という形で実装されています。 対応するKeystoreSpi
抽象クラス(これもjava.security
パッケージ内)があり、プロバイダが実装する必要があるService Provider Interfaceメソッドを定義しています。 ここで、プロバイダとは、Java Security APIによってアクセス可能なサービスのサブセットに対して、その固定実装を提供するパッケージまたはパッケージの集合のことです。 キーストアの実装を提供するために、クライアントはプロバイダを実装し、「Java暗号化アーキテクチャでプロバイダを実装する方法」の説明に従ってKeystoreSpi
サブクラスの実装を提供する必要があります。
アプリケーションでは、KeyStore
クラスのgetInstance
ファクトリ・メソッドを使用することで、様々なプロバイダから異なるタイプのキーストア実装を選択できます。 キーストアのタイプは、キーストア情報のストレージ形式とデータ形式を定義するとともに、キーストア内の秘密キーとキーストア自体の整合性を保護するために使われるアルゴリズムを定義します。 異なるタイプのキーストアの実装には、互換性はありません。
jarsigner
コマンドは、URLを使用して指定できる任意のロケーションからファイルベースのキーストアを読み取ることができます。 さらに、これらのコマンドは、WindowsではMSCAPI、すべてのプラットフォームではPKCS11によって提供されるキーストアなどのファイルベースではないキーストアも読み取ることができます。
jarsigner
およびkeytool
コマンドの場合は、-storetype
オプションを使用してコマンド行でキーストアのタイプを指定できます。
キーストア・タイプを明示的に指定しない場合、ツールは、セキュリティ・プロパティ・ファイルで指定されているkeystore.type
プロパティの値に基づいてキーストアの実装を選択します。 セキュリティ・プロパティ・ファイルはjava.security
と呼ばれ、JDKセキュリティ・プロパティ・ディレクトリjava.home/conf/security
にあります。
各ツールは、keystore.type
値を取得してから、インストールされているすべてのプロバイダを調べてそのタイプのキーストアを実装しているものを見つけます。 目的のプロバイダが見つかると、そのプロバイダからのキーストアの実装を使います。
KeyStore
クラスは、アプリケーションがkeystore.type
プロパティの値を取得できるようにするgetDefaultType
という名前の静的メソッドを定義します。 次のコード行は、keystore.type
プロパティで指定されたデフォルトのキーストア・タイプのインスタンスを生成します。
KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
デフォルトのキーストア・タイプはpkcs12
です。これは、RSA PKCS12 Personal Information Exchange Syntax Standardに基づくクロス・プラットフォーム・キーストアです。 これは、セキュリティ・プロパティ・ファイル内の次の行によって指定されています。
keystore.type=pkcs12
キーストア・タイプの指定では、大文字と小文字は区別されません。 たとえば、JKS
とjks
は同じです。
各ツールでデフォルト以外のキーストアの実装を使用するには、上の行を変更して別のキーストアのタイプを指定します。 たとえば、Oracleのjks
キーストア実装を使用する場合は、行を次のように変更します:
keystore.type=jks
サポートされるアルゴリズム
デフォルトでは、jarsigner
コマンドは、秘密キーのタイプおよびサイズに応じて、次のいずれかのアルゴリズムおよびブロック・ファイル拡張子を使用してJARファイルに署名します:
keyalg | keysize | デフォルトのsigalg | ブロック・ファイル拡張子 |
---|---|---|---|
DSA | 任意のサイズ | SHA256withDSA | .DSA |
RSA | < 624 | SHA256withRSA | .RSA |
<= 7680 | SHA384withRSA | ||
> 7680 | SHA512withRSA | ||
EC | < 512 | SHA384withECDSA | .EC |
>= 512 | SHA512withECDSA | ||
RSASSA-PSS | < 624 | RSASSA-PSS (SHA-256を使用) | .RSA |
<= 7680 | RSASSA-PSS (SHA-384を使用) | ||
> 7680 | RSASSA-PSS (SHA-512を使用) | ||
EdDSA | 255 | Ed25519 | .EC |
448 | Ed448 |
- RSASSA-PSSキーがパラメータでエンコードされている場合、jarsignerはシグネチャに同じパラメータを使用します。 それ以外の場合、jarsignerは、前述の表で指定されているキーのサイズによって決定されるパラメータを使用します。 たとえば、3072ビットRSASSA-PSSキーでは、シグネチャ・アルゴリズムとしてRSASSA-PSSを使用し、ハッシュおよびMGF1アルゴリズムとしてSHA-384を使用します。
これらのデフォルトのシグネチャ・アルゴリズムは、-sigalg
オプションを使用してオーバーライドできます。
jarsigner
コマンドは、jdk.jar.disabledAlgorithms
およびjdk.security.legacyAlgorithms
セキュリティ・プロパティを使用して、セキュリティ・リスクとみなされるアルゴリズムを決定します。 JARファイルが無効になっているアルゴリズムで署名されていると、署名されていないJARファイルとして扱われます。 JARファイルがレガシー・アルゴリズムで署名されている場合、今後の更新でレガシー・アルゴリズムが無効になることをユーザーに通知するために、情報警告付きで署名済として扱われます。 詳細な検証出力には、-J-Djava.security.debug=jar
を含めます。 jdk.jar.disabledAlgorithms
およびjdk.security.legacyAlgorithms
のセキュリティ・プロパティは、java.security
ファイル(JDK $JAVA_HOME/conf/security
ディレクトリにあります)で定義されます。
ノート:
初期状態のキーのサイズとシグネチャ・アルゴリズムの名前は、JDKの各リリースで定期的により高い値に更新されます。 古いリリースのJDKとの相互運用性が重要な場合は、それらのリリースでデフォルトがサポートされていることを確認するか、または-sigalg
オプションを使用して独自のリスクでデフォルト値をオーバーライドしてください。
署名付きJARファイル
jarsigner
コマンドを使用してJARファイルに署名を付けた場合、出力される署名付きJARファイルは入力JARファイルと同じですが、次の2つの追加ファイルがMETA-INFディレクトリに置かれる点が異なります。
.SF
拡張子の付いた署名ファイル.DSA
、.RSA
または.EC
拡張子の付いた署名ブロック・ファイル
これらの2つのファイルのベース・ファイル名は、-sigfile
オプションの値から取得されます。 たとえば、オプションが-sigfile MKSIGN
の場合、ファイルの名前はMKSIGN.SF
およびMKSIGN.RSA
になります。 このドキュメントでは、署名者が常にRSAキーを使用することを前提としています。
コマンドラインに-sigfile
オプションが表示されない場合、.SF
およびシグネチャ・ブロック・ファイルのベース・ファイル名は、コマンドラインで指定された別名の最初の8文字で、すべて大文字に変換されます。 別名が8文字未満の場合は、別名がそのまま使われます。 別名の中に、署名ファイル名に使用できない文字が含まれている場合は、該当する文字をアンダースコア(_)に置き換えてファイル名が作成されます。 有効な文字は、アルファベット、数字、アンダースコア、ハイフンです。
署名ファイル
署名ファイル(.SF
ファイル)は、jarsigner
コマンドで署名を付けたJARファイルに常に含まれるマニフェスト・ファイルと似ています。 JARファイルに含まれる各ソース・ファイルについて、.SF
ファイルには、マニフェスト・ファイル内など、次の2つの行があります:
ファイル名
ダイジェスト・アルゴリズム(SHA)の名前
SHAダイジェストの値
ノート:
ダイジェスト・アルゴリズム(SHA)の名前とSHAダイジェストの値は、同じ行に指定されています。
マニフェスト・ファイルでは、SHAダイジェストの値は、ソース・ファイルのバイナリ・データのダイジェスト(ハッシュ)です。 .SF
ファイルでは、指定されたソース・ファイルのダイジェスト値は、ソース・ファイルのマニフェスト・ファイル内の2行のハッシュです。
署名ファイルには、デフォルトでマニフェスト・ファイル全体のハッシュが格納されたヘッダーが含まれています。 ヘッダーには、マニフェスト・ヘッダーのハッシュも格納されています。 ヘッダーが存在すると、検証の最適化が有効になります。 「JARファイルの検証」を参照してください。
署名ブロック・ファイル
.SF
ファイルには署名が付けられ、署名は署名ブロック・ファイルに置かれます。 このファイルには、キーストアからの証明書または証明書チェーンも符号化された形で含まれています。証明書または証明書チェーンは、署名に使われた秘密キーに対応する公開キーを認証します。 ファイルの拡張子は、使用されるキー・アルゴリズムに応じて、.DSA
、.RSA
または.EC
になります。 「サポートされているアルゴリズム」の表を参照してください。
署名タイムスタンプ
次のオプションとともに使用されるjarsigner
コマンドは、JARファイルのシグネチャ時にシグネチャ・タイムスタンプを生成して格納します:
-tsa
url-tsacert
alias-tsapolicyid
policyid-tsadigestalg
algorithm
「jarsignerのオプション」を参照してください。
JARファイルの検証
JARファイルの検証が成功するのは、署名が有効であり、かつ署名の生成以後にJARファイル内のどのファイルも変更されていない場合です。 JARファイルの検証は、次のステップで行われます。
.SF
ファイルの署名を検証します。この検証では、各シグネチャ・ブロック・ファイルに格納されているシグネチャが、証明書(証明書チェーン)もシグネチャ・ブロック・ファイルに表示される公開キーに対応する秘密キーを使用して生成されたことを確認します。 また、シグネチャが対応するシグネチャ(
.SF
)ファイルの有効なシグネチャであるため、.SF
ファイルが改ざんされていないことも確認されます。.SF
ファイル内の各エントリのダイジェストをマニフェスト内の対応する各セクションと突き合わせて検証します。.SF
ファイルには、マニフェスト・ファイル全体のハッシュが格納されたヘッダーがデフォルトで含まれています。 このヘッダーが存在する場合は、ヘッダー内のハッシュがマニフェスト・ファイルのハッシュと一致するかどうかを検証できます。 一致する場合、検証は次のステップに進みます。一致しない場合は、効率的には劣る方法を使用した検証が必要になります。具体的には、
.SF
ファイル内の各ソース・ファイル情報セクションのハッシュが、マニフェスト・ファイル内の対応するセクションのハッシュと一致するかどうかが確認されます。 「署名ファイル」を参照してください。.SF
ファイル・ヘッダーに格納されているマニフェスト・ファイルのハッシュが、現在のマニフェスト・ファイルのハッシュと等しくない理由の1つは、ファイルが署名されたあとに新しく追加されたファイルのセクションが含まれている可能性があるためです。 たとえば、シグネチャ付きのJARファイル(jar
ツールの使用)に、すでにシグネチャと.SF
ファイルが含まれている1つ以上のファイルを追加したとします。 JARファイルが別の署名者によって再度署名された場合、マニフェスト・ファイルは(jarsigner
ツールによって、新しいファイルのセクションが追加されます)に変更され、新しい.SF
ファイルが作成されますが、元の.SF
ファイルは変更されません。 元のシグネチャの生成時、JARファイルにあったファイルがすべて変更されていない場合、検証は引き続き成功しているとみなされます。 これは、.SF
ファイルのヘッダー以外のセクションのハッシュが、マニフェスト・ファイルの対応するセクションのハッシュと一致するためです。JARファイル内のファイルのうち、
.SF
ファイル内にエントリを持つ各ファイルを読み込みます。 読込み中にファイルのダイジェストを計算し、結果をマニフェスト・セクション内の該当するファイルのダイジェストと比較します。 2つのダイジェストは同じでなければならず、そうでない場合は検証が失敗します。検証プロセスの途中でなんらかの重大な検証エラーが発生した場合、検証プロセスは中止され、セキュリティ例外がスローされます。
jarsigner
コマンドは、例外をキャッチして表示します。無効になっているアルゴリズムの使用状況を確認します。 「サポートされているアルゴリズム」を参照してください。
ノート:
シグネチャを信頼できるかどうかを判断するには、追加の警告 (-strict
オプションを指定した場合はエラー)と証明書 (-verbose
および-certs
オプションを指定)の内容を読み取る必要があります。
1つのJARファイルを対象とする複数の署名
1つのJARファイルに対してjarsigner
コマンドを複数回実行し、実行のたびに、異なるユーザーの別名を指定すれば、JARファイルに複数のユーザーの署名を付けることができます。
jarsigner myBundle.jar susan
jarsigner myBundle.jar kevin
JARファイルが複数回シグネチャされている場合、生成されるJARファイルには複数の.SF
およびシグネチャ・ブロック・ファイルがあり、シグネチャごとにペアになっています。 上の例で出力されるJARファイルには、次の名前を持つファイルが含まれます。
SUSAN.SF
SUSAN.RSA
KEVIN.SF
KEVIN.RSA
jarsignerのオプション
次の項では、jarsigner
のオプションについて説明します。 次の標準に注意してください。
すべてのオプション名の前にハイフン記号(-)が付いています。
オプションは任意の順序で指定できる。
イタリック体または下線付きの項目(オプションの値)は、実際に指定する必要がある値を表す。
-storepass
,-keypass
,-sigfile
,-sigalg
,-digestalg
,-signedjar
およびTSA関連のオプションが関係するのは、JARファイルに署名する場合のみです。署名付きJARファイルを検証する場合には関係ありません。-keystore
オプションは、JARファイルの署名と検証に関連します。 さらに、JARファイルの署名時および検証時には別名が指定されます。
-keystore
url-
キーストアの場所を示すURLを指定します。 このデフォルトは、ユーザーのホーム・ディレクトリ内のファイル
.keystore
です。ユーザーのホーム・ディレクトリは、user.home
システム・プロパティによって決まります。署名するときはキーストアが必要です。 デフォルトのキーストアが存在しない場合、あるいはデフォルト以外のキーストアを使用する場合は、キーストアを明示的に指定する必要があります。
検証時にキーストアは必要ありませんが、キーストアが指定されているか、デフォルトが存在し、
-verbose
オプションも指定されていた場合、JARファイルの検証に使用される証明書がそのキーストアに含まれているかどうかに関する追加情報が表示されます。-keystore
の引数には、URLの代わりにファイル名とパスを指定できます。この場合は、file: URLと同様に処理されます。たとえば、次に示す例は同等です。-keystore
filePathAndName-keystore file:
filePathAndName
Sun PKCS #11プロバイダが
java.security
セキュリティ・プロパティ・ファイル(JDK$JAVA_HOME/conf/security
ディレクトリにあります)で構成されている場合、keytool
およびjarsigner
ツールは、次のオプションを指定してPKCS #11トークンを操作できます:-keystore NONE -storetype PKCS11
たとえば、次のコマンドは、構成されたPKCS#11トークンの内容を一覧表示します。
keytool -keystore NONE -storetype PKCS11 -list
-storepass
[:env
|:file
] argument-
キーストアにアクセスするのに必要なパスワードを指定します。 このオプションが必要なのは、JARファイルに署名を付けるときだけです(JARファイルを検証するときは不要)。 その場合、コマンド行で
-storepass
オプションが指定されていない場合、ユーザーはパスワードの入力を求められます。修飾子
env
またはfile
が指定されていない場合、パスワードの値はargument
です。 それ以外の場合、パスワードは次のように取得されます。env
: argumentという名前の環境変数からパスワードを取得します。file
: argumentという名前のファイルからパスワードを取得します。
ノート:
テストを目的とする場合、またはセキュアなシステムを使用している場合以外は、コマンド行やスクリプトでパスワードを指定しないでください。
-storetype
storetype-
インスタンスを生成するキーストアのタイプを指定します。 デフォルトのキーストア・タイプは、セキュリティ・プロパティ・ファイル内の
keystore.type
プロパティの値で指定されたタイプです。この値は、java.security.KeyStore
のstaticgetDefaultType
メソッドで返されます。PKCS #11トークンのPINは、
-storepass
オプションでも指定できます。 何も指定されない場合は、keytool
およびjarsigner
コマンドでトークンPINの入力を求められます。 トークンに保護された認証パス(専用のPINパッドや生体読取り機など)がある場合、-protected
オプションを指定する必要がありますが、パスワード・オプションを指定する必要はありません。 -keypass
[:env
|:file
] argument-certchain
file-
コマンド行で指定された別名に対応するキーストア・エントリの秘密キーを保護するのに使うパスワードを指定します。
jarsigner
を使ってJARファイルに署名を付けるときは、パスワードが必要です。 コマンド行でパスワードが指定されておらず、必要なパスワードがストアのパスワードと異なる場合は、パスワードの入力を求められます。修飾子
env
またはfile
が指定されていない場合、パスワードの値はargument
です。 それ以外の場合、パスワードは次のように取得されます。env
: argumentという名前の環境変数からパスワードを取得します。file
: argumentという名前のファイルからパスワードを取得します。
ノート:
テストを目的とする場合、またはセキュアなシステムを使用している場合以外は、コマンド行やスクリプトでパスワードを指定しないでください。
-certchain
file- コマンド行で指定された別名で決まるキーストア・エントリの秘密キーに関連付けられた証明書チェーンが完全でない場合に使用される証明書チェーンを指定します。 このような状態になる可能性があるのは、キーストアがハードウェア・トークン上に格納されているが、そこには証明書チェーンの全体を保持するための十分な領域がない場合です。 このファイルは連結された一連のX.509証明書か、PKCS#7形式の単一データ・ブロックのいずれかであり、そのエンコーディング形式はバイナリ・エンコーディング形式、インターネットRFC 1421証明書エンコーディング規格で規定される印刷可能エンコーディング形式(Base64エンコーディングとも呼ばれる)のいずれかです。
-sigfile
file-
生成された
.SF
およびシグネチャ・ブロック・ファイルに使用するベース・ファイル名を指定します。 たとえば、ファイルがDUKESIGN
の場合、生成された.SF
およびシグネチャ・ブロック・ファイルはDUKESIGN.SF
およびDUKESIGN.RSA
という名前で、シグネチャ付きJARファイルのMETA-INF
ディレクトリに配置されます。fileに使用できる文字は
a-zA-Z0-9_-
です。 文字、数字、アンダースコアおよびハイフンのみを使用できます。.SF
およびシグネチャ・ブロック・ファイル名では、すべての小文字が大文字に変換されます。コマンドラインに
-sigfile
オプションが表示されない場合、.SF
およびシグネチャ・ブロック・ファイルのベース・ファイル名は、コマンドラインで指定された別名の最初の8文字で、すべて大文字に変換されます。 別名が8文字未満の場合は、別名がそのまま使われます。 別名の中に、署名ファイル名に無効な文字が含まれている場合は、該当する文字をアンダースコア(_)に置き換えてファイル名が作成されます。 -signedjar
file- 署名付きJARファイルの名前を指定します。
-digestalg
algorithm-
JARファイルのエントリをダイジェストする際に使用するメッセージ・ダイジェスト・アルゴリズムの名前を指定します。
標準のメッセージ・ダイジェスト・アルゴリズム名のリストは、Javaセキュリティ標準アルゴリズム名を参照してください。
このオプションを指定しない場合、
SHA-384
が使用されます。 指定されたアルゴリズムの実装を提供する静的にインストールされたプロバイダが存在する必要があります。そうでない場合、ユーザーは-addprovider
または-providerClass
オプションを使用してプロバイダを指定する必要があります。そうしないと、コマンドは成功しません。 -sigalg
algorithm-
JARファイルの署名に使用する署名アルゴリズムの名前を指定します。
このアルゴリズムは、JARファイルの署名に使用する秘密キーと互換性のあるものでなければなりません。 このオプションを指定しなかった場合、秘密キーと一致するデフォルトのアルゴリズムが使用されます(「サポートされるアルゴリズム」を参照)。 指定されたアルゴリズムの実装を提供する静的にインストールされたプロバイダが存在するか、または
-addprovider
または-providerClass
オプションを使用して指定する必要があります。そうでない場合、コマンドは成功しません。標準のメッセージ・ダイジェスト・アルゴリズム名のリストは、Javaセキュリティ標準アルゴリズム名を参照してください。
-verify
- 署名付きJARファイルを検証します。
-verbose
[:
サブ・オプション]-
-verbose
オプションがコマンド行に表示されているときは、表示される情報の量を判断するサブ・オプション付きでの署名または確認時に、jarsigner
は詳細モードを使用することを示しています。 これにより、jarsigner
はJAR署名または検証の進行状況に関する追加情報を出力します。 「サブオプション」には、all
、grouped
またはsummary
を指定できます。-certs
オプションも指定した場合、デフォルト・モード(またはサブオプションall
)では、エントリが処理されるたびにそのエントリが表示され、それに続いてJARファイルの各署名者の証明書情報が表示されます。-certs
と-verbose:grouped
サブオプションを指定した場合、同じ署名者情報を持つエントリがグループ化され、その証明書情報とともに表示されます。-certs
と-verbose:summary
サブオプションを指定した場合、同じ署名者情報を持つエントリがグループ化され、その証明書情報とともに表示されます。各エントリに関する詳細は、1つ(以上)のエントリとしてまとめて表示されます。 「署名付きJARファイルの検証の例」と「証明書情報による検証の例」を参照してください。
-certs
-
コマンド行で、
-verify
および-verbose
オプションとともに-certs
オプションが指定されている場合は、JARファイルの各署名者の証明書情報も出力されます。 この情報には、署名者公開キーを証明する証明書(シグネチャ・ブロック・ファイルに格納されます)のタイプの名前、および証明書がX.509証明書(java.security.cert.X509Certificate
のインスタンス)の場合は署名者の識別名が含まれます。キーストアの確認も行われます。 コマンド行でキーストアの値が指定されていない場合、デフォルトのキーストア・ファイルがあれば、検査されます。 署名者の公開キーの証明書がキーストア内のエントリと一致した場合は、その署名者のキーストア・エントリの別名がカッコ内に表示されます。
-revCheck
-
このオプションは、JARファイルの署名または検証時に証明書の失効チェックを有効にします。 コマンドラインで
-revCheck
オプションが指定されている場合、jarsigner
コマンドはOCSPレスポンスおよびCRLをフェッチするためのネットワーク接続を試行します。 このオプションを指定しないかぎり、失効チェックは有効になりません。 -tsa
url-
JARファイルの署名時にコマンド行に
-tsa http://example.tsa.url
が表示される場合、署名のタイムスタンプが生成されます。 URLhttp://example.tsa.url
は、TSA (Time Stamping Authority)の場所を特定し、-tsacert
オプションで見つかったURLをオーバーライドします。-tsa
オプションでは、TSA公開キー証明書がキーストアに存在する必要はありません。タイムスタンプを生成するために、
jarsigner
はRFC 3161で定義されているTSP (Time-Stamp Protocol)を使用してTSAと通信します。 成功すると、TSAから返されたタイムスタンプ・トークンが署名ブロック・ファイルの署名とともに保存されます。 -tsacert
alias-
JARファイルにシグネチャするときに、
-tsacert
aliasがコマンド行に表示されると、シグネチャ用のタイムスタンプが生成されます。 aliasは、キーストア内の有効なTSAの公開キー証明書を特定します。 エントリの証明書で、TSAの場所を特定するURLを含むSubject Information Access拡張機能が確認されます。-tsacert
オプションを使用する場合は、TSAの公開キー証明書がキーストアに配置されている必要があります。 -tsapolicyid
policyid-
TSAサーバーに送信されるポリシーIDを識別するオブジェクト識別子(OID)を指定します。 このオプションを指定しなかった場合、ポリシーIDは送信されず、TSAサーバーではデフォルトのポリシーIDが選択されます。
オブジェクト識別子は、ITU電気通信標準化部門(ITU-T)の規格であるX.696で定義されます。 一般に、これらの識別子は、
1.2.3.4
などの負ではない数字をピリオドで区切ったセットです。 -tsadigestalg
algorithm-
TSAサーバーに送信するメッセージ・インプリントを生成するために使用されるメッセージ・ダイジェスト・アルゴリズムを指定します。 このオプションを指定しない場合、SHA-384が使用されます。
「サポートされているアルゴリズム」を参照してください。
標準のメッセージ・ダイジェスト・アルゴリズム名のリストは、Javaセキュリティ標準アルゴリズム名を参照してください。
-internalsf
-
以前は、JARファイルのシグネチャ時に生成されたシグネチャ・ブロック・ファイルには、
.SF
ファイル(シグネチャ・ファイル)の完全にエンコードされたコピーも含まれていました。 この動作は変更されました。 出力JARファイルの全体的なサイズを小さくするために、シグネチャ・ブロック・ファイルにはデフォルトで.SF
ファイルのコピーが含まれなくなりました。 コマンド行で-internalsf
オプションを指定すると、以前と同じように動作します。 このオプションは、テスト時に役立ちます。 実際には、オーバーヘッドが大きいため、-internalsf
オプションを使用しないでください。 -sectionsonly
-
コマンドラインに
-sectionsonly
オプションが表示されている場合、JARファイルの署名時に生成される.SF
ファイル(シグネチャ・ファイル)には、マニフェスト・ファイル全体のハッシュを含むヘッダーは含まれません。 このファイルに含まれるのは、JARファイル内の各ソース・ファイルに関する情報およびハッシュのみです。 「署名ファイル」を参照してください。デフォルトでは、最適化を行うために、このヘッダーが追加されます。 ヘッダーが存在する場合は、JARファイルの検証時に、まずヘッダー内のハッシュがマニフェスト・ファイル全体のハッシュと一致するかどうかを確認できます。 一致する場合、検証が次のステップに進みます。 一致しない場合は、効率的には劣る方法を使用して検証を行います。具体的には、
.SF
ファイル内の各ソース・ファイル情報セクションのハッシュが、マニフェスト・ファイル内の対応するセクションのハッシュと一致するかどうかを確認します。 「JARファイルの検証」を参照してください。-sectionsonly
オプションは、主にテスト時に使用されます。 これを使用するとオーバーヘッドが増加するため、テスト以外では使用しないでください。 -protected
-
値には、
true
またはfalse
を指定できます。 専用PINリーダーなどの保護された認証パスを介してパスワードを指定する必要がある場合は、true
を指定します。 -providerName
providerName-
java.security
セキュリティ・プロパティ・ファイルに複数のプロバイダが構成された場合は、-providerName
オプションを使用して特定のプロバイダ・インスタンスを選択できます。 このオプションの引数は、プロバイダの名前です。Oracle PKCS #11プロバイダの場合、providerNameは
SunPKCS11-
TokenNameという形式です。TokenNameは、構成属性表で詳細に説明されているように、プロバイダ・インスタンスが構成されている名前サフィクスです。 たとえば、次のコマンドでは、名前接尾辞SmartCard
のPKCS #11
キーストア・プロバイダ・インスタンスの内容を一覧表示します。jarsigner -keystore NONE -storetype PKCS11 -providerName SunPKCS11-SmartCard -list
-addprovider
name [-providerArg
arg]-
名前(SunPKCS11など)でセキュリティ・プロバイダを追加する他、オプションの構成引数も追加します。 セキュリティ・プロバイダの値はモジュールで定義されているセキュリティ・プロバイダの名前です。
-providerArg ConfigFilePath
オプションとともに使用すると、keytool
およびjarsigner
ツールはプロバイダを動的にインストールし、トークン構成ファイルへのパスにConfigFilePath
を使用します。 次の例は、Oracle PKCS #11プロバイダがセキュリティ・プロパティ・ファイルで構成されていない場合にPKCS #11
キーストアを一覧表示するコマンドを示しています。jarsigner -keystore NONE -storetype PKCS11 -addprovider SunPKCS11 -providerArg /mydir1/mydir2/token.config
-providerClass
provider-class-name [-providerArg
arg]-
暗号サービス・プロバイダが
java.security
セキュリティ・プロパティ・ファイルにリストされていない場合に、暗号サービス・プロバイダ・マスター・クラス・ファイルの名前を指定するために使用されます。 完全修飾クラス名でセキュリティ・プロバイダを追加する他、オプションの構成引数も追加します。ノート:
PKCS11をロードする方法としては、モジュールの使用が推奨されます。
-addprovider
を参照してください。 -providerPath
classpath-
-providerClass
オプションで指定されたプロバイダのクラスパスを指定するために使用します。 複数のパスは、システム依存のパス区切り文字で区切る必要があります。 -J
javaoption-
指定されたjavaoption文字列をJavaインタプリタに直接渡します。
jarsigner
コマンドは、インタプリタに対するラッパーです。 このオプションには、空白を含めることはできません。 このオプションは、実行環境またはメモリー使用を調整する場合に便利です。 指定できるインタプリタ・オプションを一覧表示するには、コマンド行でjava -h
またはjava -X
と入力してください。 -strict
- 署名または検証処理中に、コマンドから警告メッセージが発行される場合があります。 このオプションを指定すると、このコマンドで見つかった重大な警告メッセージがツールの終了コードに反映されます。 「エラーと警告」を参照してください。
-conf
url-
事前構成済のオプション・ファイルを指定します。 詳細は、「keytoolのドキュメント」を参照してください。 サポートされているプロパティ・キーは、すべてのアクション用の"jarsigner.all"、署名用の"jarsigner.sign"および検証用の"jarsigner.verify"です。JARファイル名や別名などの
jarsigner
引数は、このファイルに設定できません。 -version
- プログラムのバージョンを印刷します。
非推奨のオプション
次のjarsigner
オプションは、JDK 9では非推奨であり、将来のJDKリリースで削除される可能性があります。
-altsigner
class-
このオプションには、代替署名メカニズムを指定します。 完全修飾クラス名は、
com.sun.jarsigner.ContentSigner
抽象クラスを拡張するクラス・ファイルを識別します。 このクラス・ファイルへのパスは、-altsignerpath
オプションによって定義されます。-altsigner
オプションが使用されている場合、jarsigner
コマンドは指定されたクラスが提供する署名メカニズムを使用します。 それ以外の場合、jarsigner
コマンドはデフォルトの署名メカニズムを使用します。たとえば、
com.sun.sun.jarsigner.AuthSigner
というクラスによって提供される署名メカニズムを使用するには、jarsigner
オプション-altsigner com.sun.jarsigner.AuthSigner
を使用します。 -altsignerpath
classpathlist-
クラス・ファイルおよびそれに依存するJARファイルへのパスを指定します。 クラス・ファイル名は、
-altsigner
オプションで指定します。 クラス・ファイルがJARファイル内にある場合、このオプションではそのJARファイルへのパスが指定されます。絶対パスまたは現在のディレクトリからの相対パスを指定できます。 classpathlistに複数のパスまたはJARファイルが含まれている場合は、次のもので区切る必要があります:
LinuxおよびmacOS上のコロン(
:
)セミコロン(
;
) on Windows
目的のクラスがすでに検索パス内にある場合は、このオプションは不要です。
次の例では、クラス・ファイルを含むJARファイルへのパスを指定する方法を示します。 JARファイル名が含まれています。
-altsignerpath /home/user/lib/authsigner.jar
次の例では、クラス・ファイルを含むJARファイルへのパスを指定する方法を示します。 JARファイル名は省略されています。
-altsignerpath /home/user/classes/com/sun/tools/jarsigner/
エラーおよび警告
署名または検証処理中に、jarsigner
コマンドから様々なエラーや警告が発行される場合があります。
エラーが発生した場合、jarsigner
コマンドはコード1で終了します。 エラーは発生していないが、1つ以上の重大な警告が発生した場合は、-strict
オプションが指定されていなければ、jarsigner
コマンドはコード0で終了し、-strict
が指定されていれば、警告コードのOR値で終了します。 情報警告のみが発生した場合や警告がまったく発生しない場合、コマンドは常にコード0で終了します。
たとえば、エントリの署名に使用される証明書が期限切れで、ファイルの署名を許可しないKeyUsage拡張子がある場合、-strict
オプションを指定すると、jarsigner
コマンドはコード12 (=4+8)で終了します。
ノート: LinuxおよびOS Xでは0から255の値のみが有効であるため、終了コードは再利用されます。
次のセクションでは、jarsigner
コマンドが発行できるエラーおよび警告の名前、コードおよび説明を示します。
失敗
jarsigner
コマンドが失敗する理由には、コマンドライン解析エラー(ただし、)、JARファイルに署名するキー・ペアが見つからない、または署名付きJARの検証が失敗するなどがあります。
- failure
- コード 1 署名または検証に失敗しました。
重大な警告
ノート:
-strict
オプションを指定すると、重大な警告がエラーとして報告されます。
jarsigner
コマンドで重大な警告が発行される原因として、JARファイルの署名に使用される証明書でエラーが発生したことや、署名付きJARファイルでその他の問題が発生したことが考えられます。
- hasExpiredCert
- コード4。 このJARには、署名者証明書が失効したエントリが含まれています。
- hasExpiredTsaCert
- コード4。 タイムスタンプは期限切れになりました。
- notYetValidCert
- コード4。 このJARには、署名者の証明書がまだ有効になっていないエントリが含まれています。
- chainNotValidated
- コード4。 このJARには、証明書チェーンが検証されていないエントリが含まれています。
- tsaChainNotValidated
- コード64。 タイムスタンプが無効です。
- signerSelfSigned
- コード4。 このJARには、署名者証明書が自己署名されたエントリが含まれています。
- disabledAlg
- コード4。 使用されるアルゴリズムはセキュリティ・リスクとみなされ、無効になります。
- badKeyUsage
- コード8。 このJARには、署名者証明書KeyUsage拡張でコード署名が許可されていないエントリが含まれます。
- badExtendedKeyUsage
- コード8。 このJARには、署名者証明書ExtendedKeyUsage拡張でコード署名が許可されていないエントリが含まれます。
- badNetscapeCertType
- コード8。 このJARには、署名者証明書NetscapeCertType拡張でコード署名が許可されていないエントリが含まれます。
- hasUnsignedEntry
- コード16。 このJARには、整合性チェックが行われていない未署名のエントリが含まれています。
- notSignedByAlias
- コード32。 このJARには、指定した別名(複数可)で署名されていない署名済エントリが含まれています。
- aliasNotInStore
- コード32。 このJARには、このキーストア内の別名で署名されていない署名済エントリが含まれています。
- tsaChainNotValidated
- コード64。 このJARには、TSA証明書チェーンが無効になっているエントリが含まれています。
情報警告
情報警告には、エラーではないが、不適切と見なされるものが含まれます。 コードはありません。
- extraAttributesDetected
-
POSIXファイルのアクセス権またはsymlink属性(あるいはその両方)は、JARファイルの署名または検証中に検出されます。
jarsigner
ツールは、これらの属性を新しくシグネチャされたファイルに保持しますが、これらの属性がシグネチャされておらず、シグネチャによって保護されていないことを警告します。 - hasExpiringCert
- このJARには、署名者証明書が6か月以内に失効するエントリが含まれています。
- hasExpiringTsaCert
-
タイムスタンプは、1年以内に
YYYY-MM-DD
に期限切れになります。 - legacyAlg
- 使用されるアルゴリズムはセキュリティ・リスクとみなされますが、無効にはなりません。
- noTimestamp
-
このJARには、タイムスタンプがない署名が含まれています。 タイムスタンプがないと、署名者の証明書の有効期限日(
YYYY-MM-DD
)後や今後の失効日後に、このJARファイルをユーザーが検証できない可能性があります。
JARファイルへの署名の例
次のコマンドを使用して、working
ディレクトリのmystore
というキーストアでキーストア別名がjane
であるユーザーの秘密キーでbundle.jar
に署名し、署名付きJARファイルにsbundle.jar
という名前を付けます:
jarsigner -keystore /working/mystore -storepass
keystore_password-keypass
private_key_password-signedjar sbundle.jar bundle.jar jane
前のコマンドでは-sigfile
が指定されていないため、シグネチャ付きJARファイルに配置される生成済の.SF
およびシグネチャ・ブロック・ファイルには、別名に基づいたデフォルト名があります。 これらは、JANE.SF
およびJANE.RSA
という名前です。
ストアのパスワードおよび秘密キーのパスワードを求めるようにする場合は、上のコマンドを次のように短縮します。
jarsigner -keystore /working/mystore -signedjar sbundle.jar bundle.jar jane
keystore
がデフォルトのkeystore
(ホーム・ディレクトリ内の.keystore
)である場合、次のようにkeystore
を指定する必要はありません:
jarsigner -signedjar sbundle.jar bundle.jar jane
署名付きJARファイルで入力JARファイル(bundle.jar
)を上書きする場合は、次のように-signedjar
オプションを指定する必要はありません:
jarsigner bundle.jar jane
署名付きJARファイルの検証の例
署名付きJARファイルを検証して、署名が有効であり、JARファイルが改ざんされていないことを確認するには、次のようなコマンドを使用します。
jarsigner -verify ButtonDemo.jar
検証に成功すると、jar verified
と表示されます。 そうでない場合は、エラー・メッセージが表示されます。 -verbose
オプションを使用すると、より多くの情報を取得できます。 -verbose
オプションを指定したjarsigner
の使用例を次に示します。
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 "CN="Oracle America, Inc.", OU=Software Engineering, O="Oracle America, Inc.", L=Redwood City, ST=California, C=US"
Digest algorithm: SHA-256
Signature algorithm: SHA256withRSA, 2048-bit key
Timestamped by "CN=Symantec Time Stamping Services Signer - G4, O=Symantec Corporation, C=US" 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.
証明書情報による検証の例
-verify
および-verbose
オプションとともに-certs
オプションが指定されている場合は、JARファイルの各署名者の証明書情報も出力されます。 この情報には、証明書のタイプ、署名者の識別名情報(X.509証明書の場合)、およびカッコで囲まれた署名者のキーストア別名(JARファイルの公開キーの証明書がキーストア・エントリの公開キーの証明書と一致する場合)が含まれます。たとえば:
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="Oracle America, Inc.", OU=Software Engineering, O="Oracle America, Inc.", 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="(c) 2006 VeriSign, Inc. - For authorized use only", OU=VeriSign Trust Network, O="VeriSign, Inc.", 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="Oracle America, Inc.", OU=Software Engineering, O="Oracle America, Inc.", 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="(c) 2006 VeriSign, Inc. - For authorized use only", OU=VeriSign Trust Network, O="VeriSign, Inc.", 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:07:16 EDT 2017 components/ButtonDemo.class
...
smk 2346 Tue Sep 12 20:07:16 EDT 2017 components/ButtonDemo.jnlp
...
smk 172 Tue Sep 12 20:07:16 EDT 2017 components/images/left.gif
...
smk 235 Tue Sep 12 20:07:16 EDT 2017 components/images/middle.gif
...
smk 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 "CN="Oracle America, Inc.", OU=Software Engineering, O="Oracle America, Inc.", L=Redwood City, ST=California, C=US"
Digest algorithm: SHA-256
Signature algorithm: SHA256withRSA, 2048-bit key
Timestamped by "CN=Symantec Time Stamping Services Signer - G4, O=Symantec Corporation, C=US" 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.
署名者の証明書がX.509証明書でない場合は、識別名情報は表示されません。 その場合には、証明書のタイプと別名だけが表示されます。 たとえば、証明書がPGP証明書で、別名がbob
の場合は、PGP, (bob)
と表示されます。