2010年3月18日木曜日

[VC#] ClickOnceのマニフェストに署名するためのテスト用の証明書を作成する

VC#のプロジェクトのプロパティでClickOnceのテスト用証明書を作成することができるのですが、証明書の内容が気に入らない(発行者とか期限など)場合、別な方法で証明書を作成して読み込ますという話です。

まず、証明書を作成するためにmakecert.exeというツールが必要なのですが、Expressをインストールした場合には、存在しないようです。Windows SDKに含まれているのでインストールします。開発環境によりますが、現在のところ「Windows SDK for Windows Server 2008 and .NET Framework 3.5」というのをインストールするのがよいと思います。

まずは、makecertでpvkとcerファイルを作ります。makecertのコマンドオプションは、msdnのドキュメント等にありますので、詳細はそちらを読んでください。おそらく、最小限で必要なものは、以下のようになると思います。

makecert -r -pe -n "CN=MyCompany" -sv MyCA.pvk MyCA.cer

次に作成したpvkとcerファイルからpfxファイルを作ります。これはpvk2pfxというコマンドを使います。これもWindows SDKに含まれています。このコマンドを使ってClickOnceの証明書として取り込むpfxファイルを作るときには、1つ注意点があります。それは、-poオプションを使って、出力用のパスワードを設定しておくことです。pvk2pfxコマンドの実行例は以下の通り。

pvk2pfx -pvk MyCA.pvk -spc MyCA.cer -pfx MyCA.pfx -po "パスワード"

このコマンドを実行したときにパスワードの入力を求められますが、それはmakecertで作成したときのパスワードです。-poで設定したパスワードは、VC#などでファイルを取り込むときに求められるパスワードとなります。

取り込みが成功すれば、プロパティ表示の中にmakecert作成時に設定したオプションの内容が表示されます。

0 件のコメント: