Windows 7 からアップグレードした後、IIS 10 で https プロトコルが機能しない

Windows 7 からアップグレードした後、IIS 10 で https プロトコルが機能しない

IIS 7.5 で ASP アプリケーションを実行しています。Windows 7 の EoL のため、Windows 10 と IIS 10 にアップグレードする必要がありました。https が使用されている場合を除いて、ASP サイトやその他の Web サイトが機能するようになったことを除いて、すべてが正常に機能しているように見えました。これまでのところ、Firefox では PR_CONNECT_RESET_ERROR、Chrome では ERR_SSL_PROTOCOL_ERROR、Edge では「このページにアクセスできません」というエラーが返されます。

いくつかの回答では、ARR Rewrite モジュールを指摘していますが、これをアンインストールして再起動後に更新バージョンを再インストールしましたが、結果は同じでした。結局、これをアンインストールして (もう必要ありません)、再起動しました。Windows の機能を削除して IIS を再インストールし、再起動してもう一度 IIS を再インストールしました。すべての証明書を削除して自己署名証明書を作成しましたが、同じ問題が発生しました。最後に、その Web サーバーからすべての Web サイトを削除し、既定のディレクトリ (html ファイルと 2 つの画像を含む wwwroot) に新しい Web サイトを作成しましたが、http プロトコルが使用されている限り表示されますが、https では表示されません (同じエラー)。このガイドIIS 7 用ですが、あまり効果がありません。また、再インストール後に IUSR のフォルダーへのアクセス許可を取り消して再度付与します。最後に、ウイルス対策の SSL フィルタリングを無効にしましたが、違いはありませんでした。

もともと使用されていた証明書は、openssl を使用して社内で作成され、会社全体のルート証明書、中間証明書、およびアップグレードまで正常に機能していたマシン証明書を生成しました。現在、前述したように、自己署名証明書を使用しても、最も単純なコンテンツを提供するのに使用されているどのブラウザーでも機能しません。何をチェックすればよいかわかりません。

これはIISから取得したトレースです

 #Software: Microsoft Internet Information Services 10.0
 #Version: 1.0
 #Date: 2020-01-20 20:12:22
 #Fields: date time s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) cs(Referer) sc-status sc-substatus sc-win32-status time-taken
 2020-01-20 20:12:22 192.168.1.100 GET / - 80 - 192.168.1.100 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64;+rv:73.0)+Gecko/20100101+Firefox/73.0 - 200 0 0 2687
 2020-01-20 20:12:22 192.168.1.100 GET /iisstart.png - 80 - 192.168.1.100 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64;+rv:73.0)+Gecko/20100101+Firefox/73.0 http://devmachine.company.local/ 200 0 0 12
 2020-01-20 20:12:22 192.168.1.100 GET /favicon.ico - 80 - 192.168.1.100 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64;+rv:73.0)+Gecko/20100101+Firefox/73.0 - 404 0 2 5
 #Software: Microsoft Internet Information Services 10.0
 #Version: 1.0
 #Date: 2020-01-20 12:26:37
 #Fields: date time s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) cs(Referer) sc-status sc-substatus sc-win32-status time-taken
 2020-01-20 20:12:22 ::1 GET / - 443 - ::1 Microsoft+Windows+Network+Diagnostics - 200 0 0 996
 2020-01-20 20:12:22 192.168.1.100 HEAD / - 80 - 192.168.1.100 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/79.0.3945.130+Safari/537.36 - 200 0 0 19
 2020-01-20 20:27:38 192.168.1.100 GET / - 80 - 192.168.1.100 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/79.0.3945.130+Safari/537.36 - 200 0 0 8
 2020-01-20 20:27:38 192.168.1.100 GET /iisstart.png - 80 - 192.168.1.100 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/79.0.3945.130+Safari/537.36 http://devmachine.company.local/ 200 0 0 50
 2020-01-20 20:27:38 192.168.1.100 GET /favicon.ico - 80 - 192.168.1.100 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/79.0.3945.130+Safari/537.36 http://devmachine.company.local/ 404 0 2 19

