トップ回答者
ClickOnceアプリケーションについて

質問
-
お世話になっております。
現在VB2010でClickOnceアプリケーションの作成を行っているのですが、発行時に指定する証明書についてお伺いしたいことがあります。
まず有効期限についてなのですが、この有効期限を延長(できれば無期限に)する方法はありますでしょうか?
また使用する証明書なのですが、現在ActiveDirectory証明書サービスから発行されるものと、VBで作成できるものの2通りを考えておりますが、どちらのほうが優れているなど、違いはあるのでしょうか?環境としてはドメイン管理されたイントラネット内で使用するアプリケーションを想定しております。
以上2点について、何か良い案があれば教えていただけませんでしょうか?よろしくお願いします。
回答
-
証明書の有効期限を延ばしたいのか、署名したアプリケーションの有効期限を延ばしたいのかにもよるのですが。
後者としては、有効期限を無期限にする方法ではありませんが、ベリサイン等の会社に証明書を発行してもらうと、タイムスタンプ サービスを受けられます。これは、ざっくりとは「有効期限が切れた後も、署名をしてから改竄等が発生していないことを確認し、署名されたアプリケーションを有効なものとして確認ができる」ようになるサービスです。
https://www.verisign.co.jp/codesign/help/faq/210004/
こういったサービスを利用すると、すくなくともWindowsがタイムスタンプ・サービスをサポートし、タイムスタンプサービスの提供会社が提供し続ける限りは、署名を有効なものとして再署名を行う必要なくアプリケーションを配布し続けることができます。
前者については、基本的に無理です。理由の1つとしては、暗号化のアルゴリズムが解読される危険性があるため、長期間の有効期限を設定すると証明書の秘密キーが解読されてしまい、安全性等がなくなるためです。解読に3年かかる暗号化方式の証明書であれば、3年以上の期間にすると有効期間中に解読できることになり、第三者が複製を作ることができるようになってしまいます。そうすると、証明書が意味のないものになってしまうため、3年未満にしか設定できないわけですね。
-
まず有効期限についてなのですが、この有効期限を延長(できれば無期限に)する方法はありますでしょうか?
私が行っている運用は、ClickOnceアプリケーションをWebサーバーに発行する際に、有効期限が切れていたら発行できませんので、「あ~、もう1年経ったか」と思い、Visual Studioで新しい証明書を作成します。この作業はとても簡単です。面倒と言えば面倒ですが、最短でも1年間はこの作業をする必要がないわけですから、さほど苦になりません。
そういうわけで、証明書に関しては特に困っておらず調査していませんので、残念ながらこれ以上の知識を私は持っていません。ただ、無期限にはするのはおそらく無理だと思います。今でこそ新しい証明書をVisual Studioから簡単に作成できますが、以前はそのようなことができず、Visual Studioとは別で行う必要がありましたが、そのような面倒な作業を強いられた当時から、無期限にしたり、無期限とは言わないまでも数年に設定するなどという話題に触れたことがありません。以上、まとめるとテスト証明書に関しては特に気にしていません。ClickOnceで発行する際に、証明書の有効期限が切れていたら、その時にVisual Studioで新規に作成すれば良いという感覚です。実際これで困っていませんが、困っていないからといってベストな方法であるとは限りません。こうやるとより良いよという方法があれば、私も教えていただきたいと思います。
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
すべての返信
-
まず有効期限についてなのですが、この有効期限を延長(できれば無期限に)する方法はありますでしょうか?
私が行っている運用は、ClickOnceアプリケーションをWebサーバーに発行する際に、有効期限が切れていたら発行できませんので、「あ~、もう1年経ったか」と思い、Visual Studioで新しい証明書を作成します。この作業はとても簡単です。面倒と言えば面倒ですが、最短でも1年間はこの作業をする必要がないわけですから、さほど苦になりません。
そういうわけで、証明書に関しては特に困っておらず調査していませんので、残念ながらこれ以上の知識を私は持っていません。ただ、無期限にはするのはおそらく無理だと思います。今でこそ新しい証明書をVisual Studioから簡単に作成できますが、以前はそのようなことができず、Visual Studioとは別で行う必要がありましたが、そのような面倒な作業を強いられた当時から、無期限にしたり、無期限とは言わないまでも数年に設定するなどという話題に触れたことがありません。以上、まとめるとテスト証明書に関しては特に気にしていません。ClickOnceで発行する際に、証明書の有効期限が切れていたら、その時にVisual Studioで新規に作成すれば良いという感覚です。実際これで困っていませんが、困っていないからといってベストな方法であるとは限りません。こうやるとより良いよという方法があれば、私も教えていただきたいと思います。
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
-
証明書の有効期限を延ばしたいのか、署名したアプリケーションの有効期限を延ばしたいのかにもよるのですが。
後者としては、有効期限を無期限にする方法ではありませんが、ベリサイン等の会社に証明書を発行してもらうと、タイムスタンプ サービスを受けられます。これは、ざっくりとは「有効期限が切れた後も、署名をしてから改竄等が発生していないことを確認し、署名されたアプリケーションを有効なものとして確認ができる」ようになるサービスです。
https://www.verisign.co.jp/codesign/help/faq/210004/
こういったサービスを利用すると、すくなくともWindowsがタイムスタンプ・サービスをサポートし、タイムスタンプサービスの提供会社が提供し続ける限りは、署名を有効なものとして再署名を行う必要なくアプリケーションを配布し続けることができます。
前者については、基本的に無理です。理由の1つとしては、暗号化のアルゴリズムが解読される危険性があるため、長期間の有効期限を設定すると証明書の秘密キーが解読されてしまい、安全性等がなくなるためです。解読に3年かかる暗号化方式の証明書であれば、3年以上の期間にすると有効期間中に解読できることになり、第三者が複製を作ることができるようになってしまいます。そうすると、証明書が意味のないものになってしまうため、3年未満にしか設定できないわけですね。
-
だいぶ前の事なので質問者さんはご覧になっているかわかりませんが、
> であればいっその事、証明書を使用せずアプリケーションを発行しようかとも考えているのですが、インストール時にセキュリティ警告が表示される以外に何か問題はありますか?
使用せずに発行したとしても、開発用の証明書が勝手にくっついて発行されませんか?しかも有効期限が1年のやつが。
無期限は無理なんでしょうけど、なるべく長期にしたいのであれば、適当に作ってしまえば良いと思います。
コマンドプロンプトで
"C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\makecert.exe" -r -pe -n "CN=サンプル" -sv sampleCA.pvk sampleCA.cer "C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\pvk2pfx.exe" -pvk sampleCA.pvk -spc sampleCA.cer -pfx sampleCA.pfx -pi "samplepassword"
とかやると2040/1/1が有効期限の証明書ができるので、これを指定して発行してあげれば良いと思います。
また、
> インストール時にセキュリティ警告が表示される
のは、勝手に作った証明書が信頼されていないから出るので、上記で作った証明書をクライアントの「信頼出来るルート証明書」に登録すれば出てこなくはなります。
# それで良いのか、っていうのは別問題- 編集済み mars12 2013年6月17日 7:43 表示がおかしかった