メニュー

プロダクト



プログラミング


  • Java
    • Web 技術
    • メール技術
      • JavaMail
      • Apache James Mailet
    • Web フレームワーク
      • Jakarta Struts
      • Jakarta Velocity
      • Jakarta Tapestry
      • WebWork2
      • Jakarta Jetspeed
      • Apache Cocoon 2
    • DB 技術
      • JDBC
      • Hibernate
      • Apache Torque
    • DI (IoC) コンテナ
      • Spring Framework
      • Seasar2
      • Apache HiveMind
      • PicoContainer
    • 属性プログラミング
    • テスティング
      • JUnit
      • Jakarta Cactus
      • DBUnit
      • djUnit
      • FitNesse
    • ロギング
      • Apache Log4j
      • Jakarta Commons logging
    • 分散コンポーネント技術
      • EJB
    • リッチ クライアント
      • Java Web Start
    • GUI
    • XML Web サービス
      • Apache Axis
      • Apache SOAP
    • アプリケーション管理
    • トランザクション
    • 開発環境
      • Apache Ant
      • Apache Maven
      • Apache Maven2
    • Eclipse
    • Tips
  • .NET Framework
  • PHP
  • XML
    • SmartDoc
  • 正規表現
  • VB, VBA, VBScript, ASP
  • C/C++

DBMS


  • MySQL
  • PostgreSQL
  • Oracle
  • Microsoft SQL Server
  • HSQLDB
  • SQLite
  • Apache Xindice

アプリケーション サーバ



OS



バージョン管理システム



未整理


最近更新したページ
このウィキの読者になる
更新情報がメールで届きます。
このウィキの読者になる

Java Tips/Digital Certificate - Signature

概要


keytool ユーティリティを使用した証明書の作成、 jarsigner ユーティリティを使用した JAR へのデジタル署名を行ってみます。

証明書を作成する


keytool ユーティリティに -genkey 引数を指定すると、キーストア ファイル内に証明書が作成されます。以下のように対話形式なので適当に答えます。

C:\>keytool -genkey -alias hoge -keystore hoge.keystore
キーストアのパスワードを入力してください:  hogehoge
姓名を入力してください。
  [Unknown]:  hoge
組織単位名を入力してください。
  [Unknown]:  hoge
組織名を入力してください。
  [Unknown]:  hoge
都市名または地域名を入力してください。
  [Unknown]:  hoge
州名または地方名を入力してください。
  [Unknown]:  hoge
この単位に該当する 2 文字の国番号を入力してください。
  [Unknown]:  JP
CN=hoge, OU=hoge, O=hoge, L=hoge, ST=hoge, C=JP でよろしいですか?
  [no]:  y

<hoge> の鍵パスワードを入力してください。
        (キーストアのパスワードと同じ場合は RETURN を押してください):

 -alias 引数で指定した名前で証明書が作成されます。 -alias 引数を指定しないと mykey という名前で作成されます。

 -keystore 引数で指定したファイルに作成されます。 -keystore 引数を指定しないと、ホームディレクトリの .keystore というファイルを使用します。いずれにしても、ファイルが存在しない場合は作成されます。

キーストア ファイルの中身を見る


keytool ユーティリティに -list 引数を指定すると、キーストア ファイルの中身が一覧表示されます。

C:\>keytool -list -keystore hoge.keystore
キーストアのパスワードを入力してください:  hogehoge

キーストアのタイプ: jks
キーストアのプロバイダ: SUN

キーストアには 1 エントリが含まれます。

hoge, 2005/01/27, keyEntry,
証明書のフィンガープリント (MD5): 47:2D:AB:C4:03:6E:45:9E:16:7F:5C:CE:65:DF:5F:98

先ほど作成した hoge という証明書が入っています。

証明書を出力する


keytool ユーティリティに -export 引数を指定すると、証明書を出力することができます。

C:\>keytool -export -keystore hoge.keystore -alias hoge -file hoge.cer
キーストアのパスワードを入力してください:  hogehoge
証明書がファイル <hoge.cer> に保存されました。

 -keystore 引数には、出力しようとしている証明書が入っているキーストア ファイルを指定します。省略すると、ホームディレクトリの .keystore というファイルを使用します。

 -alias 引数には、出力しようとしている証明書の名前を指定します。省略すると、 mykey という名前の証明書を出力しようとします。

 -file 引数には、証明書を出力するファイルを指定します。省略すると、標準出力に出力します。

JAR に署名する


jarsigner ユーティリティを使用すると、 JAR にデジタル署名を行うことができます。

C:\>jarsigner -keystore hoge.keystore -storepass hogehoge Hoge.jar hoge

 -keystore 引数には、署名する証明書が入っているキーストア ファイルを指定します。省略すると、ホームディレクトリの .keystore というファイルを使用します。

 -storepass 引数には、キーストア ファイルのパスワードを指定します。

オプション引数の後に、署名する JAR 、及び証明書のキー名を指定します。

JAR の署名情報を見る


jarsigner ユーティリティに -verify 引数を指定すると、 JAR の署名情報を見ることができます。

C:\>jarsigner -verify Hoge.jar
jar verified.

署名されている場合、上記のように表示されます。これでは署名されているかどうかだけしかわからないので、 -verbose 引数を指定してもっと詳細な情報を見てみます。

C:\>jarsigner -verify -verbose Hoge.jar

         134 Thu Jan 27 23:12:20 JST 2005 META-INF/MANIFEST.MF
         187 Thu Jan 27 23:12:22 JST 2005 META-INF/HOGE.SF
         980 Thu Jan 27 23:12:22 JST 2005 META-INF/HOGE.DSA
           0 Thu Jan 27 22:04:22 JST 2005 META-INF/
sm       182 Thu Jan 27 22:04:16 JST 2005 Hoge.class

  s = signature was verified
  m = entry is listed in manifest
  k = at least one certificate was found in keystore
  i = at least one certificate was found in identity scope

jar verified.

ファイルごとにどのような状態かを見ることができます。

署名されていない JAR を指定すると、次のように表示されます。

C:\>jarsigner -verify Hoge.jar
jar is unsigned. (signatures missing or not parsable)

参考


2005年12月07日(水) 12:04:52 Modified by uguuxp




スマートフォン版で見る