Windows Mobileのカスタマイズで鬼門になりやすい自己署名ですが、VisualStudioのインストールが必要であったり、紹介されているツールが古く、そのままではうまくいかないなど、とても敷居の高いものになっています。なんちゃってモバイラーとしては、ネットに繋がっていて自由に使えるPCがあれば「いつでもどこでも」署名がつけられるのが理想ですので、自己署名環境の簡単構築法を記録しておきます。以下の通りです。
ここを参考に、PSDK-x86.exeを実行してPlatformSDKのうち、Mircosoft Cryptography Tools以外は最小になるようにインストールします。CAPICOM.DLL以外の必要なファイルは、C:\Program Files\Microsoft Platform SDK\Binにあると思います。CAPICOM.DLLが無い場合は、ここからダウンロードできます。あと、自己署名証明書のcabを作るのに、makecab.exeが必要になりますが、大抵どこかに入っています。道具が揃ったところで、下準備開始です。コマンドラインから以下を実行します。foo…やhogehoge…は適当に変更してください。mc.batなどとバッチファイルにしておくと、とても楽です。
makecert -a sha1 -b 01/01/2003 -e 12/31/2099 -cy authority -eku 1.3.6.1.5.5.7.3.3 -sv fooCA.pvk -r -n "CN=foo" fooCA.cer cert2spc fooCA.cer fooCA.spc pvk2pfx -pvk fooCA.pvk -spc fooCA.spc -po hogegepasswd -pfx fooCA.pfx -f
ここまでで、下準備は完了です。ここから証明書cabの作成に入ります。出来上がった、fooCA.cerをエクスプローラーから開きます。
- 詳細タブの拇印をコピーして空白を取り除いたものを「拇印」とします。
- 詳細タブの「ファイルにコピー」ボタンから、証明書を「Base 64 encoded X.509」形式でエクスポートします。
- エクスポートしたファイルの2行目から12行目を「証明書」とします。
ここから、証明書cabの作成です。
<wap-provisioningdoc> <characteristic type="CertificateStore"><characteristic type="Privileged Execution Trust Authorities"> <characteristic type="拇印"> <parm name="EncodedCertificate" value="証明書" /> </characteristic></characteristic></characteristic> <characteristic type="CertificateStore"><characteristic type="SPC"> <characteristic type="拇印"> <parm name="EncodedCertificate" value="証明書" /> <parm name="Role" value="222" /></characteristic></characteristic> </characteristic></wap-provisioningdoc>
上の、「拇印」、「証明書」の部分をそれぞれ前段で作成したものに置き換えて、ファイル名「_setup.xml」として保存します。
makecab _setup.xml foo_cert.cab
これで、証明書cabの完成です。実行ファイルへの署名は
signtool sign /f fooCA.pfx /p hogegepasswd 実行ファイル名
という感じです。たったこれだけ。