玉木の暇つぶし

更新不定期の暇つぶし
某岡田君と更新回数の少なさを競うブログ

C# 自己署名証明書でhttps

2007-07-08 23:09:16 | 備忘録

 久々に備忘録です。C#のWebRequestクラスや、 WebClientクラスでhttpsプロトコルでサーバーと通信しようとしたらエラーが発生・・・。

 例外を調べてみると、

 「検証プロシージャによると、リモート証明書は無効です。」

 と言われてしまいました。

 これはどうやらSSL通信時の証明書が自己署名証明書なのが原因のよう、 最近のブラウザ(FFやIE7)でも自己署名証明書だと警告がでるものね・・・ということで、この例外を回避する方法をさがしたところ、 2つの方法を発見。

 .NET 1.1や.NET Compact Frameworkの場合

 サーバー証明書のポリシーを管理している「System.Net.ServicePointManager」のプロパティ 「CertificatePolicy」を設定し直す。
 具体的には、「ICertificatePolicy」インターフェースを実装したクラスを作り、メソッド 「CheckValidationResult」を定義する。このメソッドの中に認証ポリシーを記述する。そして、 「System.Net.ServicePointManager.CertificatePolicy」 へ作ったクラスのインスタンスを設定してやればOK

 詳しくは@ITのInserder .NET会議室のこちら
 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?forum=7&topic=15416

 .NET 2.0の場合

 「System.Net.ServicePointManager」クラスのプロパティ 「ServerCertificateValidationCallback」に今度はコールバックを設定する。
 
 詳しくは
 http://blogs.wankuma.com/mayuki/archive/2006/11/11/44696.aspx

 というわけで、めでたくhttpsで通信できるようになりました。

 Inserder .NET会議室さん、using Misuzilla.Wankuma;さんありがとうございました。あ、 あとMSDNも(笑)

 


最新の画像もっと見る