このページでは『PDF電子署名モジュール』について、よくお寄せ頂くご質問を紹介しています。
本製品は販売およびサポートが終了しております。後継製品は
LE:PAdES:Libです。
ICカードやUSBトークンの証明書を署名に使うことができますか?
WindowsのCryptoAPI(CAPI)対応のUSBトークンやICカードリーダであればできるはずです。但し、弊社で確認済みなのは、技研商事インターナショナル社が販売しているiKey1000と、ロジカルテック社のLOCK STAR-PKIと、AladdinのeToken Pro(MR1からの対応となります。)のみです。
上記以外のCAPI対応のUSBトークンで署名できない場合は、以下の2点をメーカーに確認してみてください。
- 最新のドライバを使っているか?
- その環境(OSとCAPI)での利用実績はあるか?
証明書にベリサインの「ドキュメントサイニング用 Digital ID」を使用することはできますか?
PDF 電子署名モジュールV1.3 MR1にて動作確認済みです。
ベリサインの「ドキュメントサイニング用 Digital ID」証明書は、PVKファイルとSPCファイルの2つで提供されます。(Windows XPの場合)PVKファイルが秘密鍵でSPCファイルが公開証明書になります。
これをWindows証明書ストアにインストールするにはMicrosoftのツールが必要になりますが以下より取得できます。(PVK/SPCファイルの説明もあります。)これでPDF電子署名モジュールからも利用可能になります。
http://www.microsoft.com/japan/msdn/vba/technical/pvk.htm
一旦Windows証明書ストアにインポートしてしまえば、PKCS#12ファイルとしてエクスポートも可能です。
RSA-2048bitの証明書に対応していますか?
PDF電子署名モジュールでは最初のバージョンから対応済みです。PdsSettingで生成する証明書でも RSA-2048bit に対応しています。
『PDF電子署名モジュール』では、PDFを生成する際にハッシュキーを生成し、秘密鍵で暗号化していると認識しております。この場合、公開鍵を受け取っていることになるのですが、これはどうやって入手しているのでしょうか?
署名値はPKCS#7形式でPDFの中に埋め込まれています。 PKCS#7バイナリの中にはX.509形式の証明書が含まれています。証明書の中には署名者の公開鍵が含まれています。
全般
PDF/Aをサポートしていますか?
『PDF電子署名モジュール』は、PDF/Aをサポートしていません。PDF/A準拠のPDFに署名はできますが、署名したPDFファイルはPDF/A準拠となりません。
『PDF電子署名モジュール』が対応している JDK のバージョンを教えてください。
『PDF電子署名モジュール』は、JDK 1.4.2 で動作確認をしています。
Java環境、.NET環境で署名フィールドを複数一度に作成することは可能ですか?
現時点でJavaインターフェイスと.NETインターフェイスでは、一度に複数の署名フィールドを作成することはできません。複数を生成するにはひとつずつ、複数回 addDigSIg の API をご使用ください。
陰影を透過(スタンプの下の文字や文面が見える状態)にしたいのですが、どのように設定したら良いでしょうか?
署名する引数の付け方が間違っています。署名フィールド名 "-sf FieldA" として署名しようとしているのでエラーになっています。-add の後ろがそのままフィールド名になります。次のように入力してみてください。
>PdsCmd -sign -add FieldA -in outputA.pdf -out outputB.pdf
『PDF電子署名モジュール』で作成した署名フィールドにAdobe Readerで電子署名を付ける事はできますか?
いいえ。Adobe Readerでは電子署名を付ける事はできません。Adobe Acrobatが必要です。(弊社では Acrobat 7以上で動作確認済みです)。
『PDF電子署名モジュール』の署名設定は、数百アカウント分作成するようなことは可能でしょうか。実用的な上限などの情報がありましたらお願いいたします。
『PDF電子署名モジュール』ではWindows証明書ストアに入れられた証明書+秘密鍵、またはPFX/PKCS#12ファイルを使って署名をします(PFX/PKCS#12はV1.2以降で対応)。
- Windows証明書ストアを使う場合、それがどれだけ保持できるかと言う話になります。基本的に数百レベルだと問題は無いと思います。但し、Windowsへのログイン・アカウントとWindows証明書ストアは1対1対応になりますので、その制限内となります。
- PFX/PKCS#12ファイルをAPIから直接使えば、Windowsへのログイン・アカウントの制限はなくなります。
またPDF電子署名モジュール自体の設定としてはXML形式ですので、数百レベルだと大きな問題にはならないと考えます。
コマンドライン
コマンドラインで次のように入力したのですが、署名することができません。なぜでしょうか?
>PdsCmd -sign -add -sf FieldA -in outputA.pdf -out outputB.pdf
署名する引数の付け方が間違っています。署名フィールド名 "-sf FieldA" として署名しようとしているのでエラーになっています。-add の後ろがそのままフィールド名になります。次のように入力してみてください。
>PdsCmd -sign -add FieldA -in outputA.pdf -out outputB.pdf
PFX ファイルを作成しましたが、コマンドラインでどうやって動かすのか判りません。
'-p12-file password' でパスワードを指定してください。PFXファイルが開けない時はエラーメッセージが表示されます。
>PdsCmd -sign -add FieldA -in outputA.pdf -out outputB.pdf -p12-file [password] [filepath]
コマンドラインにて署名実行を行っておりますが、スマートカード型の電子署名の場合、PINコードが設定されており、コマンドラインで実行をかけるとPINコード入力の要求がなされます。予め、PINコードをセットし一括で署名処理を行うことは可能でしょうか?
残念ながら対応できません。
スマートカードのPINの処理はWindowsのCryptoAPIからスマートカードのドライバが呼び出されることで行われます。つまりスマートカードのドライバ毎に処理が異なります。また、CryptoAPIから制御も出来ませんので対応できません。
署名の検証について
『PDF電子署名モジュール』で商用タイムスタンプを付けたのですが、Adobe Acrobat 8で署名を検証すると、時刻が不明になってしまいます。
この現象は、Acrobat/Adobe Readerでタイムスタンプ局の証明書の信頼性を検証できない状態になっている時に起きるようです。お使いのAcrobat 8(9も同じ)またはAdobe Readerの環境設定を変更して、Windows統合機能にチェックをしてみてください(下の図を参照)。
チェック後は以下の図のように表示されるはずです。
なお、Adobe Acrobat/Reader 7以前(のみ)では、日本の商用タイムスタンプの検証はできませんので、ご注意ください。
署名した PDF を Acrobat で確認したところ、「署名の完全性は不明です」となっていました。また、その説明として「署名者の ID は信頼済み証明書の一覧に見つからず、親証明書も信頼済み証明書ではないため不明です」とありました。どうすれば正常に認識されるのでしょうか?
次の三通りの方法があります。
- 自分で信頼する証明書に登録する。
たとえば Acrobat 8 なら、「署名のプロパティ」ダイアログから「概要」タブ-「証明書を表示」をクリックすると、「証明書ビューア」ダイアログが開きます。ここの「信頼」タブで「信頼済み証明書に追加」の設定をします。 ただし、これは利用する環境すべてで設定する必要があります。
- 信頼されている一般の認証局から証明書を購入する(有償です)
マイクロソフトが信頼するサードパーティによる商用の証明機関の証明書が便利です。たとえば、Windows 環境の Acrobat 8 なら、「環境設定」ダイアログから「セキュリティ」の「詳細環境設定」をクリックすると「電子署名の詳細環境設定」ダイアログが開きます。そこの「Windows 統合」タブのチェックを全てオンにしておけば信頼されます(Acrobat のデフォルト設定は Windows 証明書ストアを利用しない状態になっているため、この設定が必要となります)。
- その他、使用している証明書のルート証明書が標準で Windows 環境に入っていない場合は、必要なルート証明書を取得して自分で Windows の証明書ストアの「信頼されたルート証明書機関」にインポートする必要があります。
署名した PDF を Acrobat で確認したところ、「有効な証明済み」とはなっているのですが、「署名は有効ですが、署名者の ID が失効しているかどうかを確認できませんでした」という説明がついてしまいました。これはどうすれば解決できるのでしょうか?
これは電子署名モジュールの問題ではなく、CRL(失効した証明書のリスト)の取得に失敗している可能性が高いです。ネット環境として CRL 配布ポイントにアクセス可能かどうかを確認してください。認証局のサーバが一時的にメンテナンスを行なっている場合にもこのエラーが出ることがあります。この場合は、時間をおいて試すことで成功します。
日本認証サービス(JCSI)の SecureSign 証明書を使って署名をしました。Acrobat で閲覧する分には問題ないのですが、Acrobat の「署名のプロパティ」ダイアログから「証明書を表示」ボタンをクリックすると何の反応もなく、その後 Acrobat を終了することができなくなります。どうすればよいですか?使用しているのは Acrobat 8 です。
これは Acrobat 8 / Adobe Reader 8 のバグです。Acrobat 9 / Adobe Reader 9 にバージョンアップすることで解決するようです。詳細は以下の Adobe の「サポートデータベース」をご覧ください。
[233621]デジタル署名およびタイムスタンプ局証明書が表示されない
自己証明で署名を行い、作成されたPDFを別マシンに持っていた際に、証明書が無いため、署名の有効性が不明となります。この場合、署名自体に信頼がないとしても、PDFが変更されていないことが保証されていると考えてよいでしょうか?
無効の理由として「署名後、文書が変更されたか壊れています」と出なければ改変されていないと言う事になります。
ただし秘密鍵が流出して偽造されたかどうかの確認は、署名者が確認でき無いので保証できないと言う事になります。