インストーラーに電子署名を導入する
NVDA 日本語版における電子署名の必要性について検討しています。
電子署名がないために、Vista 以降では NVDA 日本語版のインストール時に「余分な確認ダイアログ」が必要になっているのはご承知の通りです。
本家 2012.2 に向けて行われている Windows 8 Metro アプリの読み上げが、システムの制約で、リリース版のインストール環境(ポータブル環境でないこと)でしかサポートされない、ということが、いま翻訳中の文書に書かれています。
また、チケット28235やチケット28326も、NVDA の権限の影響と思われます。
前述した本家の Wiki の記事は「これはオレオレ認証のやり方で、開発者のマシン以外では無効だよ」と書かれています。
証明書を取得してプログラムに組み込むことについて、すこし情報を集めました:
かつては法人でないと証明書が取れなかったという話です。
GMOグローバルサイン http://jp.globalsign.com/service/?navi=service
ご意見をお聞かせください。
他のチケットにも書きましたが、自己署名証明書つきの scons に成功しました。
使ったバージョンは lp:nvdajp 4235 です。
秘密鍵のパスワードをつけない方法でやったらうまくいきました。
del selfcert.* makecert -r -n "CN=selfsigned" -sv selfsigned.pvk selfsigned.cert cert2spc selfsigned.cert selfsigned.spc pvk2pfx -pvk selfsigned.pvk -spc selfsigned.spc -PFX selfsigned.pfx certutil -addstore root selfsigned.spc scons launcher certFile=selfsigned.pfx publisher=nvdajp release=1 version=dummy
細かいことはこちらに書きました。 http://ja.nishimotz.com/nvdajp_certfile
ちなみに scons で使ったマシンとは違うマシン (Windows 8 CP x86 JP)にインストールしようとしたところ、「次の不明な発行元からのプログラム・・・」と表示されたので、配布ファイルとしては不適切であることも確認できました。
デジタル署名だけ別のマシンで行う(別の方に依頼する)ことが可能か、試しました。
以下の手順で、デジタル署名された launcher を作ることに成功しました。
このファイルを Windows 8 CP x86 にインストールしたところ、Metro アプリの実行中に NVDA-N でメニューが開くようになりました。
以下のチケットはこの問題に関係があると考えられます。
チケット 24373 windows vistaにおいて、UACが読み上げられない http://sourceforge.jp/ticket/browse.php?group_id=4221&tid=24373
2012.2.1jp でデジタル署名を導入しました。
インストーラーの実行ファイルに電子署名を行うための作業をまとめます。
最初に行った実験は以下のとおりです。
Windows SDK の makecert などを実行できるコマンドプロンプトを開く。
http://www.nvda-project.org/wiki/UsingASelfSignedCertificate
の手順どおりに作業を行い、selfsigned.pfx を作る。
やってみると以下のエラーが出る。