比較バージョン

キー

  • この行は追加されました。
  • この行は削除されました。
  • 書式設定が変更されました。
コメント: バージョン 25 から復元

アンカー
_GoBack
_GoBack

改版履歴

 

 

 

版数

日付

内容

担当

V.1.0

2015/4/1

初版

NII

V.1.1

2017/2/28

JKSコマンドの修正
署名確認作業の補足追加

NII

V2V.2.0

2018/2/26

キーストアファイルの形式をJKSからPKCS12に変更、動作環境の変更に伴う修正

NII

V.2.12018/7/9タイムスタンプ利用手順の追加NII
V.2.22020/6/4中間CA証明書のURLとリポジトリのURLの変更NII
V.2.32020/12/22中間CA証明書のURL変更NII
V.2.42020/12/24鍵長の変更NII
V.2.52021/5/31コード署名用証明書の中間CA証明書を修正

NII

V.2.62023/5/19コード署名用証明書のCSR作成に関する手順を削除NII


目次
1.コード署名用証明書の利用 コード署名用証明書の利用 
1-1. 前提条件 前提条件 
1-2. JKS (Javaキーストア) ファイルの作成 ファイルの作成 
1-2-1. 事前準備 事前準備 
1-2-2. PKCS#12ファイルの作成 PKCS#12ファイルの作成 
1-2-3. JKS (Javaキーストア) ファイルの作成 ファイルの作成 
1-3. 署名 署名 
1-4. コード署名確認作業

...

  

...

アンカー
_

...

Toc505800952
_Toc505800952
1.

...

 コード署名用証明書の利用

...

アンカー
_Toc505800953
_Toc505800953
1-1. 前提条件

OpenSSLコード署名用証明書を使用する場合の前提条件について記載します。適宜、コード署名用証明書をインストールする利用管理者様の環境により、読み替えをお願いします。
(本マニュアルではJava SE Development Kit(以下JDKと呼ぶ) 8u161での実行例を記載しております。) OpenSSLコード署名用証明書を使用する場合の前提条件について記載します。適時、コード署名用証明書をインストールする利用管理者様の環境により、読み替えをお願いします。
(本マニュアルではJDK 8u161での実行例を記載しております。)
コマンドプロンプト上で実行するコマンドは、「 > 」にて示しています。

前提条件

  1. OpenSSLがインストールされていること
  2. Java SE Development Kit(以下JDKと呼ぶ)がインストールされていること
  3. JDKがインストールされていること


  CSR作成時は既存の鍵ペアは使わずに、必ず新たにCSR作成用に生成した鍵ペアを利用してください。更新時も同様に、鍵ペアおよびCSRを新たに作成してください。鍵ペアの鍵長は2048bitにしてください。
重要:  PKCS#12形式でコード署名用証明書を取得している場合は、1-3.署名より署名を行ってください。

アンカー
_

...

Toc505800954
_Toc505800954
1-2. JKS (Javaキーストア) ファイルの作成

本章ではJKS(Javaキーストア)ファイルの作成方法について記述します。

アンカー

...

_

...

Toc505800955
_Toc505800955
1-2-1. 事前準備

事前準備として、「ルートCA証明書」、「中間CA証明書」、「コード署名用証明書」を取得してください。

事前準備

  1. 「証明書の申請から取得まで」で受領したコード署名用証明書を任意の名前で任意の場所に保存してください。

  2. 「ルートCA証明書」と「中間CA証明書」を準備し、この2つを連結させます。下記URLより、リポジトリへアクセスしてください。
    国立情報学研究所 オープンドメイン認証局
    「中間CA証明書」を下記リポジトリより取得してください。
    セコムパスポート for Member 2.0 PUB リポジトリ:
    https://repo1.secomtrust.net/sppcaspcpp/nii/odca3pfm20pub/index.html


    2021年5月31日00:00以前の発行証明書が対象】
    リポジトリ内にある「証明書の種類」より中間CA証明書を取得してください。

    SHA-256 コード署名用証明書の場合:

    https://repo1.secomtrust.net/

    sppca

    spcpp/

    nii

    pfm20pub/

    odca3

    codecag2/

    nii-odcacssha2

    CODECAG2.cer

    次に、「ルートCA証明書」を下記リポジトより取得してください。

    SHA-256

    Security Communication RootCA2 リポジトリ:
    https://repository.secomtrust.net/SC-Root2/index.html

    SHA-256


    Security Communication RootCA2 証明書:
    https://repository.secomtrust.net/SC-Root2/SCRoot2ca.cer

