チケット #27801

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

登録: 2012-03-11 22:25 最終更新: 2012-06-18 22:27

報告者:
担当者:
チケットの種類:
状況:
完了
コンポーネント:
(未割り当て)
マイルストーン:
(未割り当て)
優先度:
5 - 中
重要度:
5 - 中
解決法:
修正済み
ファイル:
なし

詳細

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

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

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.

チケットの履歴 (8 件中 3 件表示)

2012-03-11 22:25 更新者: nishimoto
  • 新しいチケット "インストーラーに電子署名を導入する" が作成されました
2012-05-04 11:17 更新者: None
コメント
(このコメントは削除されました)
2012-05-04 11:20 更新者: nishimoto
コメント

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 更新者: nishimoto
コメント

他のチケットにも書きましたが、自己署名証明書つきの 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 更新者: nishimoto
コメント

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

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

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

以下の手順で、デジタル署名された 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 更新者: nishimoto
コメント

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

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

2012-06-18 22:27 更新者: nishimoto
  • チケット完了時刻2012-06-18 22:27 に更新されました
  • 状況オープン から 完了 に更新されました
  • 解決法なし から 修正済み に更新されました
コメント

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

添付ファイルリスト

添付ファイルはありません

編集

このチケットにコメントを追加するには、ログインが必要です » ログインする