Ver. 8.0_000
1 目次 1. 概要... 2 2. ドキュメントサイン用 Digital IDの取得と必須ファイルの作成... 3 3. WRC Designerを使用した帳票フォームの設定... 4 4. Javaプログラム上での電子署名ヘルパーの設定... 5 電子署名ヘルパークラスとは... 5 電子署名ヘルパークラスの使用方法... 5 電子署名付きPDF 作成 Javaプログラムサンプル... 6 5. JCEの設定... 7 6. 注意点... 8
2 1. 概要 WebReportCafe( 以降 WRC) 4.0 以降では WRC Engine で作成する PDF に VeriSign の不可視電子署名を付加することができます 電子署名を付加する事により 文書の作成者を証明することができ 作成された PDF を改竄することが不可能になります この文書では WRC で電子署名を付加するために必要な ドキュメントサイン用 Digital ID の取得と必須ファイル作成 WRC Designer を使用した帳票フォームの設定 プログラム上での電子署名ヘルパーの設定方法を説明します
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 証明書マネージャが表示されます [ 個人 ] タブを選択すると ユーザーが所有するプライ
4 ベートキーの証明書が表示されます これが 個人証明書ストア です 表示されている証明書の一覧の中に取り込んだ Digital ID が存在する事を確認してください 3. PKCS#12 ファイルを作成する 2 で表示した 個人証明書ストア から PKCS#12 ファイルを作成します まず 個人証明書ストア の一覧から 1 で取り込んだ証明書を選択し [ エクスポート ] ボタンをクリックすると 証明書のエクスポートウィザードが表示されます [ 次へ ] ボタンをクリックすると 秘密キーのエクスポートの有無を設定画面が表示されます はい 秘密キーをエクスポートします のラジオボタンをクリックし [ 次へ ] ボタンをクリックします 次にエクスポートファイル形式の設定画面が表示されます 証明のパスにある証明書を可能であればすべて含む のチェックボックスをオンにして 次へ をクリックします パスワード入力画面が表示されるので 適当なパスワードを入力し 次へ をクリックします パスワードは WRC で使用する際にも必要になりますので忘れないようにしてください 続いて エクスポートファイルの場所と名称の指定を行うダイアログが表示されるので 出力するファイル名と場所を指定し [ 次へ ] ボタンをクリックします 最後に表示される確認画面で [ 完了 ] ボタンをクリックすると PKCS#12 ファイルを作成することができます 3. WRC Designer を使用した帳票フォームの設定 電子署名を行うには WRC Designer を使用して PDF を作成する帳票フォームに 電子署名の設定を行う必要があります 帳票フォームへの電子署名の設定手順は下記の通りです 1. WRC Designer を起動し 帳票フォームを作成します 2. [ ツール ] メニューから [PDF 設定 ] を選択し PDF 設定ダイアログを表示します 3. [VeriSign 不可視署名 ] タブをクリックし 電子署名設定タブを表示します 4. [VeriSign 不可視署名を設定する ] チェックボックスをオンし 詳細情報入力項目を表 示します 5. 詳細情報を入力します ([ 名前 ] フィールドは必須項目なので必ず入力してくださ い ) 6. PDF 設定ダイアログの [OK] ボタンをクリッ クし ダイアログを閉じます 以上で帳票フォーム電子署名の設定が完了です 尚 WRC Designer 上の PDF プレビュー機能では 電子署名は行われませんのでご注意ください
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);
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 { // 1 必要なインスタンスを作成する XReport rep = new XReport(); LightDigitalSigner digsighelper = new LightDigitalSigner(); SQLHandler sqlhandler = new SQLHandler(); SQLRowSet sqlrowmain = new SQLRowSet(); public SignedReportProductList() { try { // 2 Digital ID ファイル (PKCS#12) をセットする digsighelper.setpkcs12urlinfo("file:///d:/pdf/tenartni.pfx", "password"); // 3 ヘルパークラスを XReport オブジェクトにセットする rep.setdigitalsignhelper(digsighelper); // 4 データベース情報を設定する sqlhandler.setdrivername("oracle.jdbc.oracledriver"); sqlhandler.setdburl("jdbc:oracle:thin:@localhost:1521:orcl"); sqlhandler.setdbusername("maido"); sqlhandler.setdbpassword("maido"); // 5 帳票フォームを設定する rep.loadproperty("file:///d:/pdf/reportform/product_list_signed.xml"); // 6 SQL を設定する sqlrowmain.setsql(rep.getsql()); sqlrowmain.setsqlhandler(sqlhandler); rep.setrowset(sqlrowmain); // 7 帳票を生成する 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();
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 を参照してください
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 をダウンロードしてください