web-dev-qa-db-ja.com

SSLにアップグレードすると管理ダッシュボードが壊れる

現在、Amazon EC2サーバー上でWordPressバージョン4.5.3のインスタンスを実行しています。それは使用しています:

  • CentOS 7(OS)でSELinuxが有効になっています。
  • サーバーはmod_securitymod_evasiveでApacheを実行します
  • PHP 5.6.24

サイトの名前は The Rambling New Yorker です。

少し前まで、 Let's Encrypt を使用してSSLにアップグレードしました。プロセスは非常に簡単で、フロントエンドを安全にしました。私はSSL以外のトラフィックを安全なサイトにリダイレクトするプラグインさえもインストールしました。

残念ながら、 管理ダッシュボードは壊れています 。私が切り替えをした途​​端、次のように見え始めました。

WordPress SSL Problem 

私はURLを(ダッシュボードではなくデータベース内で)変更してSSLバージョンにし、設定ファイルで " Force SSL Admin "を有効にしました。ログインページは問題ありません。

私がすべてのプラグインを無効にしたとき、スイッチオーバーは一度うまくいきました。一つずつそれらを再有効化することは私に WP Super Cache が問題であると信じるように導きました、しかし私がプラグインを削除した後にスイッチオーバーをしたとき、問題は再発しました。

mod_securityを無効にすると問題は解決されますが、Apacheのエラーログに有用なエラーメッセージはないので、何が原因で動揺しているのかわかりません。

唯一の手がかりは、load-styles.phpおよびload-scripts.phpに対する要求が403 errorを返すことです。

WordPress SSL Problem #2 

ただし、これらのファイルは、Apache:apacheフォルダー内の他のすべてのファイル(wp-admin)と同じ所有権(644)および許可を持っています。だから私は無知です。根本的な原因は何かという考えを誰かが持っていますか?

アップデート - 8/26
いくつかの研究に基づいて、私は以下のコメントに記載されているPHPエラーは特定の拡張子mbstringsがインストールされていないことに関連していたという結論に達しました。残念なことに、私がそれをインストールしようとしたとき、私は間違ったバージョンをインストールしようとし、それからいくつかのパッケージをアンインストールし、Remiリポジトリを追加し、そして古いものと全く同じではないいくつかのパッケージをインストールしました。私のサーバーはPHP 5.6.24を実行していますが、パッケージのいくつかは5.4から来たものかもしれません。 WordPressが動作しなくなりました。ちょっとのんびりと過ごした後、私は私のSSLの冒険に着手する前に作成されたAMIにサーバーをロールバックしました。

今週末にまたSSLに移行しようと思います。問題が再発する場合は、ここに戻ります。そうでなければ私は答えを投稿します。いずれにせよ、可能であればデータベースを変更しないようにします。

更新2 - 8/27
秘密の成分はパッケージphp56u-mbstringsでした。インストールしたら、スクリプトはコマンドラインで問題なく動作しましたが、GUIはAJAXエラーをスローし続け、3つのテーブルしか検索しませんでした。 CLIスクリプトは http://www.ramblingnewyorker.com の31個のインスタンスを https://www.ramblingnewyorker.com に置き換えました。しかし、問題は解決しません。安全なサイトが設定された瞬間から現れました。 mod_securityを無効にするか、ssl.confファイルに次の行を追加すると問題が解決します。

<LocationMatch "/wp-admin/load-scripts.php">
    <IfModule mod_security2.c>
        SecRuleEngine Off
    </IfModule>
</LocationMatch>
<LocationMatch "/wp-admin/load-styles.php">
    <IfModule mod_security2.c>
        SecRuleEngine Off
    </IfModule>
</LocationMatch>

セキュリティ上の影響により、これらの行をコメントアウトしました。これはどういうわけかmod_securityに関連しているように思われますが、私はApacheログファイルに単一のエラーメッセージを見つけることができません。

3
Mike P

問題が解決しました!原因は単純に死んでいることがわかった。 mod_securityルールの1つが管理ダッシュボードの読み込みを妨げていました。 SSLエラーログの確認に失敗したため、これに気付くことはありませんでした。私がそうするとすぐに、そしてすべてをロードしていなかったファイルのための問題のあるルールを無効にしても問題なかった。

2
Mike P

SSLを適用するためにどのプラグインを使用しているかはわかりませんが、以下の解決策との競合を防ぐためにSSLを無効にします。

すべてのURLをHTTPSに更新したことを確認するには、次の手順に従います。

  1. /に移動してダウンロード 相互接続ITのデータベース検索と置換スクリプトはこちら
  2. ファイルを解凍し、WordPressがインストールされているフォルダ(ルート)(Search-Replace-DB-master)をドロップし、フォルダの名前をreplaceスクリーンショット )に変更します。
  3. ブラウザで作成した新しいフォルダに移動し(例:https://www.ramblingnewyorker.com/replace)、 検索/置換ツールが表示されます
  4. ここまではかなりわかりやすいはずです。search for…フィールドにHTTPSリンクを、replace with…フィールドに新しいHTTPSリンクを入力してください。

スクリプトを実行する前に、actionsの下にあるdry runボタンをクリックして、何が置き換えられるのかを確認できます。完了したら、/replace/フォルダを必ず削除してください。

これはあなたがあなたのウェブサイトを新しいSSL(https://)リンクで完全に運営していることを確実にするのを助けるでしょう。それでも問題が解決しない場合は、お知らせください。それで、次のステップを理解することができます。