

.NETのWebBrowserコントロールを使用したSSLクライアント認証が必要なページを表示するフォームをVB.NETで作成しています。.NET
Frameworkは4.5です。

フォームのプログラムは

[code]

    Me.webBrowserCtrl.Url = New Uri("https://xxxx/xxx/xxx.html")
    
[/code]

と作成しました。

Windows7＋InternetExplorer11の環境で、

  * IEにルートCA証明書とクライアント証明書をインストール
  * インターネットオプション→セキュリティで、対象ページのドメインを「信頼済みサイト」に追加
  * 続いて「信頼済みサイト」の「レベルのカスタマイズ」で「既存のクライアント証明書が１つしか存在しない場合の証明書の選択」を「有効にする」に設定

以上の設定をするとIEから対象ページにアクセスした時に「クライアント証明書の選択ダイアログ」が表示されないことを確認しました。  
その上で作成したフォームを起動すると正しく対象ページを表示することができました。

ところがWindowsServer2012R2＋InternetExplorer11の環境では、  
IEは上記環境のとおり動作するのですが、作成したフォームでは「Web ページへのナビゲーションは取り消されました」が表示されアクセスできません。  
Windows7環境でも「既存のクライアント証明書が１つしか存在しない場合の証明書の選択」を「無効にする」とした場合に同様の状態になりましたので、この設定がWindowsServer2012R2環境ではIEからWebBrowserコントロールに引き継がれないのでは？と推測しています。

WindowsServer2012R2＋InternetExplorer11の環境で、フォームアプリケーションでSSLクライアント認証が必要なページを表示する方法はあるでしょうか？


CC BY-SA 3.0
2015-02-05T06:54:10.543
5978
2015-02-05T08:15:14.303
2015-02-05T08:15:14.303
8089
8089
question
.net ssl internet-explorer
.NETのWebBrowserでSSLクライアント認証が必要なページを表示できない


自己解決しました。

WebBrowserコントロールの「ScriptErrorsSuppressed」プロパティをTrueにしていたのが原因のようです。  
このプロパティをFalseにすると、WindowsServer2012R2＋IE11でも無事動作しました（ちなみにプロパティに関係なくHTTPプロトコルの通常のWebページはアクセスできました）。

しかしながら、この「ScriptErrorsSuppressed」プロパティがTrueの場合に

  * Windows7＋IE11環境では通常のWebページおよびSSLクライアント認証必須ページ両方とも正常にアクセスできる。
  * WindowsServer2012R2＋IE11環境では通常のWebページは正常にアクセスできるが、SSLクライアント認証必須ページはアクセスできない。

という現象が発生する理由は分からないままです。  
今回はFalseで問題ありませんでしたが、Trueにする必要が出てきた場合を考えると頭が痛いです。


CC BY-SA 3.0
2015-02-05T08:13:16.740
5985
2015-02-05T08:13:16.740
8089
5978
answer