事象
(追記) 2023年5月31日(水) 日本時間より、CSRを添付して申請したコードサイニング証明書オーダに対する証明書の発行を終了いたします。 詳細はEVコードサイニング証明書、およびコードサイニング証明書の変更、 およびトークンの取り扱いについて(2023年5月) を参照ください。 |
コードサイニング証明書for Javaを取得しました。
jarsignerでの署名方法を教えてください。
必ずお読みください
|
はじめに
•JAVA用コードサイニング証明書の申請にはCSRの準備が必要です。
CSR生成やインストール、署名作業はJDKのKeytoolを利用しますので、
JDKがインストールされていない場合は以下からダウンロードの上インストールします。
Java SE Downloads
•この手順では以下の名称を使っています。
キーストア名 | keystore.jks |
エイリアス名 | code_cert |
キーストアパスワード | spassword |
秘密鍵とCSRの生成
1. keytool を実行し、コマンドラインで以下の各項目を入力します。
#keytool -genkey -alias <エイリアス名> -keyalg RSA -keysize <鍵サイズ> -keystore <キーストア名> -storepass <キーストアパスワード>
(実行例)鍵アルゴリズムRSA、鍵サイズ 3072bitで作成します。
# keytool -genkey -alias code_cert -keyalg RSA -keysize 3072 -keystore keystore.jks -storepass spassword |
2. 続いて、ディスティングイッシュネーム情報を入力していきます。
※CertCentralでは認証情報を元に証明書を発行するため、この情報が必ずしも証明書の情報に反映されるわけではありません。
(実行例)
姓名は何ですか。 [Unknown]: Sample K.K. 組織単位名は何ですか。 [Unknown]: Tech Support 組織名は何ですか。 [Unknown]: Sample K.K. 都市名または地域名は何ですか。 [Unknown]: Chuo-ku 都道府県名または州名は何ですか。 [Unknown]: Tokyo この単位に該当する2文字の国コードは何ですか。 [Unknown]: JP CN=Sample K.K., OU=Tech Support, O=Sample K.K., L=Chuo-ku, ST=Tokyo, C=JPでよろしいですか。 [いいえ]: y 90日間有効な2,048ビットのRSAのキー・ペアと自己署名型証明書(SHA256withRSA)を生成しています ディレクトリ名: CN=Sample K.K., OU=Tech Support, O=Sample K.K., L=Chuo-ku, ST=Tokyo, C=JP |
3. CSRファイルを作成するため、以下のコマンドを入力します。
#keytool -certreq -alias <コードサイニング証明書for Javaエイリアス名> -file <CSRファイル名> -keystore <キーストア名>
(実行例)
# keytool -certreq -alias code_cert -file csr.txt -keystore keystore.jks キーストアのパスワードを入力してください: spassword |
上記の例の場合、csr.txt というCSRファイルが作成されます。
申請時にこのCSRファイルアップロードするか、メモ帳などで開いてテキストを張り付けて申請します。
証明書のインストール
CSRを作成したキーストアに、発行された証明書をインストールする必要があります。
1. 発行通知メールは、申請者に通知されますのでご確認ください。メールに添付されているp7bファイルを保存するか、CertCentralからp7bファイルをダウンロードします。
※p7bファイルには証明書と中間CA証明書が含まれます。
2. コードサイニング証明書のインストール
保存したp7bファイルをキーストアにインポートします。
(実行例)
# keytool -import -trustcacerts -alias code_cert -keystore keystore.jks -file Sample_K_K.p7b キーストアのパスワードを入力してください: spassword |
3. インストール結果の確認
以下のコマンドでKeyStoreにインストールされた内容を確認できます。
(実行例)
# keytool -list -v -keystore keystore.jks |
4. キーペアファイルのバックアップ
ハードウェア障害などに備え、Keystoreファイルをバックアップしておきます。
デフォルトではユーザのホームディレクトリに作成されますが、お客様の環境により異なります。
署名方法
1. 対象となるJavaアプレットが署名されていないことを確認します。
JARファイル(例 sample.jar)があるフォルダーで以下のコマンドを実行します。
(実行例)
jarsigner -verify -verbose -certs sample.jar <省略> jarは署名されていません。 |
2. ファイルへタイムスタンプ付きで署名します。
(実行例)
jarsigner -tsa http://timestamp.digicert.com -keystore keystore.jks sample.jar code_cert |
3. 対象となるJavaアプレットに正しく署名されたことを確認
(実行例)
jarsigner -verify -verbose -certs sample.jar <省略> - 署名者: "CN=Sample K. K., O=Sample K. K., L=Chuo-ku, ST=Tokyo, C=JP" ダイジェスト・アルゴリズム: SHA-256 署名アルゴリズム: SHA256withRSA、2048ビット・キー タイムスタンプ付加者: "CN=DigiCert Timestamp 2021, O="DigiCert, Inc.", C=US" 日時: 水 1月 27 05:48:03 UTC 2021 タイムスタンプのダイジェスト・アルゴリズム: SHA-256 タイムスタンプの署名アルゴリズム: SHA256withRSA、2048ビット・キー jarが検証されました。 署名者の証明書は2022-02-02に期限切れになります。 タイムスタンプは2031-01-06に期限切れになります。 |
USBトークンを利用した署名については以下を参照ください(なお、USBトークン名称が日本語の場合エラーとなりますので証明書の組織名=コモンネームを日本語にした場合、英語表記で再度申請してください)。
Signing Java .jar Files with a Hardware Token in Windows
https://www.digicert.com/kb/code-signing/java-ev-code-signing-certificate.htm
JDKに関する詳しい使い方などは、オラクル社のWebサイトを確認ください。