【解決方法】SSL 証明書をバインドした後、ファイルのダウンロードと SSRS レポートの表示機能が失敗する

[ad_1]

概要
環境: Windows Server 2016、IIS 10、MSSQL 2008、SSRS、ASP.NET Web フォーム サイト、ワイルドカード SSL/TLS 証明書、IIS URL Rewrite 2.1 (MS がサポートするダウンロード)

問題の概要: サイトの 2 つの機能 (ファイルのダウンロードと SSRS レポートの表示) は、初回の処理エラーで失敗するか、サイトにバインドされた SSL 証明書で完全に失敗します。 同じブラウザ ウィンドウ内でこれらの機能を実行しようとすると、ほとんどの場合成功します。 さまざまなブラウザーがさまざまな方法で失敗し、問題のブラウザーによってはまったく失敗しないものもあります。 以下に詳細を説明しますので、ご容赦ください。

注: どちらの機能も、SSL 証明書が混在していなくても問題なく動作します。

私は無駄な解決策を求めてインターネットを精査しましたが、これに関する支援に非常に感謝しています.

ゴール: a) 問題の根本原因を特定して解決します。b) [preferred] ユーザーがブラウザの設定を変更しなくても、失敗した 2 つの機能を動作させることができます。c) ユビキタス ブラウザ (Chrome、FF、Edge、IE、Safari、Opera) で最初の処理の問題が発生することなく、失敗した 2 つの機能が動作するようになります。 .

詳細

ファイルのダウンロードと SSRS レポートの表示機能を含む ASP.NET Webforms サイトを持つクライアントがあります。 これらの機能にアクセスするには、ユーザーがログインする必要があります。 悲しいことに、このサイトはユーザー認証に初歩的な独自のアプローチを使用しています。つまり、「正式な」認証フレームワークではありません。これが問題の一部である可能性はありますか?

前述の機能は両方とも、現在のすべての主要なブラウザを使用して何年もの間問題なく動作しています. クライアントは最近、ワイルドカード SSL/TLS 証明書を購入しました。これを運用 IIS インスタンスにインストールし、適切なサイト バインドを構成しました。 これが問題になる場合、サイトは web.config の基本的な ルールで URL Rewrite を使用して、すべての HTTP プロトコル要求を HTTPS プロトコルに変更します。

ファイルのダウンロードと SSRS レポートの表示を除いて、SSL 証明書が配置されていれば、サイトのすべての側面が正常に機能します。 Chrome と Firefox の現在のバージョン [Windows]、および Mac ブラウザー (私は Mac 環境に直接アクセスすることはできません) が異常な動作を示しています。 IE 11 (図を参照) は、まったく問題のない唯一のブラウザーのようです。 そのブラウザー バージョンにアクセスできないため、Edge はテストしていません。

ファイルのダウンロード

このサイトには、ユーザーがサイトからファイルをダウンロードできる機能があります。
クロム

Chrome では、ブラウザの下部にあるダウンロード ステータス バーに、初回処理エラー「失敗 – ネットワーク エラー」が表示されます。 エラー メッセージのシェブロンをクリックし、コンテキスト メニューから[再開]オプションを選択すると、ダウンロードは完了しますが、実際のフォルダーの場所から zip アーカイブを開こう (ダブルクリック) しようとすると、次のエラー メッセージが表示されます。フォルダーを開きます。圧縮 (zip 形式) フォルダー ‘{パス}’ は無効です。” 同じブラウザー ウィンドウでファイルのダウンロード操作を繰り返すと、正常に動作し (正常にダウンロードされた有効な zip アーカイブで最高潮に達します)、その後のすべてのファイル ダウンロードの試行も成功し、そのブラウザー インスタンスの残りの寿命の間、それ以上の問題は発生しません。 ユーザーがブラウザを閉じて (すべての Chrome インスタンスを閉じる必要があります)、サイトに移動して Chrome を再度開くと、ブラウザは再び初回処理エラーを表示し、それ以降は残りの人生で正常に動作します。そのブラウザ ウィンドウの。

注: 問題をもう一度再現するには、Chrome ブラウザのすべてのインスタンスを閉じる必要があります。 ユーザーが自分のコンピューターで Chrome インスタンスを 1 つでも開いたままにして、新しいブラウザー ウィンドウを使用してサイトに移動し、ファイルのダウンロードを再試行した場合、問題はありません。 おそらくChromeはある種の認証トークンをキャッシュしていますか? 動作がセッションに関連していないように見えるため、意図的に「セッション」という用語の使用を避けています。 Chrome 内で新しいタブを開き (前述の初回処理動作が発生した後)、サイトに移動しても (新しいセッションで最高潮に達します)、問題は発生しません。

ファイアフォックス

Firefox は、サイトからファイルをダウンロードしようとすると、「安全な接続に失敗しました」というエラー メッセージを表示します。 その後のすべての試みは引き続き失敗します。 これは、Chrome の初回処理のみの動作とは異なります。 Firefox の詳細設定「network.http.spdy.enabled.http2」を true (デフォルト) から false に変更すると、この問題は完全に解決されます。

IE11

IE 11 はまったく失敗しません。 IE 11 のデフォルト インストールから変更されたブラウザー設定はありません。

