トップ回答者
ClickOnceアプリ発行時の署名について

質問
-
ClickOnceアプリの発行時に行うマニフェストへの署名についてです。
ClickOnceアプリの配布を考えているのですが、ベリサインのような機関から証明書を購入すべきか、自己生成型証明書(テスト証明書)でも十分なのかの判断に迷っています。
電子証明の仕組み自体がいまいち理解できているか自信がないので、アドバイスをいただければありがたいです。
参考になるような書籍やサイトがあれば、教えていただけると助かります。
以下、私が自分で調べて理解したと思った点とわからなかった点です。
・証明書には秘密鍵と公開鍵が含まれる。
・証明書には発行元と発行先の情報が含まれる。
・証明書を用いて署名すれば、署名したファイルの改竄を防止できる。(改竄された場合に検出できる)
・ClickOnceの仕組みでは証明書を用いてマニフェストファイルに署名する。
ここまでは、どこにでも書いてあるので確かだと思います。
署名という行為が、実際何をするのかよく分かってませんが(汗)
わからない点はここからです。
・マニフェストファイルに署名すると、アプリを構成する全ファイルの改竄を防止できる?
・自己生成型では、だれが発行したか確認できない?
今回のプロジェクトでは、ユーザ全員に発行元(会社)が実在することを明示します。
発行元の確認ができない(本当にその機関が存在するかどうか確認できない)だけで、構成ファイルが改竄されていないことが保証できるなら、今回の目的では自己生成型でも十分な気がします。
回答
-
えすとれど さんからの引用
・マニフェストファイルに署名すると、アプリを構成する全ファイルの改竄を防止できる?→YES。ClickOnceで配布するすべてのファイルは、ハッシュ値でチェックするためファイルの改ざんを防止できます。
えすとれど さんからの引用
・自己生成型では、だれが発行したか確認できない?→えっと「発行元を確認できません。」というメッセージを出したくないということでしょうか?
http://www.atmarkit.co.jp/fdotnet/clickonce/clickonce07/clickonce07_02.html
の「表示される警告メッセージの種類」という一覧表にあるとおり、「信頼されたルート証明機関」に登録された証明書でない限り表示されると思います。だから、各クライアントで証明書を「信頼されたルート証明機関」に登録する作業が必要になります。VeriSignなら最初から登録されているのでその作業は不要です。
ちなみにVS 2005の証明書だと「発信者」が自分のコンピュータ名になりますが、Makecert.exeを使えば好きな名前を指定できます。
以上、ご参考まで。
すべての返信
-
えすとれど さんからの引用
・マニフェストファイルに署名すると、アプリを構成する全ファイルの改竄を防止できる?→YES。ClickOnceで配布するすべてのファイルは、ハッシュ値でチェックするためファイルの改ざんを防止できます。
えすとれど さんからの引用
・自己生成型では、だれが発行したか確認できない?→えっと「発行元を確認できません。」というメッセージを出したくないということでしょうか?
http://www.atmarkit.co.jp/fdotnet/clickonce/clickonce07/clickonce07_02.html
の「表示される警告メッセージの種類」という一覧表にあるとおり、「信頼されたルート証明機関」に登録された証明書でない限り表示されると思います。だから、各クライアントで証明書を「信頼されたルート証明機関」に登録する作業が必要になります。VeriSignなら最初から登録されているのでその作業は不要です。
ちなみにVS 2005の証明書だと「発信者」が自分のコンピュータ名になりますが、Makecert.exeを使えば好きな名前を指定できます。
以上、ご参考まで。
-
なるほど。
Masahiko Isshiki さんからの引用 えすとれど さんからの引用
・マニフェストファイルに署名すると、アプリを構成する全ファイルの改竄を防止できる?→YES。ClickOnceで配布するすべてのファイルは、ハッシュ値でチェックするためファイルの改ざんを防止できます。
了解です。Masahiko Isshiki さんからの引用 えすとれど さんからの引用
・自己生成型では、だれが発行したか確認できない?→えっと「発行元を確認できません。」というメッセージを出したくないということでしょうか?
http://www.atmarkit.co.jp/fdotnet/clickonce/clickonce07/clickonce07_02.html
の「表示される警告メッセージの種類」という一覧表にあるとおり、「信頼されたルート証明機関」に登録された証明書でない限り表示されると思います。だから、各クライアントで証明書を「信頼されたルート証明機関」に登録する作業が必要になります。VeriSignなら最初から登録されているのでその作業は不要です。
やはり、クライアントで設定されている「信頼されたルート証明機関」に登録されていないと発行元は確認できないのですね。
了解です。
アドバイスありがとうございました。
参考になります。