4.XML文書に署名する (Java)

 Javaによる電子署名の方法を説明します。Javaの開発環境はJDK1.5以上を想定していますが、セキュリティの観点から最新版を利用することを推奨します。
 まずは、鍵を生成して署名する方法をサンプルを交えて説明します。

XML署名以外に以下のページもご参照ください。

4.1 XML署名とは

 XML署名とは、XML文書変換の1つです。詳しくは、W3Cで既定されていますので確認してください。本ページでは、その詳細を説明せず既知としてJavaでそれを実装する方法を説明します。なお、XMLについても同様に詳細の説明を割愛します。
 XML署名では、XMLかバイナリかにかかわらず、任意のデータに署名できます。XML署名は、Enveloping、EnvelopedおよびDetachedの3つの形式があり、署名データの<Refarence>要素内のURI属性によって識別されます。

この項目では、Enveloped形式の電子署名の施法を説明します。

4.2 電子署名されるXML文書

 電子署名されるXML文書です。Javaアプリケーションのサンプルで「org.xml」として利用します。
<root>
  <creditcard>
    <number>19834209</number>
    <expiry>02/02/2002</expiry>
  </creditcard>
</root>

4.3 署名されたXML文書(結果)

 Javaアプリケーションを説明する前に、DSA-SHA1 Enveloped形式で電子署名(変換)されたXML文書を先に説明します。(見やすくするためにインデント、改行を追加してありますのでご注意ください。)
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<root> (1)
  <creditcard>
    <number>19834209</number>
    <expiry>02/02/2002</expiry>
  </creditcard>
  <Signature (2) xmlns="http://www.w3.org/2000/09/xmldsig#">
    <SignedInfo>
      <CanonicalizationMethod (3) Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"/>
      <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"/>
      <Reference URI=""> (4)
        <Transforms>
          <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
        </Transforms>
        <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
        <DigestValue>qf9G+NGDr9YbsV4Tu1a8je/DCLE=</DigestValue>
      </Reference>
    </SignedInfo>
    <SignatureValue>VF6F0kq9SEFu/fmbdIo7LzJ4vUaBWEWXGTyuarQGc50mD6lCTe9yLg==</SignatureValue>
    <KeyInfo> (5)
      <KeyValue>
        <DSAKeyValue>
          <P>/KaCzo4Syrom78z3EQ5SbbB4sF7ey80etKII864WF64B81uRpH5t9jQTxeEu0ImbzRMqzVDZkVG9xD7nN1kuFw==</P>
          <Q>li7dzDacuo67Jg7mtqEm2TRuOMU=</Q>
          <G>Z4Rxsnqc9E7pGknFFH2xqaryRPBaQ01khpMdLRQnG541Awtx/XPaF5Bpsy4pNWMOHCBiNU0NogpsQW5QvnlMpA==</G>
          <Y>d6Oh4zgcbRAb2MJTWJyPvzgknYRnQiG+lJ1S5n08kBblxTF0MxtIZHfkhdggSEY2g7y4ORP7u8KSBm/7sFO/IQ==</Y>
        </DSAKeyValue>
      </KeyValue>
    </KeyInfo>
  </Signature>
</root>
 (1) 署名データは、親要素(<root>)に含まれます。
 (2) 署名データです。このサンプルでは、電子署名を1回だけ施しています。
 (3) 正規化アルゴリズムです。
 (4) XMLを保護する変換アルゴリズムを記した要素です。ダイジェストアルゴリズムなどが含まれます
 (5) 復号用の鍵情報です。

次は、電子署名のJavaアプリケーションです。


お問い合わせは、こちらからお願いします。


(記載の会社名および製品名は、各社の登録商標および商標です。)

4.1 XML文書に署名する (Java)
4.1 XML署名とは
4.2 署名されるXML文書
4.3 署名されたXML文書(結果)
4.4 電子署名 Javaアプリ
株)トラスト・ソフトウェア・システム
暗号化・電子署名・タイムスタンプ ライブラリ作成します。
お問い合わせください。
会員用ログイン
ID:
パスワード:
ログインすると、一般公開していないページを閲覧できます。