まずClickOnceを証明書で署名するには、「コードサイニング証明書(Authenticode対応Digital ID)」が必要となる。Visual Studio 2005(以降、VS 2005)のIDEでClickOnceの発行を行うと、ソリューション・エクスプローラに「<アセンブリ名>_ TemporaryKey.pfx」(例:「WindowsApplication1_TemporaryKey.pfx」)というファイルが追加されるが、このファイルがそれである。
ClickOnceで使用可能な証明書は、すべて「.pfxファイル(Personal Information Exchange形式:PKCS#12)」の必要がある。入手もしくは作成した証明書ファイルが、例えば「秘密鍵ファイル(.pvkファイル:PriVate Key Certificate)と公開鍵ファイル(.spcファイル:Software Publisher's Certificate)」という形式(PKCS#7)の場合は、この.pfxファイルに変換する必要がある。
【コラム】.pvkファイル(PKCS#7)から.pfxファイル(PKCS#12)への変換方法
この変換方法はいくつかあるが、ここではその一例としてマイクロソフトが提供している「PVK Digital Certificate Files Importer」を使った変換を紹介しよう。
(1)マイクロソフトのサイトから「PVK Digital Certificate Files Importer (英語版)」(pvkimprt.exe)をダウンロードする。ファイルは圧縮されているので、任意の場所(例えばデスクトップなど)に一時的に解凍し、生成されるpvkimprt.exeを実行すると、インストーラが起動する。インストール先は「C:\WINDOWS」などになっているのでそのままインストールすればよい。
(2)インストールし終わったら、コマンド・プロンプトを起動し、次のコマンドを実行する。
PVKIMPRT -PFX <任意のファイル名>.spc <任意のファイル名>.pvk
まずパスワードを聞かれるので、証明書ファイルを作成/入手したときに設定したパスワードを入力する。次に[証明書のエクスポート ウィザード]が起動するので、指示に従ってウィザードを進める。
「秘密キーをエクスポートするか?」の質問には「はい」を、エクスポートするファイル形式は「Personal Information Exchange - PKCS #12 (PFX)」を選択する(その選択肢の下にあるチェックボックスは[強力な保護を有効にする]のみにチェックを入れる)。最初に入力したものと同じ「秘密キーのパスワード」を入力し、最後にエクスポートするファイル名(拡張子は「.pfx」)を設定すれば完了だ。
ちなみに公開鍵ファイルが.spcではなく、.cerファイル(X.509証明書)であった場合も、そのまま.spcファイルの代わりに.cerファイルをPVKIMPRTコマンドに指定すればよい。
ちなみに証明書を入手する方法は、VS 2005が自動作成するものに以外に、主に次の3つがある(これらの作成方法や購入方方法については割愛する)。
≪・・ makecert.exeやVisual Studio 2005を使って手動で作成
≫≪・・ VeriSignなどの第三者機関から購入
≫≪・・ Windows Certificate Serverを使って作成
≫
2はインターネット向きで、3はイントラネット向きである。3の場合、作成した証明書をActive Directoryのグループ・ポリシーを使って各ユーザーのコンピュータに登録できる。これにより、自社のアプリケーションのみを直接起動(=自動的な権限の昇格)できるようになり、エンド・ユーザーの手間を軽減でき、コスト低減につながるだろう。
●VS 2005のIDEにおける証明書の設定
肝心の証明書の設定方法だが、次の画面のように、VS 2005のIDEから簡単に設定できる。
ClickOnceの権限要求が設定できるのは、部分信頼モードの場合のみである。
●VS 2005のIDEにおけるセキュリティ・モードの設定
完全信頼と部分信頼の選択も、VS 2005のIDE上で簡単に行える。具体的には次の画面を参考にしてほしい。
ここで、完全信頼にすべきか、部分信頼にすべきか、という疑問を持つだろう。理想をいえば、部分信頼にして細かくアクセス許可を制御する方が、セキュリティ管理を行うという観点では好ましいかもしれない。しかし実際には、例えばアプリケーションの機能拡張が数多く行われる場合、その拡張のたびにアクセス許可の設定を行わなければならず、部分信頼の選択は手間が多く現実的ではない。つまりほとんどのソフトウェア開発では、完全信頼を選択するのが妥当だといえる。部分信頼は、変化の少ない安定的(で小規模)なアプリケーションに向いているだろう。
ここでは、部分信頼で細かくアクセス許可を制御する方法についても見ておこう。
●部分信頼で細かくアクセス許可を制御する方法
部分信頼アプリケーションは、.NET FrameworkのCASによる制限がかかっているため、悪意のあるコードは(基本的に)実行できないというメリットがある半面、そのセキュリティ制限にプログラミングまでもが制限を受けてしまうという問題がある。ClickOnceは、この問題に対処するために、ClickOnceアプリ自体が必要とするCASの要件(前述の、ClickOnceアプリの権限要求)を自分自身で持つ仕組みを採用している。
ClickOnceアプリの権限要求はVS 2005のIDE上で設定できる。具体的には次の画面を参考にしてほしい。
最後に次期.NET Framework 3.5でClickOnceがどのように機能拡張される予定になっているのかを説明して本連載を締めくくるとしよう。
Copyright© Digital Advantage Corp. All Rights Reserved.