...


  1. 2021年5月31日00:00以後の発行証明書が対象】

    リポジトリ内にある「証明書の種類」より中間CA証明書を取得してください。

    https://repo1.secomtrust.net/spcpp/pfm20pub/codecag2/CODECAG2SCROOTCA3.cer

    次に、「ルートCA証明書」を下記リポジトより取得してください。
    Security Communication RootCA3 リポジトリ:
    https://repository.secomtrust.net/SC-Root3/index.html

    Security Communication RootCA3 証明書:
    https://repository.secomtrust.net/SC-Root3/SCRoot3ca.cer

...

アンカー
_Toc505800956
_Toc505800956
1-2-2. PKCS#12ファイルの作成

本項目ではWindowsOS上で任意のフォルダにPKCS#12ファイルを生成する方法を記述します。
以下は、例としてWindows10上での作成方法を記載します。

PKCS#12ファイルの作成

  1. 任意のフォルダ(ここではC:\temp\test2018とします)にて以下の3つのファイルを用意してください。
    1. 項目「鍵ペアの生成」にて生成した鍵ペアのファイル(servername.key)
    2. 項目「証明書の申請から取得まで」にて取得したコード署名用証明書(ここではtest.cerとします)
    3. 項目「1-2-1事前準備」にて用意した「ルートCA証明書」と 「中間CA証明書」を連結させたファイル(ここではchain.cerとします)
    4. 項目「1-2-1事前準備」にて用意した「ルートCA証明書」ファイル(SCRoot2CA.cer)
      Image Modified

  2. CAfile に指定する証明書をDER形式からPEM形式に変換します。

    ・Security Communication RootCA2の場合
    openssl x509 -inform der -in SCRoot2ca.cer -outform pem -out SCRoot2ca.cer
     
・中間CA証明書SHA-256の場合
  1. ・中間CA証明書(2021年5月31日00:00以前の発行証明書が対象)の場合
    openssl x509 -inform der -in
nii-odcacssha2
  1. CODECAG2.cer -outform pem -out
nii-odcacssha2
  1. CODECAG2.cer
コマンドプロンプト上にて上記で取得した「ルートCA証明書」と「中間CA証明書」を下記のコマンドに 
より、連結させてください。中間CA証明書の下部にルートCA証明書が併記されるファイルとなります。
  1. コマンドプロンプト上にて上記で取得した「ルートCA証明書」と「中間CA証明書」を以下のコマンドにより、連結させてください。中間CA証明書の下部にルートCA証明書が併記されるファイルとなります。

    > type (中間CA証明書のパス) (ルートCA証明書のパス) > (出力するファイル名)

  2. 連結したファイルがPEM形式になっていることを確認してください。 
    例)PEM形式の証明書

    ----BEGIN CERTIFICATE----
    MIIEcTCCA1mgAwIBAgIIasWHLdnQB2owDQYJKoZIhvcNAQELBQAwbzELMAkGA1UE
    BhMCSlAxFDASBgNVBAcMC0FjYWRlbWUtb3BzMSowKAYDVQQKDCFOYXRpb25hbCBJ
    bnN0aXR1dGUgb2YgSW5mb3JtYXRpY3MxHjAcBgNVBAMMFU5JSSBPcGVyYXRpbmcg
    Q0EgLSBHMjAeFw0xNTAzMTIwMTA4MDJaFw0xNzA0MTEwMTA4MDJaMHAxCzAJBgNV
    (中略)
    LmeW0e/xkkxwdmKv5y5txLlFcp53AZl/vjn3BHp42PFkkTISEmAUiCtQ2A25QDRR
    RG33laC8E8Tl/SnOA8h95XQtGWm47PrIjXyYtIe0rFousbpIoW8MZw4gDXVQ3485
    XEftqwwIMcLNxttJ6i6f9XVyPMRhHy9rdDPseHiXayxcBxJMuw==
    ----END CERTIFICATE----

  3. コマンドプロンプトを開き、ファイルのある任意のフォルダ(ここではC:\temp\test2018)へ移動します。

    > set Path=(OpenSSLインストールディレクトリ)\bin
    ※OpenSSLインストールディレクトリをプログラムを探すディレクトリに指定します
    > cd (作業ディレクトリ)

