掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
winhttpオプジェクトから、sslアクセス (ID:100153)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> [-2147012858 The host name in the certificate is invalid or does not match] エラーメッセージのとおりですが、細かい説明を端折って書くと、要するに URL のサーバ名と証明書のサイト名が一致していなかった、という意味です。 たとえば、verisign のサイトに、https://www.verisign.co.jp/ ではなく、IP 指定の https://211.133.252.101/ でアクセスした場合に、CN(Common Name)が不一致ということで セキュリティの警告が出ますよね。それがエラーとなって表れているわけです。 あるいは、そもそも別サーバ向けに発行された証明書なのに、それを偽って 別サーバで流用している場合にも、同じエラーとなります。 > というエラーになってしまいました。 サイト名の偽証は、詐欺サイトと誤解を受けても文句が言えないところなので、本来は プログラム側で「無視」するのではなく、サーバ自体の設定を見直すべきなのですけれどね…。 > まる24時間webを検索したのですが WinHttpRequest オブジェクトの仕様なら、まずは SDK を見ると良いですよ。 http://msdn2.microsoft.com/en-us/library/aa384106%28VS.85%29.aspx で。今回の場合は、先に指定した SslErrorFlag_UnknownCA だけでなく、 SslErrorFlag_CertCNInvalid のフラグ( = &H1000&)も、一緒に指定してやれば OK です。 このフラグは、「Common Name が違っていた場合のエラー」を表しますので、 先のサンプルのように、WinHttpRequestOption_SslErrorIgnoreFlags オプションに 渡すと、SSLエラーを「無視(Igonre)」指定するという意味になります。 > or の用例がわかりません。 いわゆる「ビットフラグ」と呼ばれるものですが、その言葉の意味は分かりますか? 使い方としては、追加したいフラグが 2 つあるなら flag = WinHttp.Option(WinHttpRequestOption_SslErrorIgnoreFlags) flag = flag Or ビットフラグ1 flag = flag Or ビットフラグ2 WinHttp.Option(WinHttpRequestOption_SslErrorIgnoreFlags) = flag のように書きます。 逆に、既に指定済みのフラグを解除したいなら、Or で繋ぐかわりに flag = flag And Not ビットフラグ のように書けば OK です。 また、特定のフラグが指定されているかどうかを判断するには、 If (flag And ビットフラグ) = 0 Then MsgBox "指定されていない" Else MsgBox "指定されている" End If のようにして判断できます。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.