2017-06-08 13 views
0

自己署名入り証明書を使用するHTTPSバインディングを持つIISアプリケーションがあります。証明書には、サーバーのホスト名、IPv4アドレス、およびIPv6アドレスのDNS名が含まれています。ローカルマシンの信頼されたルート証明機関のフォルダにあるクライアントマシンに証明書をインストールしました。 Webブラウザを使用して、証明書エラーのないホスト名と両方のIPアドレスを使用してサーバーに接続できます。また、サーバーに接続する必要のあるC#クライアントアプリケーションも作成しています。アプリケーションの設定で、ホスト名またはIPv4アドレスを指定すると、アプリケーションは正常に接続できますが、IPv6アドレスを指定すると例外が発生します。最も内側のメッセージは"The remote certificate is invalid according to the validation procedure."です。 HTTP要求を受け入れるようにサイトを設定すると、クライアントアプリケーションはIPv6を使ってうまく接続できます。IPv6アドレスを持つSSL証明書を信頼する

IPv6アドレスを使用する際にクライアントアプリケーションで証明書を信頼できるようにするにはどうすればよいですか?

編集:該当する場合は、HttpClientのPostAsyncメソッドを使用してリクエストを送信しています。

+0

C#アプリケーションがHTTPS上で実行されていませんか? –

+0

です。クライアントアプリケーションは、ホスト名またはIPv4アドレスを使用してHTTPS経由でサーバーに接続できますが、IPv6アドレスは使用できません。これは、Webブラウザを使用してHTTPS経由ですべてのオプションに接続できるという事実にもかかわらずです。 –

答えて

1

証明書には、サーバーのホスト名、IPv4アドレス、およびIPv6アドレスのDNS名が含まれています。

IPv4とIPv6アドレスは、DNS名(dNSName)として指定するのではなく、サブジェクト別名拡張子のiPAddressタイプとして指定してください。しかし、MSIEはこれをdNSNameと期待していることが知られていますが、これは間違っているため、dNSNameとiPAddressの両方を追加する必要があります。

まだアプリケーションに接続できない場合は、C#での証明書の検証、またはURLにIPv6アドレスを指定する(つまり異なる構文が予想される)バグかもしれません。証明書や特にIPv6内のIPアドレスを使用することは珍しいことではないため、C#とTLSライブラリで十分にテストされていない可能性があります。

関連する問題