質問

Advanced Search

Solution ID : SO23056

Last Modified : 05/17/2023

[CertCentral]コードサイニング証明書(CSR有)インストールについて

Problem

(追記)

2023年5月31日(水) 日本時間より、CSRを添付して申請したコードサイニング証明書オーダに対する証明書の発行を終了いたします。

詳細はEVコードサイニング証明書、およびコードサイニング証明書の変更、 およびトークンの取り扱いについて(2023年5月) を参照ください。


コードサイニング証明書を取得しました。CSRを提出した場合のインストール手順および、jarsignerでの署名方法を教えてください。

Solution

必ずお読みください

  • 本文書の内容によって生じた結果の影響について、弊社では一切の責任を負いかねますこと予めご了承ください。
  • 本文書は基本的な構成を想定しています。お客様のシステム環境や構成、設定状況などにより、手順や画面表示が変わることがあります。
  • 本文書の手順で動作しない場合やアプリケーション及びツールの仕様及び設定手順等に関する不明な点は、当社ではサポートできませんので、製品のマニュアルをお読みいただくか、開発元にご確認ください。

CSRを貼り付けてコードサイニング証明書を申請した場合

プラットフォームSun Javaを選択した場合はCSRファイルが必須です。
Sun Java以外プラットフォームでCSRファイルを生成して申請した場合は、CSRを生成した環境へインストールします。

CSR生成でKeytoolを利用し、発行通知メール(p7b)ファイルを利用する

発行通知メールに添付されたp7bファイルは、ルート証明書、中間CA証明書、コードサイニング証明書の3つがマージされています。
そのまま以下のようにkeytoolコマンドでインストールすることが可能です。
保存したファイルがあるフォルダーで以下のコマンドを実行します。
エイリアス(alias)名は、Keystore内にある「PrivateKeyEntry(秘密鍵ファイルのエントリー)」を指すエイリアス名を指定します。
# keytool -import -trustcacerts -alias [エイリアス名] -keystore [KeyStore名] -file [p7bファイル名]
キーストアのパスワード:パスワード
エイリアス名の鍵パスワードを入力して下さい:エイリアス名に対するパスワード

※パスワードはkeytstoreファイルを生成時に、同一にすることもできますので上記の問いが1つの場合もあります

CSR生成でKeytoolを利用し、ルート証明書、中間CA証明書、コードサイニング証明書をそれぞれインポートする

CertCentralにサインインして、オーダー番号をクリックします。
「以下の形式で証明書をダウンロード」ボタンから”その他オプション”を選択します。
”個々の証明書ファイル”から、コードサイニング証明書、中間CA証明書、ルート証明書を取得します。
メモ帳などを開いて(-----BEGIN CERTIFICATE-----)から(-----END CERTIFICATE-----)までをコピーするかダウンロードします。
ダウンロードすると自動的にファイル名称が拡張子(pem)となります。
テキストとしてご利用いただく場合は.txtに変更していただいて問題ありません。

・ルート証明書、中間証明書のインストール

保存したファイルがあるフォルダーで以下のコマンドを実行します。
・ルート証明書をインストールします。
(ルート証明書のインストールが不要な場合もあります)
エイリアス(alias)名は任意につけることが可能です(Keystore内での重複はできません)。

# keytool -import -trustcacerts -alias DigiCertRoot -keystore [キーストア名] -file [ルート証明書ファイル]

※インポートの際にはKeyStoreのパスワードを求められる場合があります
「証明書は、キーストア内にすでに存在します。」と表示される場合は、「Yes」または「Y}と入力してください。
・中間CA証明書をインストールします。
エイリアス(alias)名は任意につけることが可能です(Keystore内での重複はできません)。

# keytool -import -trustcacerts -alias DigiCertCA -keystore [キーストア名] -file [中間CA証明書ファイル]

※インポートの際にはKeyStoreのパスワードを求められる場合があります
「証明書は、キーストア内にすでに存在します。」と表示される場合は、「Yes」または「Y}と入力してください。

・コードサイニング証明書のインストール

保存したファイルがあるフォルダーで以下のコマンドを実行します。
エイリアス(alias)名は、Keystore内にある「PrivateKeyEntry(秘密鍵ファイルのエントリー)」を指すエイリアス名を指定します。

# keytool -import -trustcacerts -alias [エイリアス名] -keystore [キーストア名] -file [コードサイニング証明書ファイル]
キーストアのパスワード:パスワード
エイリアス名の鍵パスワードを入力して下さい:エイリアス名に対するパスワード

※パスワードはkeytstoreファイルを生成時に、同一にすることもできますので上記の問いが1つの場合もあります
keytoolエラー: java.lang.Exception: 応答から連鎖を確立できませんでした
keytool error: java.lang.Exception: Failed to establish chain from reply

上記はルート証明書、中間CA証明書が正しくkeystoreにインストールされていない場合が考えられます。

・インストール結果の確認

以下のコマンドでKeyStoreにインストールされた内容を確認できます。

# keytool -list -v -keystore [キーストア名]
キーストアのパスワードを入力してください:パスワード

証明書の有効期限が発行された証明書と異なる場合、または発行先と発行者が同じ場合は
コードサイニング証明書のインストールが成功していない場合があります。
エイリアス名またはKeystore内にPrivateKeyEntryが存在しているか確認してください。
PrivateKeyEntryがKeystore内に無い場合は、新しいKeystoreから作成したCSRにて無償の再発行をしてください

・キーペアファイルのバックアップ

ハードウェア障害などに備え、Keystoreファイルをバックアップしておきます。
デフォルトではユーザのホームディレクトリに作成されますが、お客様の環境により異なります。

・署名操作

署名作業は以下のサイトをご参照ください。

[CertCentral] Java 用コードサイニング証明書のCSR 生成/インストール/署名方法
https://knowledge.digicert.com/ja/jp/solution/SOT0012.html

タイムスタンプを追加する場合は、 -tsa http://timestamp.digicert.com を追加します。

CSR生成、その他の方法

WindowsOSを利用してCSRを生成した場合は、添付されたp7bファイルをダブルクリックして証明書をインストールするなどの方法があります。
ファイルを開いたとき(-----BEGIN PKCS7-----)から(-----END PKCS7-----)で終わっているファイルはp7b(PKCS#7形式)です。
p7bファイル形式以外が必要な場合は、CertCentralにサインインして、オーダー番号をクリックします。
「以下の形式で証明書をダウンロード」ボタンから”その他オプション”を選択します。
”個々の証明書ファイル”から、コードサイニング証明書、中間CA証明書、ルート証明書を取得します。
メモ帳などを開いて(-----BEGIN CERTIFICATE-----)から(-----END CERTIFICATE-----)までをコピーするかダウンロードします。