Adobe Acrobat 9.0 に PDF 署名プラグインを追加してみる (公的個人認証用の IC カードを用いた署名を可能にする)
SOFTWARE REPORT
.style1 {
padding: 8px;
}
法務省 PDF 署名プラグイン
法務省オンライン申請システム で提供されている "PDF 署名プラグイン" を使用することで、住民基本台帳カード等に記録した電子証明書を使用して、PDF に電子署名を施すことができるようです。
なお、この法務省 PDF 署名プラグインを使用するためには、別途 Adobe Acrobat という PDF 作成ソフトを用意しておく必要があります。
今回は Windows Vista Ultimate (64 bit) に、Adobe Acrobat 9.0 Standard をインストールしている環境に、法務省 PDF 署名プラグインをインストールしてみることにしました。法務省が提示する利用環境の中には、法務省オンライン申請システムを使用するには、Windows Vista の 64 bit 版は除くといった表記も見受けられますので、今回もどこまでできるかは判らないですけれど。
他にも、ユーザ名に全角文字を入れてはいけないとか、ドライブ C: が存在しないといけないとか、そう簡単に対応しにくい条件も記載されていたりするので、少し注意が必要そうです。
法務省 PDF 署名プラグインをインストールする
法務省 PDF 署名プラグインは、法務省オンライン申請システム のサイトの "ご利用方法" "事前準備" の "PDF 署名プラグインのインストール" (http://shinsei.moj.go.jp/usage/zyunbi_PDF.html) という頁からダウンロードすることが出来るようになっていました。
ここから、法務省 PDF 署名プラグイン (SPDFG130.exe) をダウンロードしたら、それを実行して、PDF 署名プラグインのインストールを行います。
途中の "セットアップタイプ" の選択画面で、ディフォルトで使用する署名方法を選択する画面では、とりあえず "公的個人認証 IC カードを使用する" にチェックを入れておくことにします。他はインストール手順に従えば、特に難しいことなくインストールを行うことが出来ました。
インストール完了後、コンピュータの再起動が必要でしたので、注意しましょう。
法務省 PDF 署名プラグインの設定を行う
法務省 PDF 署名プラグインのインストールが完了したら、初期設定を行う必要があるとのことです。
Windows Vista で環境設定を行う場合は "管理者モード" で実行する必要があるとのことなので、Adobe Acrobat 9.0 Standard がインストールされているフォルダ (C:\Program Files (x86)\Adobe\Acrobat 9.0\Acrobat\ 等) を開き、"Acrobat.exe" を右クリックの上、"管理者として実行" を選択しました。
Adobe Acrobat 9.0 Standard が起動したら、システムメニュー 「編集」 の 「環境設定」 の中にある 「一般」 メニューを選択します。
表示された環境設定ダイアログの左側メニューから 【セキュリティ】 を選択します。そして、表示された画面の中の 【詳細環境設定】 ボタンをクリックすると、電子署名の詳細環境設定ダイアログが表示されます。
まずは 【検証】 タブをクリックし、その中の "検証方法" を調整します。"文書で指定された署名方法を使用、使用できない場合はデフォルトの方法を使用" を選択し、署名検証のディフォルト方法として "SignedPDF" を指定しておきます。
続いて 【作成】 タブをクリックします。そして "文書の署名および暗号化時に使用するデフォルトの方法" として "SignedPDF" を選択しておきます。
ここまで出来たら、いったん 【OK】 ボタンを押して、一般的な環境設定を終了します。
続いて、PDF 署名プラグインの設定を行います。
Adobe Acrobat 9.0 Standard のシステムメニュー 「編集」 の 「環境設定」 の中にある 「SignedPDF」 メニューを選択すると、PDF 署名プラグインに関する環境設定ダイアログが表示されます。
ここでは、署名に使用する鍵の取得場所や、印影情報の登録といったことが行えます。今回は、署名用の鍵は "公的個人認証 IC カード" とし、印影も自分で用意したものを指定しておくことにしました。なお、印影データは PDF で用意しておく必要があります。
その他の必要なソフトウェアをインストールする
法務省 PDF 署名プラグインを使用するためには、公的個人認証サービスクライアントソフトをインストールしたときに作成される "e-gov_app\load_path\default.dat" ファイルが必要となるようです。
公的個人認証サービスクライアントソフトは、公的個人認証サービス ポータルサイト からダウンロードすることができるようになっていました。ここから、平成 21 年 7 月 7 日時点で最新の、公的個人認証サービスクライアントソフト Ver 2 (JPKIAppli02-03.exe) をダウンロードして、インストールを行います。
インストールは表示される手順どおりに進めれば、特に難しいことなく完了します。
注意事項として、Windows Vista の 64 bit 版を使用している場合は、基本的には使用することができないようです。具体的には、電子署名を施そうとすると、次のようなエラーメッセージが表示されてしまいます。
ロード情報定義ファイル(C:\Program Files\Common Files\e-gov_app\load_path\default.dat)がオープンできません。
ただ、これはどうやら、64 bit 版の Vista に公的個人認証サービスクライアントソフトをインストールした場合、関連ファイルのインストールフォルダが、既定で "C:\Program Files (x86)\Common Files\" フォルダにインストールされるのが原因のようです。
法務省 PDF 署名プラグインは、関連ファイルが "C:\Program Files\Common Files\" フォルダにインストールされているものとして動作するので、上記のようなエラーとなってしまうような感じです。
これについては、管理者用のコマンドプロンプトを起動して、次のようにフォルダのシンボリックリンクを作成することで解消することができるようでした。なお、管理者用のコマンドプロンプト起動方法は、EZ-NET レポート: コマンドプロンプトを管理者特権モードで実行する の方に記してあります。
cd "C:\Program Files\Common Files\"
mklink /D e-gov_app "C:\Program Files (x86)\Common Files\e-gov_app"
これで、"C:\Program Files\Common Files\" にアクセスすると、実体の "C:\Program Files (x86)\Common Files\" にアクセスするようになり、法務省 PDF 署名プラグインが動作できるようになりました。
公的個人認証サービスクライアントプログラムを Java 実行環境へ登録する
Acrobat を用いての電子署名だけが目的ならこの作業は必要ありませんが、一部の機能は Java 実行環境が必須となっているそうです。
そのため、公的個人認証サービス ポータルサイトの JRE 実行環境の導入方法 (http://www.jpki.go.jp/e-apply/jre.html) を参考に Java 実行環境をインストールする必要があります。今回は、PC に既にインストールされていた Java 6 update 13 をそのまま使用することにしました。
なお、法務省オンライン申請システムを利用する場合には、Java のバージョンを厳格に指定されるようですので、それを利用する予定がある場合には、法務省オンライン申請システムが指定するバージョンをインストールするのが無難でしょう。
Java は 32 bit 版をインストールする必要があるようです。平成 21 年 7 月 13 日現在、64 bit 版の Java は公的個人認証サービスクライアントが見つけることができないので気をつけましょう。
また、インストール完了後、Java 実行環境への公的個人認証サービスクライアントプログラムを登録する必要があるとのことでした。
「すべてのプログラム」 の 「公的個人認証サービス」 の中の 「ユーティリティ」 フォルダから、「Java 実行環境への登録」 を選択します。すると、Java の実行環境に JPKI 利用者ソフトのプログラムを登録するか尋ねられるので、「はい」 を選択して登録作業を行います。
少しすると、"Java の実行環境に JPKI 利用者ソフトのプログラムを登録しました。" と表示され、これで登録作業は完了です。
この手続きにより、次のファイルが Java のインストールフォルダに登録されたようでした。他にも、公的個人認証サービスブリッジ認証局 (JPKIBCA) というのものも、併せてインストールされているようです。
JPKICryptINI.jar | C:\Program Files (x86)\Java\jre6\lib\ext\ |
---|---|
JPKIUserCertService.jar | C:\Program Files (x86)\Java\jre6\lib\ext\ |
JPKIUserCertServiceMain.jar | C:\Program Files (x86)\Java\jre6\lib\ext\ |
なお、この登録処理は、Java 実行環境 (JRE) のインストールやアップデートを行った際には、その都度実行する必要があるとのことなので、注意が必要です。
法務省 PDF 署名プラグインを用いて電子署名を実施する
法務省 PDF 書名プラグインの利用準備が整ったら、Adobe Acrobat 9.0 Standard 上で、簡単にデジタル署名を行うことができるようになります。
Adobe Acrobat 9.0 Standard を起動したら、ツールバーの 【署名】 から 【文書に署名】 を選択します。そうしたら、署名フィールドの作成手順となるので、書名を施したい領域を、マウスのドラッグアンドドロップで指定します。
後は、署名者情報として、名前や理由等を指定します。なお、パスワードには、公的個人認証サービス用の電子証明書を発行してもらった際に、役所で指定したパスワードを入力します。
必要事項を入力の上 【OK】 ボタンをクリックすれば、文書に電子署名が適用されます。住民基本台帳カードに記録された電子証明書が読み込まれ、15 秒程度で電子署名が完了しました。
なお、最後に "この製品では、検証はできません。Code=0x3f100001" と表示されますが、これは、インストールした法務省 PDF 署名プラグインに、施された電子証明書が正しいかどうかの検証機能が備わっていないために表示されるものです。
これ自体が電子署名に失敗したことを示すようなエラーではないので、気にしなくても大丈夫です。
公的個人認証用の電子証明書で行った電子署名の検証について
公的個人認証サービス用の電子証明書で施した電子署名は、法務省 PDF 署名プラグインや、標準の署名検証ツールでは、その正当性を自動的に確認することはできないようです。
電子署名自体は行われ、政府が発行した電子書名で署名され、その後の改変はないというところまで証明されることにはなるのですけど、とはいえ "正当性が確認できない" と通知されるのは少し気になるところなので、そのあたりについても少し調べておくことにしました。
法務省の PDF 書名プラグインは、三菱電機インフォメーションシステムズ株式会社 が製作した MistyGuard<SignedPDF> という、個人の証明書を内蔵する IC カードを用いて電子書名を行う機能を持ったソフトウェアから、署名検証機能を省いたもののようです。
そして、無償で利用することが可能な "SignedPDF Verifier" という署名の検証機能だけのソフトウェア 三菱電子署名検証ソフトウェア MistyGuard<SignedPDF Verifier> も提供されていましたので、それを試してみることにしました。
まず、SignedPDF Verifier (spdfv343.exe) をダウンロードしてインストーラを起動してみると、"SignedPDF がインストールされています、SignedPDF をアンインストールしてから SignedPDF Verifier をインストールしてください。" というメッセージが表示され、インストールが中止されてしまいました。
そこで、いったん SignedPDF 本体をアンインストールしてみたところ、SignedPDF Verifier のインストールを進めることができました。途中、どのソフトで使用するかをたずねられたので、"Adobe Reader 9.0" を選択しておくことにしました。
なお、その後に再度 SignedPDF 本体をインストールしようとすると "SignedPDF Verifier がインストールされています。SignedPDF(署名機能限定版)のインストールを終了します。" というメッセージが表示されるので、どちらか一方しかインストールすることができないようになっているようです。
ともあれ、SignedPDF Verifier のインストール完了後、Adobe Reader 9.1 を起動して電子署名の正当性を検証してみたところ、次のようなメッセージが表示されました。
検証に失敗しました。検証に利用できる上位証明書がありません。Code=0x3301ff08
どうやら、公的個人認証サービスとして発行された電子証明書を用いた電子書名では、少なくとも平成 21 年 7 月 7 日現在は、SignedPDF Verifier を用いても正当性判定を行うことはできない様子です。
正当性を確認できないだけで、不当であるわけでもないですので、特段問題はないのでしょうけれど。