TL; DR
- オンラインフォームを持っている
- 提出時にPDFが生成されます
- 問題:ブラウザ内からクライアント証明書を使用してPDFにデジタル署名するにはどうすればよいですか?
バックグラウンド
EUと米国(および私の国)には、デジタル署名(政府および政府が承認したCAによって発行されたクライアント証明書で実行)を法的拘束力のあるものにする法律があります。
現在、ユーザーが個人情報を送信するWebフォーム(紙のフォームに相当)があります。私はそのデータを使用してPDFを生成し、ダウンロード、印刷、署名、および郵送で送信します。控えめに言っても最適ではありません。
私のターゲットユーザーのほとんどはすでにこれらのクライアント証明書(オンラインバンキングと税金)を持っているので、これらの証明書を持つユーザーがPDFに署名できるようにして、合法的に入札し、郵便局への旅行を節約できるようにしたいと考えています。
問題
クライアント証明書を使用してPDFに署名するにはどうすればよいですか。これは秘密鍵を使用して行う必要があり、クライアントは公開鍵のみをサーバーに送信することを考慮に入れてください。明らかに、これはクライアント側で実行する必要がありますが、証明書にアクセスできないためJavascriptでは実行できません(Java、Flash、ActiveXでは実行できます)。私はこれのためのプロプライエタリソリューションをたくさん見つけましたが、それはフリーソフトウェア/オープンソースではありません。
WebアプリはPHP(Symfony2)とJavascriptで記述されており、nginxとphp-fpmを使用してUbuntuサーバーで実行されます。
車輪の再発明をせずにこれに取り組む方法について何か提案はありますか?これを行う無料/オープンライブラリ/アプレットを知っている人はいますか?
いくつかのリンク:
サーバー上でPDFにデジタル署名します (2011、asp.net、1つの回答が基本的なフローを説明しています)
CAからリリースされたデジタル証明書を使用してPDFドキュメントに署名するWebアプリケーション (2011年、同様の質問)