作業ディレクトリ
  1. ←作業ディレクトリ

移動後、下記のコマンドを入力しPKCS#12ファイルを生成してください。
  1. 移動後、以下のコマンドを実行しPKCS#12ファイルを生成してください。

    > openssl pkcs12 -export -chain -inkey (鍵ペアのファイル名) -CAfile (ルートCA証明書と中間CA証明書を連結させたファイル) -in (コード署名用の証明書ファイル名) -out (PKCS#12形式で出力するファイル名)

–name
  1. -name (コード署名用証明書のエイリアス名)

–caname (ルートCA証明書と中間CA証明書
のエイリアス名
  1. -caname (ルートCA証明書と中間CA証明書のエイリアス名)

    Image Modified


  2. 「Enter pass phrase for (鍵ペアファイル):」と表示されますので、鍵ペアファイルにアクセスさせるための、パスフレーズを入力してください。 
    Image Modified

  3. 「Enter Export Password:」と表示されますので、PKCS#12形式のファイルを保護するためのアクセスPINとして任意の文字列を入力してください。 
    Image Modified 

  4. 「Verifying - Enter Export Password:
」と表示されますので、確認のため、同じアクセスPINを再入力してください。 
  1. 」と表示されますので、確認のため、同じアクセスPINを再力してください。 
    Image Modified
OpenSSLのコマンドが終了しますので、  PKCS#12ファイルが作業ディレクトリに生成されていることを確認してください。 

  1. OpenSSLのコマンドが終了しますので、PKCS#12ファイルが作業ディレクトリに生成されていることを確認してください。 
    Image Modified
 

 

  1.  



アンカー
_

...

Toc505800957
_Toc505800957
1-2-3. JKS (Javaキーストア) ファイルの作成

本項目ではWindowsOS上で任意のフォルダにJKS (Javaキーストア) ファイルを作成する方法を記述します。
以下は、例としてWindows10上での作成方法を記載します。

...

JKS(Javaキーストア)ファイルの作成

  1. 任意のフォルダ(ここではC:\temp\test2018とします)にて以下のファイルを用意してください。

    項目「1-2-2 PKCS#12ファイルの作成」にて作成したPKCS#12ファイル(test.p12)
    Image Modified

  2. コマンドプロンプトを開き、ファイルのある任意のフォルダ(ここではC:\temp\test2018)へ移動します。

    > set Path=(JDKインストールディレクトリ)\bin
    ※JDKインストールディレクトリをプログラムを探すディレクトリに指定します
    > cd (作業ディレクトリ)

作業ディレクトリ

 

移動後、下記のコマンドを入力しJKS
  1. ←作業ディレクトリ


    移動後、以下のコマンドを実行しJKS (Javaキーストア) ファイルを作成してください。

    > keytool -importkeystore -srckeystore (PKCS#12ファイル名) -destkeystore (作成したいキーストアファイル名) -srcstoretype pkcs12 -deststoretype pkcs12 -srcalias (PKCS#12ファイルで利用されているエイリアス名) -destalias (登録したいエイリアス名) -destkeypass (キーストアに設定したいパスワード)

 

PKCS#12ファイルで利用されているエイリアス名(別名)は以下コマンドで参照下さい。
  1. PKCS#12ファイルで利用されているエイリアス名(別名)は以下のコマンドでご参照ください。

    keytool

–v –list –keystore
  1. -v -list -keystore (PKCS#12ファイル名)

    Image Modified

  2. 「出力先キーストアのパスワードを入力してください:」と表示されますので、上記のコマンドの「-destkeypass」に設定した文字列を入力してください。 
    Image Modified

  3. 「新規パスワードを再入力してください:」と表示されますので、確認のため、同じパスワードを再入力してください。 
    Image Modified
「出力先キーストアのパスワードを入力してください」と表示されますので、PKCS#12ファイルのアクセスPINを入力してください。 

  1. 「ソース・キーストアのパスワードを入力してください」と表示されますので、PKCS#12ファイルのアクセスPINを入力してください。 
    Image Modified
keytoolのコマンドが終了しますので、  JKS

  1. keytoolのコマンドが終了しますので、JKS (Javaキーストア) ファイルが作業ディレクトリに作成されていることを確認してください。 
    Image Modified

  2. 署名検証時に必要となるため下記のコマンドを入力しJKS (Javaキーストア) ファイルに「ルートCA証明書」をインポートしてください。

    > keytool -importcert -keystore (キーストアファイル名) -alias (設定したいルートCA証明書のエイリアス名) -file (ルートCA証明書のファイル名) -trustcacerts

    Image Modified

  3. 「キーストアのパスワードを入力してください:」と表示されますので、JKS (Javaキーストア) ファイルを保護するパスワードを入力してください。 
    Image Modified

  4. 「この証明書を信頼しますか。 [いいえ]:」と表示されますので、「はい」と日本語入力で入力してください。 
    Image Modified

  5. keytoolのコマンドが終了しますので、 JKS (Javaキーストア) ファイルが更新されていることを確認してください。 
    Image Modified

 

 

...



アンカー
_

...

Toc505800958
_Toc505800958
1-3. 署名

本章ではJava 本章ではJAVA .jar形式のファイルにWindowsOS上にてデジタル署名をする方法について記述します。
併せてタイムスタンプを付与する場合と2通りの手順がありますので適した方をご選択ください。

署名作業署名作業(併せてタイムスタンプを付与しない場合)

同一フォルダ上に署名するJava
  1. 同一フォルダ上に署名するJAVA .jar形式のファイル(test.jar)と項目1-2-
3にて 作成したJKS
  1. 3にて作成したJKS (Javaキーストア) ファイルを置きます。
    Image Modified

  2. コマンドプロンプトを実行し、署名対象ファイルのあるフォルダへ移動します。

    > set Path=(JDKインストールディレクトリ)\bin
    ※JDKインストールディレクトリをプログラムを探すディレクトリに指定します
    > cd (作業ディレクトリ)

作業ディレクトリ
  1. ←作業ディレクトリ

フォルダ移動後、署名したいJava
  1. フォルダ移動後、署名したいJAVA .jar形式のファイル(ここではtest.jar)

に対して下記のコマンドにて署名を実施してください。
  1. に対して以下のコマンドにて署名を実行してください。

    jarsigner -keystore (キーストアファイル名)

(署名したいJava
  1. (署名したいJAVA .jar形式のファイル名)  (キーストア内の証明書のエイリアス名)

 
  1. Image Modified


  2. 「キーストアのパスワードを入力してください:」と表示されますので、JKS (Javaキーストア) ファイルを保護するパスフレーズを入力してください。 
    Image Modified
「jarは署名されました。」表示され、keytoolのコマンドが終了しますので、  対象のJava

  1. 「jarは署名されました。」表示され、keytoolのコマンドが終了しますので、対象のJAVA .jar形式ファイルが更新されていることを確認してください。 
    Image Modified

    Image Modified

    ※以下警告はタイムスタンプが付与されていないため、表示されているものです。 
    署名状況には問題ありません。警告内の署名書証明書の有効期限は証明書、証明書毎に異なります。 
    警告: 
    -tsaまたは-
tsacertが指定されていないため、このjarにはタイムスタンプが付加されていません。 
  1. tsacertが指定されていないため、このjarにはタイムスタンプが付加されていません。 タイムスタンプがないと、署名者証明書の有効期限(20YY-MM-)後または将来の失効日後に、ユーザーはこのjarを検証できない可能性があります。 
     

署名作業(併せてタイムスタンプを付与する場合)

  1. 同一フォルダ上に署名するJAVA .jar形式のファイル(test.jar)と項目1-2-3にて作成したJKS (Javaキーストア) ファイルを置きます。
    Image Added

  2. コマンドプロンプトを実行し、署名対象ファイルのあるフォルダへ移動します。

    > set Path=(JDKインストールディレクトリ)\bin
    ※JDKインストールディレクトリをプログラムを探すディレクトリに指定します
    > cd (作業ディレクトリ) ←作業ディレクトリ

  3. フォルダ移動後、署名したいJAVA .jar形式のファイル(ここではtest.jar)に対して以下のコマンドにて署名を実行してください。

    jarsigner -

)後または将来の失効日後に、 
ユーザーはこのjarを検証できない可能性があります。 
 

 

  1. keystore(キーストアファイル名)(署名したいJAVA .jar形式のファイル名)  (キーストア内の証明書のエイリアス名) -tsa (タイムスタンプURL※)
    ※タイムスタンプURLに関しては登録担当者(各利用機関において、証明書発行のための審査と電子証明書自動発行支援システムの操作をする方)にお問い合わせください

    Image Added

  2. 「キーストアのパスワードを入力してください:」と表示されますので、JKS (Javaキーストア) ファイルを保護するパスフレーズを入力してください。 
    Image Added

  3. 「jarは署名されました。」表示され、keytoolのコマンドが終了しますので、対象のJAVA .jar形式ファイルが更新されていることを確認してください。 
    Image Added

    Image Added


    ※以下警告は署名状況には問題ありません。
    警告: 
    署名者の証明書チェーンがまだ検証されていません。
     

...


アンカー
_Toc505800959
_Toc505800959
1-4. コード署名確認作業

 

本章では、デジタル署名したJava 本章では、デジタル署名したJAVA .jar形式のファイルのコード署名確認作業について記述します。

署名確認作業署名確認作業(併せてタイムスタンプを付与しない場合)

  1. コマンドプロンプトを実行し、署名対象ファイルのあるフォルダへ移動します。

    > set Path=(JDKインストールディレクトリ)\bin
    ※JDKインストールディレクトリをプログラムを探すディレクトリに指定します
    > cd (作業ディレクトリ)

作業ディレクトリ
  1. ←作業ディレクトリ

  2. 下記のコマンドにて署名検証を実施してください。

    > jarsigner -verify -keystore (キーストアファイル名) (

検証したいJava
  1. 検証したいJAVA .jar形式のファイル名) (コード署名用証明書のエイリアス名)

    Image Modified


  2. 「jarが検証されました。」と表示されることを確認します。 
    Image Modified
※以下警告はタイムスタンプが付与されていないため、表示されているものです。 

  1. ※1.以下警告はタイムスタンプが付与されていないため、表示されているものです。 

    署名状況には問題ありません。警告内の署名書証明書の有効期限は証明書、証明書毎に異なります。 
    警告: 
このjarには、タイムスタンプがない署名が含まれています。タイムスタンプがないと、署名者証明書の 
有効期限
  1. このjarには、タイムスタンプがない署名が含まれています。タイムスタンプがないと、署名者証明書の有効期限(
20YY
  1. 20yy-
MM
  1. mm-
DD
  1. dd)
後または将来の失効日後に、ユーザーはこのjarを検証できない可能性が 
  1. 後または将来の失効日後に、ユーザーはこのjarを検証できない可能性があります。 
あります。 

  1. ※2.のコマンド[-verbose -certs]を追加することで、署名者を表示することが可能です。 
    Image Modified

署名確認作業(併せてタイムスタンプを付与した場合)

  1. コマンドプロンプトを実行し、署名対象ファイルのあるフォルダへ移動します。

    > set Path=(JDKインストールディレクトリ)\bin
    ※JDKインストールディレクトリをプログラムを探すディレクトリに指定します
    > cd (作業ディレクトリ) ←作業ディレクトリ

  2. 下記のコマンドにて署名検証を実施してください。

    > jarsigner -verify -keystore (キーストアファイル名) (検証したいJAVA .jar形式のファイル名) (コード署名用証明書のエイリアス名) -verbose -certs

    Image Added 


    「jarが検証されました。」と表示されることを確認します。 
    また、以下の記載箇所からタイムスタンプが付与された時間を確認することができます。

    タイムスタンプ付加者: "CN=_________, OU=___________, OU=__________, O=____________, L=__________, ST=_________, C=__________" 日時: 火 8 07 07:09:57 UTC 2018
    ※タイムスタンプは協定世界時(UTC)で付与されています。日本標準時の現在時刻(JST)はUTCに9時間加算したものです。

    Image Added


    ※1.以下警告は署名状況には問題ありません。
    警告:
    このjarには、証明書チェーンがまだ検証されていないエントリが含まれています。
    このjarに含まれる署名済エントリは、指定された別名によって署名されていません。
    このjarに含まれる署名済エントリは、このキーストア内の別名によって署名されていません。