Ver. 8.0_000 電子署名について

Ver. 8.0_000
電子署名について
1
電子署名について
目次
1.
2.
3.
4.
概要................................................................................................................................................. 2
ドキュメントサイン用Digital IDの取得と必須ファイルの作成.................................... 3
WRC Designerを使用した帳票フォームの設定 ............................................................. 4
Javaプログラム上での電子署名ヘルパーの設定 ....................................................... 5
電子署名ヘルパークラスとは .............................................. 5
電子署名ヘルパークラスの使用方法 ........................................ 5
電子署名付きPDF作成Javaプログラムサンプル ............................... 6
5.
6.
JCEの設定..................................................................................................................................... 7
注意点............................................................................................................................................ 8
Copyright(C) SIOS Technology,
2
電子署名について
1. 概要
WebReportCafe(以降 WRC) 4.0 以降では、WRC Engine で作成する PDF に VeriSign の
不可視電子署名を付加することができます。電子署名を付加する事により、文書の作成者
を証明することができ、作成された PDF を改竄することが不可能になります。
この文書では、WRC で電子署名を付加するために必要な、ドキュメントサイン用 Digital
ID の取得と必須ファイル作成、WRC Designer を使用した帳票フォームの設定、プログラ
ム上での電子署名ヘルパーの設定方法を説明します。
Copyright(C) SIOS Technology,
3
電子署名について
2. ドキュメントサイン用 Digital ID の取得と必須ファイルの作成
VeriSignの不可視署名をPDFに付加するためには、日本ベリサイン社が販売しているドキ
ュメントサイン用Digital IDを購入する必要があります。購入の方法はベリサインのホーム
ページ(http://www.verisign.co.jp/)を参照してください。
ベリサインから提供される Digital ID はプライベートキーが保存されている拡張子が
PVK ファイルと、公開部分が格納されている SPC ファイルの二つのファイルに分かれてい
ます。WRC で電子署名を行うには PVK と SPC を一つにした PKCS#12 形式のファイルを
作成する必要が有ります。
PVKファイルとSPCファイルをPKCS#12 に変換するには、Microsoft社が提供している
PVK Digital Certificate Files ImporterというDigital IDをOSに取り込むコマンドライン
ツールが必要です。PVK Digital Certificate Files ImporterはMicrosoft社のホームページ
(http://www.microsoft.com/japan/msdn/vba/technical/pvk.htm) から無料でダウンロードで
きます。PVK Digital Certificate Files Importerにインストール方法等に関してはホームペ
ージの情報を参照してください。
PKCS#12ファイルの作成手順は以下の通りです。
1. OS の個人証明書ストアに Digital ID を取り込む
OS の個人証明書ストアに Digital ID を取り込むには、コマンドラインツールの
PVK Digital Certificate Files Importer(pvkimprt.exe)を使用します。コマンドプロ
ンプトから下記のように PVK ファイルと SPC ファイルを引数として指定し実行し
ます。
pvkimprt.exe "[SPC ファイルへのパス]" "[PVK ファイルへのパス]"
すると「Enter Private Key Password」ダイアログが表示されるので、申請時に
設定したパスワードを入力し[OK]ボタンをクリックします。
Enter Private Key Password ダイアログ
続いて、証明書インポートウィーザードが表示されます。デフォルト状態でウィ
ザードを進んでいき完了をクリックしてください。
以上で、証明書ストアへの Digital ID の取り込みが完了します。
2.
個人証明書ストアを表示する
取り込んだ Digital ID を確認しエクスポートするために「個人証明書ストア」を
表示します。まず、Internet Explorer を起動し、[ツール] メニューの [インターネ
ット オプション] をクリックし、表示されたダイアログ ボックスの [コンテンツ]
タブを選択します。続いて、[証明書] ボタンをクリックすると、Windows 証明書
マネージャが表示されます。[個人] タブを選択すると、ユーザーが所有するプライ
Copyright(C) SIOS Technology,
4
3.
電子署名について
ベート キーの証明書が表示されます。 これが「個人証明書ストア」です。表示さ
れている証明書の一覧の中に取り込んだ Digital ID が存在する事を確認してくださ
い。
PKCS#12 ファイルを作成する
2で表示した「個人証明書ストア」から PKCS#12 ファイルを作成します。まず、
「個人証明書ストア」の一覧から1で取り込んだ証明書を選択し、[エクスポート]
ボタンをクリックすると、証明書のエクスポートウィザードが表示されます。[次へ]
ボタンをクリックすると、秘密キーのエクスポートの有無を設定画面が表示されま
す。「はい、秘密キーをエクスポートします」のラジオボタンをクリックし、[次へ]
ボタンをクリックします。次にエクスポートファイル形式の設定画面が表示されま
す。「証明のパスにある証明書を可能であればすべて含む」のチェックボックスをオ
ンにして、「次へ」をクリックします。パスワード入力画面が表示されるので、適当
なパスワードを入力し「次へ」をクリックします。パスワードは WRC で使用する
際にも必要になりますので忘れないようにしてください。続いて、エクスポートフ
ァイルの場所と名称の指定を行うダイアログが表示されるので、出力するファイル
名と場所を指定し、[次へ]ボタンをクリックします。最後に表示される確認画面で、
[完了]ボタンをクリックすると、PKCS#12 ファイルを作成することができます。
3. WRC Designer を使用した帳票フォームの設定
電子署名を行うには、WRC Designer を使用して、PDF を作成する帳票フォームに、電
子署名の設定を行う必要があります。
帳票フォームへの電子署名の設定手順は下記の通りです。
1.
2.
3.
4.
5.
6.
WRC Designer を起動し、帳票フォームを作成します。
[ツール]メニューから[PDF 設定]を選択し、PDF 設定ダイアログを表示します。
[VeriSign 不可視署名]タブをクリックし、電子署名設定タブを表示します。
[VeriSign 不可視署名を設定する]チェックボックスをオンし、詳細情報入力項目を表
示します。
詳細情報を入力します。([名前]フィールドは必須項目なので必ず入力してくださ
い。)
PDF 設定ダイアログの[OK]ボタンをクリッ
クし、ダイアログを閉じます。
以上で帳票フォーム電子署名の設定が完了です。
尚、WRC Designer 上の PDF プレビュー機能で
は、電子署名は行われませんのでご注意ください。
Copyright(C) SIOS Technology,
5
電子署名について
4. Java プログラム上での電子署名ヘルパーの設定
作成した帳票フォームを表示するには、Java プログラム上で、帳票フォーム PDF を生成
するためのクラス jp.co.tenartni.xreport.XReport のインスタンスに、電子署名を行うため
のヘルパークラスのインスタンスをセットする必要があります。
ここでは XReport 詳しい説明は省き、同オブジェクトへの電子署名ヘルパーの設定につ
いてのみご説明します。XReport の使用方法は、WRC Engine のドキュメントを参考にし
てください。
電子署名ヘルパークラスとは
電子署名ヘルパークラスとは、電子署名ヘルパーインターフェース
jp.co.tenartni.pdf.digsig.DigitalSignHelper をインプリメントした電子署名を行うロジッ
クが実装されたヘルパークラスです。WRC では、オープンソース暗号化ライブラリ
Bounchy Castle を 使 用 し て 電 子 署 名 を 行 う 、 ヘ ル パ ー ク ラ ス
jp.co.tenartni.xreport.digsig.LightDigitalSigner を提供しています。
電子署名ヘルパークラスの使用方法
電子署名ヘルパークラスの設定方法と XReport オブジェクトへセットする方法をご説明
します。
1.
事前準備
bcprov-jdk16-143.jar にクラスパスを通します。
取得方法は[6.注意点]の「暗号化ライブラリについて」をご参照ください。
また、JCE Unlimited Strength Jurisdiction Policy Files を取得し、
[JAVA_HOME]¥ jre¥lib¥security フォルダの local_policy.jar と
US_export_policy.jar を置き換えます。取得方法は、「5.JCE 設定」をご参照くださ
い。
2.
インスタンスの作成
まずヘルパークラスのインスタンスを作成します。下記の例では XReport のインス
タンスも作成しています。
例)
XReport rep = new XReport();
LightDigitalSigner digSigHelper = new LightDigitalSigner();
3.
Digital ID ファイル(PKCS#12)をセット
次に、Digital ID から作成した PKCS#12 形式のファイルを、ヘルパークラスのイ
ンスタンスに、パスワードと一緒に設定します。
例)
digSigHelper.setPkcs12URLInfo("file:///d:/pdf/tenartni.pfx", "password");
4.
XReport オブジェクトにセット
最後に、ヘルパークラスを XReport に設定します。
例)
rep.setDigitalSignHelper(digSigHelper);
Copyright(C) SIOS Technology,
6
電子署名について
電子署名付きPDF作成Javaプログラムサンプル
電子署名月の PDF 作成 Java プログラムのサンプルは下記の通りです。
import jp.co.tenartni.xreport.digsig.LightDigitalSigner;
import jp.co.tenartni.sql.*;
import jp.co.tenartni.xreport.*;
public class SignedReportProductList {
// ① 必要なインスタンスを作成する
XReport rep = new XReport();
LightDigitalSigner digSigHelper = new LightDigitalSigner();
SQLHandler sqlHandler = new SQLHandler();
SQLRowSet sqlRowMain = new SQLRowSet();
public SignedReportProductList() {
try {
// ② Digital IDファイル(PKCS#12)をセットする
digSigHelper.setPkcs12URLInfo("file:///d:/pdf/tenartni.pfx", "password");
// ③ ヘルパークラスをXReportオブジェクトにセットする
rep.setDigitalSignHelper(digSigHelper);
// ④ データベース情報を設定する
sqlHandler.setDriverName("oracle.jdbc.OracleDriver");
sqlHandler.setDbUrl("jdbc:oracle:thin:@localhost:1521:orcl");
sqlHandler.setDbUserName("maido");
sqlHandler.setDbPassword("maido");
// ⑤ 帳票フォームを設定する
rep.loadProperty("file:///d:/pdf/ReportForm/product_list_signed.xml");
// ⑥ SQL を設定する
sqlRowMain.setSQL(rep.getSQL());
sqlRowMain.setSqlHandler(sqlHandler);
rep.setRowSet(sqlRowMain);
// ⑦ 帳票を生成する
rep.createPDF("d:/pdf/product_list_signed.pdf");
System.out.println("completed.");
System.exit(0);
} catch (Exception e) {
System.out.println("error!! : " + e.toString());
System.exit(-1);
} finally {
try {
sqlHandler.disConnect();
} catch (Exception e) {
}
}
}
public static void main(String[] args) {
SignedReportProductList reportProductList = new SignedReportProductList();
}
}
Copyright(C) SIOS Technology,
7
電子署名について
5. JCE の設定
WRC で は 電 子 署 名 処 理 に オ ー プ ン ソ ー ス 暗 号 処 理 ラ イ ブ ラ リ Bounchy Castle
(http://www.bouncycastle.org)の JCE プロバイダを使用しています。JDK でこの JCE プ
ロバイダを使用するには、暗号化強度制限を解除する必要があります。
暗号化強度制限を解除するために、「 JCE Unlimited Strength Jurisdiction Policy
Files」が必要です。「JCE Unlimited Strength Jurisdiction Policy Files」はSun Developer
Network Site(http://java.sun.com)からダウンロードすることができます。
セ ッ ト ア ッ プ 方 法 は 、「 JCE Unlimited Strength Jurisdiction Policy Files 」 の
README.txt を参照してください。
Copyright(C) SIOS Technology,
8
電子署名について
6. 注意点
Acrobat5.0 での署名検証
Acrobat6.0 及び Adobe Reader6.0 において、電子署名検証のハンドラが標準で搭載され
るようになりました。WRC4.0 からは、新しいハンドラに対応したため、Acrobat5.X での
署名が検証できなくなりました。
署名の検証には Adobe Reader6.0 以降のバージョンをご使用ください。
メモリーリソース消費について
WRC を使用して、電子署名なしの PDF を作成する場合は、PDF データの一部が生成さ
れる度に、出力先へ出力する仕様になっていますが、電子署名付き PDF を生成する場合は、
電子署名を行うために PDF 全体のデータからハッシュコードを作成必要があるため、生成
される全体の PDF データをメモリ上に展開する仕様になっています。よって、電子署名付
き PDF を生成する場合は、電子署名なしの PDF を生成する場合よりも、JVM のヒープを
多く使用しますので、膨大なデータの PDF を生成する際は、ご注意ください。
Adobe Reader6.0 での電子署名の検証について
Adobe Reader6.0 で電子署名を検証する場合、設定が必要になります。詳しくはAdobe
社のサポートサイトの文書番号 : 223763 「ベリサインの証明書で作成された電子署名の検
証方法」(http://support.adobe.co.jp/faq/faq/qadoc.sv?223763+002)を参照してください。
暗号化ライブラリについて
WRC では電子署名処理に JCE プロバイダとしてオープンソース Bouncy Castle v1.43
を使用しています。他のバージョンの Bounchy Castle をご使用の場合は、不具合が起こる
可能性があります。
http://polydistortion.net/bc/download/ より「bcprov-jdk16-143.jar」をダウンロードし
てください。
Copyright(C) SIOS Technology,