[USBトークンを使用する場合]Object signing用 Javaコードへの署名方法

  1. GMOグローバルサインサポート
  2. コードサイニング証明書サポート情報
  3. コードサイニング証明書設定
  4. [USBトークンを使用する場合]Object signing用 Javaコードへの署名方法
最終更新:2024年06月06日

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

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

 

動画でも署名方法についてご案内しております。

コードサイニング証明書(EVコードサイニング証明書)をご利用の場合は、以下のタイムスタンプをご利用いただくようご案内しております。

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

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

※JDK7以前のバージョンで署名を行う場合、64bit版のWindowsをご利用の場合であっても、32bitのJDKを使用する必要がございます。

  1. コマンドプロンプトを実行します。

  2. JAVA JDKのbinフォルダに移動します。
    例えば以下のようなディレクトリとなりますが、環境に応じて適宜読み替えてください。

    cd C:¥Program Files¥Java¥jdk1.8.0_111¥bin
  3. トークンのslotを確認するため、以下のコマンドを実行します。

    keytool -keystore NONE -storetype PKCS11 -list -J-Djava.security.debug=sunpkcs11
  4. JDKがUSBトークンにアクセスできるようにするために、設定ファイル「eToken.cfg」を作成します。設定ファイルには下記の3行を記載します。
    ※文字コードは「ANSI」をご使用ください。
    ※グローバルサインより送付される、基準に準拠したUSBトークンの利用を前提としています。

    name=eToken
    library=c:¥Windows¥System32¥eTPKCS11.dll
    slot=0~7

    コマンド実行結果(一部抜粋)

    keytool -keystore NONE -storetype PKCS11 -list -J-Djava.security.debug=sunpkcs11
    sunpkcs11: SunPKCS11 loading C:/Program Files/Java/jdk-19/bin/eToken.cfg
    sunpkcs11: Initializing PKCS#11 library C:/Windows/System32/eTPKCS11.dll
    Information for provider SunPKCS11-eToken
    Library info:
    cryptokiVersion: 2.20
    manufacturerID: SafeNet, Inc.
    flags: 0
    libraryDescription: SafeNet eToken PKCS#11
    libraryVersion: 10.08
    All slots: 0, 1, 2, 3, 4, 5, 6, 7
    Slots with tokens: 3
    Slot info for slot 3:

    ※「Slots with tokens:」は「0」がデフォルトですが、ご利用の端末によっては「0」以外の値になることがあります。

    上のコマンドで得られた「Slots with tokens:」の値を使って、作成済みのetoken.cfgファイルに「Slot」情報を追加します。

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

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

    keytool -list -keystore NONE -storetype PKCS11 -providerclass sun.security.pkcs11.SunPKCS11 -providerArg eToken.cfg
  7. 次の署名コマンドで使用するため、秘密鍵のエイリアス(下記例では、le-86a6d828-7504-4895-a85e-bc9d56187f0c)をコピーしておきます。

  8. .jarファイルに署名します。
    JAVA SDKのbinディレクトリ(C:\Program Files\Java\jdk1.8.0_111\bin)にて、以下の署名コマンドを実行します。(赤字の部分は適宜読み替えてください。)

    署名コマンド例
    jarsigner -tsa タイムスタンプのURL -verbose -keystore NONE -storetype PKCS11 -providerClass sun.security.pkcs11.SunPKCS11 -providerArg ./eToken.cfg sample.jar "le-86a6d828-7504-4895-a85e-bc9d56187f0c"

    タイムスタンプURLについて(R6ルート用)

    コードサイニング証明書(EVコードサイニング証明書)をご利用の場合は、別途タイムスタンプを付与可能です。タイムスタンプの詳細につきましては、下記の表をご参照ください。

    タイムスタンプURLhttp://timestamp.globalsign.com/tsa/r6advanced1
    ルート搭載環境
    (署名検証可能環境)
    JDK12以降
    有効期限署名時から最低10年以上
    署名ハッシュアルゴリズムSHA384
  9. 以上で署名は完了です。正常に署名が完了すると以下のようになります。

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

jarsigner -verify -verbose -certs FileUploadApplet.jar

お気軽にお問い合わせください

音声ガイダンスが流れましたら、お問合わせの内容により以下の番号をプッシュしてください。

  1. 証明書のお申し込み、更新及びパスワードのお問い合わせ
  2. インストールなどの技術的なお問い合わせ
  3. 審査及び進捗確認に関するお問い合わせ
  4. お支払い、経理書類に関するお問い合わせ
  5. その他のお問い合わせ(5を押した上で、以下の番号をお選びください。)
    1. パートナー契約に関するお問い合わせ
    2. 採用に関するお問い合わせ
    3. 総務へのご連絡