Javaコードサイニング: CSRを作成する

2014年1月以降、Webブラウザで実行するすべてのJavaアプリにはコードサイニング証明書が必要になります。 コードサイニング証明書を購入したら、必ずJavaコードに署名する必要があります。

Javaコードのパッケージ化と署名には、いくつかのツール(keytool、jar、jarsigner)が必要です。 JDK 5.0以降、jarsignerでタイムスタンプを含む署名を作成できるようになりました。これにより、コードサイニング証明書が有効な間にJARファイルが署名されたことを検証できます。

方法1 - 新しいコードサイニング証明書を要求する

  1. 必要に応じて、以下のリンク先からJDK をダウンロードします。
    http://java.sun.com/javase/downloads/index.jsp
  2. GoDaddyからコードサイニング証明書を要求します。
    • 新しいキーストアを作成します。 キーストアはセキュア証明書を保存する場所です。 この例では、コードサイニング証明書とそれに関連付けられた秘密キー専用に「codesignstore」という名前でキーストアを作成します。
      keytool -genkey -alias codesigncert -keypass -keyalg RSA -keysize 2048 -dname "CN=displayname,O=companyname,C=US,ST=state,L=city" -keystore codesignstore -storepass
    • 証明書署名要求(CSR)を作成します。 秘密キーが作成され、「codesignstore」という名前のキーストアに保存されます。 「mycsr.pem」という名前のCSRファイルが現在の作業ディレクトリに作成されます。
      keytool -certreq -v -alias codesigncert -file mycsr.pem -keystore codesignstore
    • コードサイニング証明書を購入します。
    • 「マイアカウント」で、購入したコードサイニング証明書クレジットをクリックします。 クリックすると、GoDaddyセキュア証明書サービスアカウントマネージャWebアプリケーションが開きます。 CSRフィールドが表示されるように、要求フォームでCSRの作成方法を手動に設定する必要があります。
    • CSRをコードサイニング要求の一部として送信します。
      • mycsr.pemファイルをエディタで開きます。ファイルの内容をすべてコピーし(「BEGIN NEW CERTIFICATE REQUEST」と「END NEW CERTIFICATE REQUEST」の行を含む)、コードサイニング要求フォームの適切なセクションに貼り付けます。
    • お客様から提供された会社情報が検証されます。 必要に応じて、登録機関(RA)からその他の情報を求められることがあります。
    • コードサイニング証明書が発行されると、お客様にメールメッセージが送信されます。このメールには、証明書ファイルとそれに関連付けられた中間証明書をダウンロードするためのリンクが含まれています。
  3. 前の手順で作成したキーストアに、コードサイニング証明書をインストールします。 以下の例ではコードサイニング証明書の名前は「mycert.cer」です。 証明書ファイルは現在の作業フォルダにあり、ファイルはPKCS#7形式です。
    keytool -import -trustcacerts -keystore codesignstore -storepass -alias codesigncert -file mycert.cer
  4. jarsignerを使ってJARファイルに署名します。その際、コードサイニング証明書と秘密キーを使用します。
    jarsigner -verbose -keystore codesignstore -storepass -keypass myapp.jar codesigncert
    • 「codesignstore」はコードサイニング証明書、秘密キー、関連するその他すべての証明書が含まれているキーストアへのエイリアスです。
    • 未署名の入力ファイル名は「myapp.jar」であり、署名したファイルで上書きされます。 入力ファイル名と出力ファイル名を個別に指定する場合は、-signedjarコマンドラインオプションを使用します。
    • 「codesigncert」はキーストアにある秘密キーへのエイリアスです。
    次の例では、上の例と同じサンプルにタイムスタンプオプションを追加しています。
    jarsigner -verbose -keystore codesignstore -storepass -keypass -tsa http://tsa.starfieldtech.com/ myapp.jar codesigncert
  5. 署名済みJARファイルの検証
    jarsigner -verify -verbose -certs myapp.jar
  6. コードの配布

アプローチ2 – コードサイニング証明書と秘密キーの両方がある既存のPKCS#12ファイルを使用する

  1. 必要に応じて、以下のリンク先からJDK をダウンロードします。
    http://java.sun.com/javase/downloads/index.jsp
  2. PFX/P12がjarsignerで使用できることを確認します。 次のコマンドを実行します。ステップ5で必要なエイリアス名は出力の最上部付近に表示されます。
    keytool -list -storetype pkcs12 -keystore mycert.pfx -v
  3. jarツールを使用してJavaクラスファイルからJARファイルを作成します。
    jar cvf myapp.jar myapp.class
  4. jarsignerを使用してJARファイルに署名します。このとき、コードサイニング証明書と秘密キーを使用します。
    jarsigner -storetype pkcs12 -keystore mycert.pfx myapp.jar "aliasname"
    • 「mycert.pfx」は、コードサイニング証明書と秘密キーがあるPFX/P12ファイルの完全パスです。 このファイルにはすべての中間証明書も含まれています。
    • 「aliasname」はステップ2の出力の最上部付近に表示されます。 PFX/P12ファイルがWindowsからエクスポートされている場合、エイリアス名はGUIDとなります。
    • 要求されたら、PFX/P12ファイルの秘密キーに関連付けられているパスワードを入力します。 また、コマンドラインで「-storepass」オプションを使用してパスワードを指定することもできます。
    • 未署名の入力ファイル名は「myapp.jar」であり、署名したファイルで上書きされます。 入力ファイル名と出力ファイル名を個別に指定する場合は、-signedjarコマンドラインオプションを使用します。
    次の例では、上の例と同じサンプルにタイムスタンプオプションを追加しています。
    jarsigner -storetype pkcs12 -keystore mycert.pfx -tsa http://tsa.starfieldtech.com/ myapp.jar "aliasname"
  5. 署名済みJARファイルの検証
    jarsigner -verify -verbose -certs myapp.jar
  6. コードの配布

リンク


この記事は役に立ちましたか。
フィードバックへのご協力ありがとうございました。 お客様サービススタッフとお話しになりたい場合は、上記のサポート用電話番号またはチャット機能をご利用ください。
お役にたてて光栄です! 何か他にできることはありませんか。
それはすみません。 わかりにくい点や、解決策で問題が解決できなかった理由等を教えてください。