Ticket #27801

インストーラーに電子署名を導入する

Open Date: 2012-03-11 22:25 Last Update: 2012-06-18 22:27

Reporter:
Owner:
Status:
Closed
Component:
(None)
MileStone:
(None)
Priority:
5 - Medium
Severity:
5 - Medium
Resolution:
Fixed
File:
None

Details

インストーラーの実行ファイルに電子署名を行うための作業をまとめます。

最初に行った実験は以下のとおりです。

Windows SDK の makecert などを実行できるコマンドプロンプトを開く。

http://www.nvda-project.org/wiki/UsingASelfSignedCertificate

の手順どおりに作業を行い、selfsigned.pfx を作る。

scons installer certFile=selfsigned.pfx certPassword=***** publisher=nvdajp release=1 version=2012.1beta1

やってみると以下のエラーが出る。

Traceback (most recent call last):
  File "setup.py", line 189, in <module>
    + getRecursiveDataFiles("nvdajptext", "nvdajptext", excludes=("*%s"%sourceModExtention,"*%s"%compiledModExtention))
  File "c:\Python27\lib\distutils\core.py", line 152, in setup
    dist.run_commands()
  File "c:\Python27\lib\distutils\dist.py", line 953, in run_commands
    self.run_command(cmd)
  File "c:\Python27\lib\distutils\dist.py", line 972, in run_command
    cmd_obj.run()
  File "c:\Python27\lib\site-packages\py2exe\build_exe.py", line 243, in run
    self._run()
  File "c:\Python27\lib\site-packages\py2exe\build_exe.py", line 312, in _run
    self.create_binaries(py_files, extensions, dlls)
  File "c:\Python27\lib\site-packages\py2exe\build_exe.py", line 572, in create_binaries
    arcname, target.script)
  File "c:\Python27\lib\site-packages\py2exe\build_exe.py", line 898, in build_executable
    mfest, mfest_id = self.build_manifest(target, src)
  File "setup.py", line 90, in build_manifest
    target.uac_info = (target.uac_info[0], True)
TypeError: 'NoneType' object is not subscriptable
scons: *** [dist_installer] Error 1
scons: building terminated because of errors.

Ticket History (3/8 Histories)

2012-03-11 22:25 Updated by: nishimoto
  • New Ticket "インストーラーに電子署名を導入する" created
2012-05-04 11:17 Updated by: None
Comment
(This comment has been deleted)
2012-05-04 11:20 Updated by: nishimoto
Comment

NVDA 日本語版における電子署名の必要性について検討しています。

電子署名がないために、Vista 以降では NVDA 日本語版のインストール時に「余分な確認ダイアログ」が必要になっているのはご承知の通りです。

本家 2012.2 に向けて行われている Windows 8 Metro アプリの読み上げが、システムの制約で、リリース版のインストール環境(ポータブル環境でないこと)でしかサポートされない、ということが、いま翻訳中の文書に書かれています。

また、チケット28235やチケット28326も、NVDA の権限の影響と思われます。

前述した本家の Wiki の記事は「これはオレオレ認証のやり方で、開発者のマシン以外では無効だよ」と書かれています。

証明書を取得してプログラムに組み込むことについて、すこし情報を集めました:

  • ぼっちな在宅プログラマーの開発覚書 Windows でデジタル証明書を作成しプログラムに組み込む http://bit.ly/IwfghL
  • デジタル署名のまとめ(Vista x64対応) http://bit.ly/II2huy
  • 窓の杜 - 【NEWS】GMOグローバルサイン、デジタル署名の証明書発行サービスを個人開発者向けに拡大 http://bit.ly/L1CkFn

かつては法人でないと証明書が取れなかったという話です。

GMOグローバルサイン http://jp.globalsign.com/service/?navi=service

  • コードサイニング証明書 ソフトウェアに電子署名を行う電子証明書です。MS Authenticode対応 ActiveX対応 価格 年額59,850円

ご意見をお聞かせください。

2012-05-05 15:13 Updated by: nishimoto
Comment

他のチケットにも書きましたが、自己署名証明書つきの 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)にインストールしようとしたところ、「次の不明な発行元からのプログラム・・・」と表示されたので、配布ファイルとしては不適切であることも確認できました。

2012-05-05 18:37 Updated by: nishimoto
Comment

本家の情報を補足します:

  • 2012年4月20日に nvda-dev に Michael Curran 氏が投稿した発言によると、本家は main 5120 からスナップショットにデジタル署名を導入したとのことです。目的は(やはり) UIAccess 特権のテストを行うため。
  • 本家チケット 1800 1809 などによると、UIAccess 特権がない(デジタル署名がない)場合は Windows 8 Metro アプリの実行中に NVDA メニューを開くことができません。
2012-05-06 21:13 Updated by: nishimoto
  • Owner Update from (None) to nishimoto
Comment

デジタル署名だけ別のマシンで行う(別の方に依頼する)ことが可能か、試しました。

以下の手順で、デジタル署名された launcher を作ることに成功しました。

  • scons launcher certFile=selfsigned.pfx ... で自己署名証明書をつけていったんビルドする
  • dist/*.exe (全部で4つある)を別のマシンにコピーしてデジタル署名を上書きする
  • 更新された実行ファイルを元のマシンの dist/* に戻す
  • scons launcher の最後の作業だけをコマンドプロンプトから実行しなおす。具体的には "C:\Program Files (x86)\NSIS\makensis.exe" ... launcher\nvdaLauncher.nsi
  • output の中に新しい launcher ができる。

このファイルを Windows 8 CP x86 にインストールしたところ、Metro アプリの実行中に NVDA-N でメニューが開くようになりました。

2012-05-28 16:51 Updated by: nishimoto
Comment

以下のチケットはこの問題に関係があると考えられます。

チケット 24373 windows vistaにおいて、UACが読み上げられない http://sourceforge.jp/ticket/browse.php?group_id=4221&tid=24373

2012-06-18 22:27 Updated by: nishimoto
  • Resolution Update from None to Fixed
  • Status Update from Open to Closed
  • Ticket Close date is changed to 2012-06-18 22:27
Comment

2012.2.1jp でデジタル署名を導入しました。

Attachment File List

No attachments

Edit

Please login to add comment to this ticket » Login