DLLに自己署名をつけてみる

久々に署名をつけることにしたので、メモしておく。


ご存じのとおり、WindowsMobileでは一部のDLLやらは特権署名がついてないと
再起動時に実行に失敗して起動できない状態になります。
# いつからか文鎮化とか言われてますが、SIPの再起動失敗ぐらいで
# 文鎮とか馬鹿なこと言わないでほしいとレンガ作り職人は思います。


今回はリセットボタンが電池蓋の中にあるため、非常に面倒なので
署名をつけてしまいます。


幸い、うちにはWS2003の証明機関が入ってるのでさっくりと・・・。

http://証明機関がインストールされたサーバのFQDN/certsrv にアクセスして
詳細な要求を証明機関に送ります。


要求する証明書は「コード署名」
画面に表示されるままの状態で送信しちゃえばOKです。
証明書はローカルストアに格納されます。
署名を格納するCABを後で作るので、確認ついでにBase64形式(拡張子 cer)でエクスポートします。
ついでに証明書の拇印もコピーして適当なテキストにでもペーストしておきましょう。


では、署名付を開始します。
signtool.exe は検索すればすぐにダウンロードできるので問題ないでしょう。


Signtool.exe を signtool.exe signwizard のウィザードモードで起動して
署名をつけたいファイルを選択、あとは次へ次へ次へ・・・。
何にも入力しなくてもOKです。異常に簡単です。


署名付きのファイルができたところで、その署名を証明するための証明書をインストールします。
さっきエクスポートした証明書ファイルをテキストエディタで開いて最初の1行と最後の1行、
(スタート〜〜、エンド〜〜)を削除して、改行を全部削除します。
拇印をコピーしたものも間に2文字おきにスペースが入ってるのでスペースを全部削除します。


下準備ができたところで、ホーミンさんという方が運営しているブログから
ttp://geocities.yahoo.co.jp/gl/hou_ming_2
自己署名にかんする記事を探し出し、_setup.xml の書き方を掘り起こしてきてください。
# 必要十分で非常にシンプルなXMLでした。
# ありがとうございます。


さっき保存しておいた証明書の中身と拇印の文字列を上記のXMLに埋め込みます。
このときにUnicodeで保存するのは必ず確認してください。
確認しないとCabのインストールが失敗します。
# あぁ、すいません。エディタでまっすぐに書いて実際に失敗しました。


これができたらXMLをCABにします。
makecab.exe はたぶんローカルPCを検索すれば普通に出てくるんじゃないかな?
makecab.exe _setup.xml Cert.cab とすれば署名のインストールCAB完成。


てか、これを書いたところで証明機関が手元にあって好きに遊べる人がいるんだろうか?と疑問。。。
でもMSDNとかでWinサーバは手に入れやすいしね。