スキップしてメイン コンテンツに移動

[VB.NET]オレオレ証明書でSSL通信するための短絡的な解決法

VB.NETソフトウェアでサーバーと通信することはよくある事だと思いますが、最近はHTTPを使って明けっ広げに刺しに行くよりHTTPSを使って暗号化してこそこそやった方が時代の流れに即した感じですよね(違うか)。
いちいちテスト環境でSSL証明書を用意するのも面倒だということで、セキュリティ的には全くよろしくない方法で迂回できるので紹介します。



HTTPS通信するのも、HTTPとやることはソースコード上何も変わらず意識する必要はないですが、それは接続するサーバーが信頼出来る証明書を持つ場合の事。
テスト環境など、サーバーの設定が終わっておらず、オレオレ証明書しか持ってないサーバーに繋ぐ場合などはどうやっても繋がらないので早々に設定を終わらせるかSSLの認証をすっ飛ばすしか方法はない(と思われる)。

具体的には、出力画面に下のような文言が出た場合。

System.Net.WebException: 基礎になる接続が閉じられました: SSL/TLS のセキュリティで保護されているチャネルに対する信頼関係を確立できませんでした ---> System.Security.Authentication.AuthenticationException: 検証プロシージャによると、リモート証明書は無効です。


証明書の検証でつまづいているので、その部分をすっ飛ばしてみます。
イカソース
Imports System.Net
Imports System.Security.Cryptography.X509Certificates

    Private Function Callback(sender As Object, _
                                   certificate As X509Certificate, _
                                   chain As X509Chain, sslPolicyErrors As Security.SslPolicyErrors) As Boolean
        Return True
    End Function

このような、trueを返すだけの簡単な関数を用意して(引数だけはちゃんと合わせてあげる)、以下のようにイベントハンドラに登録する。
ServicePointManager.ServerCertificateValidationCallback = New Security.RemoteCertificateValidationCallback(AddressOf Callback)

以上です。

see also:
apacheで複数のSSL設定を行う


コメント

このブログの人気の投稿

wget vs curl - コマンドラインダウンロードツール頂上決戦

「wget」って便利ですよね。 僕はPHPerなので、PHPを使ってcronを回したい時は、今ならCLIモードを利用してバッチを書きますが、以前はそんな事できなかった。PHPでバッチ処理するには、wgetでlocalhostのURLを叩きに行くのが手っ取り早かったんです(もちろん、外からのアクセスへの対策も行いつつ)。 そんなこんなでよく使うwgetですが、先日node.jsをインストールした時に出てきた、curlというツールも同じような内容のツールだと感じました。 って事は、どっちが強いか決めるのがジャンプ世代じゃないですかね?

curl の基本的な使い方 -設定編-

今回のcurl TIPSは、curlをより日常的に使っていくためのHow toです。curlには、数多くのオプションが用意されていて、それらを組み合わせる事で様々な事が楽になるでしょう。サービス監視の自動化などにはまさにcurlの得意分野です。 今回は、curlを更に自分のものにしていくために大事なカスタマイズの部分を解説します。