VB.NETソフトウェアでサーバーと通信することはよくある事だと思いますが、最近はHTTPを使って明けっ広げに刺しに行くよりHTTPSを使って暗号化してこそこそやった方が時代の流れに即した感じですよね(違うか)。
いちいちテスト環境でSSL証明書を用意するのも面倒だということで、セキュリティ的には全くよろしくない方法で迂回できるので紹介します。
HTTPS通信するのも、HTTPとやることはソースコード上何も変わらず意識する必要はないですが、それは接続するサーバーが信頼出来る証明書を持つ場合の事。
テスト環境など、サーバーの設定が終わっておらず、オレオレ証明書しか持ってないサーバーに繋ぐ場合などはどうやっても繋がらないので早々に設定を終わらせるかSSLの認証をすっ飛ばすしか方法はない(と思われる)。
具体的には、出力画面に下のような文言が出た場合。
証明書の検証でつまづいているので、その部分をすっ飛ばしてみます。
イカソース
このような、trueを返すだけの簡単な関数を用意して(引数だけはちゃんと合わせてあげる)、以下のようにイベントハンドラに登録する。
以上です。
see also:
apacheで複数のSSL設定を行う
いちいちテスト環境で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設定を行う
コメント
コメントを投稿