web-dev-qa-db-ja.com

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

ASPアプリケーションがIIS 7.5で実行されています。Windows7のEoLのため、Windows 10にアップグレードする必要があり、IIS 10. https://が使用されている場合を除いてASPサイトまたは他のWebサイトが機能することを除いて、すべてが適切に見えました。これまでのところ、FirefoxはPR_CONNECT_RESET_ERROR、ChromeはERR_SSL_PROTOCOL_ERRORを返し、EdgeはHmmmがこのページに到達できないことを返します。

いくつかの回答は、ARR Rewriteモジュールを指摘しています。これは、私がアンインストールし、再起動した後、同じバージョンの更新されたバージョンを再インストールしました。私はそれをアンインストールし(もう必要ありません)再起動しました。再インストールIIS Windowsの機能を排除し、再起動して再インストールしますIIS再び再起動します。すべての証明書を排除し、自己署名証明書と同じ問題を作成します最後に、そのWebサーバーからすべてのWebサイトを削除し、デフォルトのディレクトリ(htmlファイルと2つの画像を含むwwwroot)に新しいサイトを作成しました。これは、httpプロトコルが使用されている限り表示されますが、https(同じエラー)は表示されません。 。私は このガイド for IIS 7 for loveをフォローしました。また、フォルダへのアクセス許可を取り消して、再インストール後に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
George

私は自分で答えを得ました。問題は、暗号が何年にもわたって変更されたことですが、Windows 2012および2016サーバーのみが適切に更新されていますが、古いバージョンでは変更されておらず、Windows 10にはそれらのエントリがすでにあり、それに応じて更新されています。したがって、IIS)でSSLが処理される方法に影響する、存在しないレジストリエントリがいくつかあります。これが当てはまるかどうかをテストするには、Firefoxで新しいタブを開き、aboutと入力します。 config。search.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に配置されます)。コンピュータを再起動します。

すべてがうまくいけば、アプリケーションは再び動作するか、少なくとも自己署名証明書によるセキュリティリスクの通常のメッセージです。この作業があなたのためにあることを望み、それが問題を解決するのに役立ち、事前に感謝する場合は投票してください。

1
George