Mac ブラウザ

Mac ユーザーは、ファイルのダウンロードの試みは成功しているように見えるが、zip アーカイブを開こうとすると、zip アーカイブがパスワードで保護されていると考える Mac 環境で最高潮に達したと報告しています。 注: ダウンロード要求を処理するコードでは、zip アーカイブに明示的にパスワードを割り当てることはありません。 Windows 環境のユーザーは、この動作を報告していません。

SSRS レポート表示

このサイトには、実行時に SSRS から作成された PDF ドキュメントを表示する機能があります。 PDF はブラウザー ウィンドウに直接表示されます (ダウンロード操作をすぐに開始するのではなく)。

クロム

ユーザーが SSRS レポートを表示しようとすると、Chrome は同様の初回処理エラーを表示します。 ブラウザーに次のエラー メッセージが表示されます。「エラー PDF ドキュメントの読み込みに失敗しました。」 エラー メッセージには「リロード」ボタンがあり、レポートが正常に表示されます。 その後、同じブラウザ ウィンドウにレポートを表示しようとすると、問題なく成功します。 初回処理時の動作は、ユーザーがサイトに対して Chrome を閉じてから再度開き、レポートの表示を再試行したときに発生します。

注: 興味深いことに、いずれかの機能 (ファイルのダウンロードまたは SSRS レポートの表示) を備えた Chrome では、ユーザーがいずれかの機能で初めて処理の問題を経験すると、もう一方の機能は問題なく正常に動作します。ブラウザ インスタンス。 例: ユーザーが新しい Chrome インスタンスを開き、サイトに移動して、ファイルのダウンロードを試みます。 ファイルのダウンロードは初回は失敗します。 すぐにレポートを表示しようとすると成功します…逆もまた同様です。

ファイアフォックス

Firefox は、ファイル ダウンロード機能の場合と同じ「安全な接続に失敗しました」というエラー メッセージを表示します。 同じ Firefox の詳細設定「network.http.spdy.enabled.http2」を true (デフォルト) から false に変更すると、この問題は完全に解決されます。

IE11

IE 11 はまったく失敗しません。 IE 11 のデフォルト インストールから変更されたブラウザー設定はありません。

私が試したこと:

悪影響があった場合に備えて、すべての URL 書き換えルールを無効にしました … しかし、URL 書き換えルールが設定されているかどうかに関係なく、すべての誤ったブラウザーが説明されている動作を示します。

失敗したリクエストのトレースを有効にして、結果を分析しました (私は決してトレースの専門家ではありません)。 初めての失敗はすべて、200 HttpStatus コード (つまり、OK) で最高潮に達します。
– ファイル ダウンロードの初回処理エラーの場合、トレースの GENERAL_FLUSH_RESPONSE_END セクションに「パラメーターが正しくありません。(0x80070057)」と表示されます。 このメッセージが参照しているパラメータがわかりません。
– SSRS レポート表示の初回処理エラーの場合、トレースの GENERAL_FLUSH_RESPONSE_END セクションは、「存在しないネットワーク接続で操作が試行されました。(0x800704cd)」を示します。

Windows Server イベント ログの分析により、次のことが明らかになりました。
– ファイル ダウンロードの初回処理エラーについては、どのような種類のイベント ログもありませんでした。
– SSRS レポート表示の初回処理エラーの場合、アプリケーション イベント ログには警告レベルのエントリ (ソース: ASP.NET、イベント ID: 1309) があり、”リモート ホストが接続を閉じました。エラーが発生しました。コードは 0x800704CD です。」

解決策 1

あなたの質問には多くのことが含まれています。 ここでいくつかのスレッドを開始します。

正しく構成されていることを願っています。
SSL 証明書を使用して SSRS を構成する – SQLServerCentral[^]
レポートサービス – SSL用にSSRSを構成する[^]
SSL 証明書を Reporting Services にバインドする際にエラーが発生した場合の対処方法。 – SQL 荒らし行為[^]

見積もり:

SSRS レポート表示の初回処理エラーの場合、アプリケーション イベント ログには警告レベルのエントリ (ソース: ASP.NET、イベント ID: 1309) があり、”リモート ホストが接続を閉じました。エラー コード0x800704CD です。」

1 つまたはいくつかのプロパティの値を増やす必要があるようです。
SSRS 統合モードの CSV ファイルのエクスポートに失敗しました[^]

同じ問題に関するもう 1 つのスレッド
asp.net – リモート ホストが接続を閉じました。 エラーコードは0x800704CDです[^]

そして、問題が解決したら、独自の解決策を投稿していただければ幸いです。 将来的に他の人に役立ちます。

解決策 2

レジストリのサーバー レベルで HTTP/2 を無効にすると、すべての環境のすべてのブラウザーで前述の問題がすべて解決されました。 以下は、実行されたレジストリ スクリプトです。
Windows レジストリ エディタ バージョン 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters]

“EnableHttp2Tls”=dword:00000000
“EnaleHttp2Cleartext”=dword:00000000

レジストリの変更を有効にするには、サーバーを再起動する必要がありました。

[ad_2]

コメント

タイトルとURLをコピーしました