ご覧のとおり、http のみが機能しました (時計に問題があるかどうかを確認するために別の試みで時間を変更しましたが、問題はありませんでした。Chrome は http でエラーを報告したため、時計は正常でした)。ただし、https の痕跡はありません。

答え1

私は自分で答えを見つけました。問題は、何年もかけて暗号が変更されましたが、Windows 2012 および 2016 サーバーに対してのみ適切な更新が行われ、古いバージョンには行われず、Windows 10 にはすでにそれらのエントリがあり、それに応じて更新されていたことです。その結果、アップグレード後に IIS で SSL が処理される方法に影響を与える、存在しないレジストリ エントリがいくつかあります。これが当てはまるかどうかをテストするには、Firefox で新しいタブを開き、about:config と入力して security.tls.version.max を検索し、3 に設定して保存します。Web サイトにアクセスしようとすると、機能するか、少なくとも証明書が正しくないことを示す通常の警告が表示されます。そうであれば、Firefox で変更を元に戻し、示されている解決策を実行します。ここ; いずれにせよ、これらのページが忘れられたり削除されたりした場合に備えて、ここで説明します。

問題全体は、Web サーバーのセキュリティを強化するために以前に一部の変更を行ったかどうかに応じて作成または変更する必要がある次のエントリのレジストリを更新することで修正されます。

WinHTTP の更新

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp\
  DefaultSecureProtocols = (DWORD): 0xAA0
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp\
  DefaultSecureProtocols = (DWORD): 0xAA0

まだ行っていない場合はTLS 1.2を有効にしてください

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727]
  "SystemDefaultTlsVersions" = dword:00000001
  "SchUseStrongCrypto" = dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319]
  "SystemDefaultTlsVersions" = dword:00000001
  "SchUseStrongCrypto" = dword:00000001

アプリケーションが64ビットOS上の32ビットの場合は、

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v2.0.50727]
  "SystemDefaultTlsVersions" = dword:00000001
  "SchUseStrongCrypto" = dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v4.0.30319]
  "SystemDefaultTlsVersions" = dword:00000001
  "SchUseStrongCrypto" = dword:00000001

TLS 1.2 を有効にするためにまだ行っていない場合は、SCHANNEL プロトコルを構成します。

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client]
  "DisabledByDefault" = dword:00000000
  "Enabled" = dword:00000001

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server]
  "DisabledByDefault" = dword:00000000
  "Enabled" = dword:0xffffffff

従来のアプリケーション/ブラウザで TLS 1.1 をサポートする場合は、TLS 1.2 と同じであることを確認してください。SSL などの弱い暗号を無効にし、可能であれば TLS 1.0 (クライアントとサーバーで DisableByDefault = dword:00000001 Enabled=00000001。これらのエントリは、TLS 1.1 および TLS 1.2 と同じレベルの TLS 1.0 にあります) を有効にして、コンピュータを再起動することをお勧めします。

すべてがうまくいけば、アプリケーションは再び動作するか、少なくとも自己署名証明書によるセキュリティ リスクの通常のメッセージが表示されます。これがお役に立てば幸いです。問題解決に役立つ場合は、ぜひ投票してください。よろしくお願いします。

注: ここで提供されるスクリプトを使用して、適切な regedit 値を設定/クリアできます。https://www.hass.de/content/setup-microsoft-windows-or-iis-ssl-perfect-forward-secrecy-and-tls-12

答え2

この記事についていろいろ調べた後、投稿する必要性を感じました。基本的にはその通りです。

いくつか問題があったので、提案します。

  1. MS サイトの提案の下部にあるスクリプトを使用します。管理者として実行する必要があります。
  2. スクリプトが機能しない場合は、作成したキーをすべて削除してから、スクリプトを再度試してください。

最後に、Server 2019 へのアップデートで問題が発生し、IIS サーバーが SQL 2012 サーバーに接続している場合は、SP4 にパッチが適用されていることを確認してください。 :)

関連情報