[EVコードサイニング証明書] Mac用 Javaコードへの署名方法

最終更新:2024年11月29日

こちらではOracle JDKのjarsignerを利用して、Javaコードへ署名を行う手順をご紹介いたします。

※弊社では以下の手順にて動作検証をおこなった際の一例をご紹介しており、動作を保証するものではございません。本手順について内容の変更等や誤りがあった場合、弊社では一切の責任を負いかねることを予めご了承ください。詳細は各ツールのドキュメント等をご参照ください。
※アプリケーション提供元にてサポートが終了している場合、正常に動作しない可能性があります。

署名ハッシュアルゴリズムSHA256のコードサイニング証明書をご利用の場合は、以下のタイムスタンプをご利用いただくようご案内しております。

R3ルート用 http://timestamp.globalsign.com/tsa/advanced
R6ルート用 http://timestamp.globalsign.com/tsa/r6advanced1

こちらのタイムスタンプにて署名を行うためには、JDK(jarsigner)12以降のバージョンが必要となります。
上記バージョン未満のJDK(jarsigner)をご利用の場合は、Oracle社ページより最新のJDKをご用意ください。

JDKがUSBトークンにアクセスできるようにするために、設定ファイル「eToken.cfg」を作成します。設定ファイルには下記の3行を記載します。
※グローバルサインより送付される、基準に準拠したUSBトークンの利用を前提としています。

name=eToken
library=/user/local/lib/libeTPkcs11.dylib
slot=0

設定ファイル「eToken.cfg」をJDKのbinフォルダに保存します。
例えば以下のようなパスとなりますが、環境に応じて適宜読み替えてください。

/Library/Java/JavaVirtualMachines/jdk-11.0.18.jdk/Contents/Home/bin

ターミナルを実行します。

JAVA JDKのbinフォルダに移動します。

cd /Library/Java/JavaVirtualMachines/jdk-11.0.18.jdk/Contents/Home/bin

署名にトークンを使用するためには、秘密鍵のエイリアスを見つける必要があります。エイリアスを特定することで、署名時に適切な証明書を参照することができます。
binフォルダから、以下のコマンドを実行します。

keytool -list -keystore NONE -storetype PKCS11 -providerclass sun.security.pkcs11.SunPKCS11 -providerArg eToken.cfg

次の署名コマンドで使用するため、秘密鍵のエイリアスをコピーしておきます。

.jarファイルに署名します。
JAVA SDKのbinパス(/Library/Java/JavaVirtualMachines/jdk-11.0.18.jdk/Contents/Home/bin)にて、以下の署名コマンドを実行します。(赤字の部分は適宜読み替えてください。)

署名コマンド例
jarsigner -tsa タイムスタンプのURL -verbose -keystore NONE -storetype PKCS11 -providerClass sun.security.pkcs11.SunPKCS11 -providerArg ./eToken.cfg sample.jar "エイリアス"

以上で署名は完了です。正常に署名が完了すると以下のようになります。

署名を検証する場合は、以下のコマンドを実行します。

jarsigner -verify -verbose -certs FileUploadApplet.jar