web-dev-qa-db-ja.com

Apache2サーバーでHTTPSを有効にした後-すべてのリクエストで404エラーが発生する

さて、私はこれまでSSL/HTTPSの経験がありませんでした。標準のHTTPしか扱っていません。最近、SSLが必要なサイトで作業を開始しました。もちろん、私は外に出て、その方法を調査し、始めました。 SSL証明書を正常にインストールする段階に到達しました-緑の南京錠が表示され、サーバーがポート443でHTTPSリクエストに応答します。問題は、何を実行しても、HTTPS /を使用してページを表示できないことです。 SSL、ただし、それらはポート80/HTTPで正常に表示されました(HTTPをHTTPSにリダイレクトするまで)。

簡単に言うと、HTTPSサイトに完全にアクセスできますが、ページは送信されず、リクエストごとに404が送信されます。


/etc/Apache2/sites-available/[name].conf

<VirtualHost *:80>
    ServerName [serverName]

    RewriteEngine On

    RewriteCond %{HTTP:X-Forwarded-Proto} !https
    RewriteRule ^ https://%{HTTP_Host}%{REQUEST_URI} [L,R=302]
</VirtualHost>

<VirtualHost *:443>
    ServerName [serverName]
    ServerAdmin [email]
    DocumentRoot [docRoot]

    # I know the following SSL cert stuff is correct

    SSLEngine On
    SSLCertificateFile [...]/[domain].crt
    SSLCertificateKeyFile [...]/[certificate].key
    SSLCertificateChainFile [...]/[theotherone].crt

    ErrorLog ${Apache_LOG_DIR}/[custom]_error.log
        CustomLog ${Apache_LOG_DIR}/[custom]_access.log combined

        <Directory "[docRoot]">

                Options Indexes FollowSymLinks MultiViews

        AllowOverride All
        Order allow,deny
        allow from all

        </Directory>

</VirtualHost>

他に確認したいことがあるかどうか、その他の詳細はわかりませんが、何かあればお知らせください。

編集:

なんらかの理由で構成ファイルを検索した後、HTTPSに接続すると、サーバーはデフォルト構成(/ var/www /)でドキュメントルートを使用しますが、このデフォルト構成はa2ensiteでは有効になっていません。これを引き起こしている構成がどこにあるのかわからないようです

10

どのようにしてそれを見つけたのか正確に思い出せませんが、どこかに置くように提案された何かに偶然出会いました:

<VirtualHost _default_:443>

の代わりに:

<VirtualHost *:443>

それを置き換えて以来、私のSSLは完全に機能しています。

11

すべてのhttpリクエストをhttpsにリダイレクトすることが絶対に必要ですか?それはあなたがここでやろうとしていることのようです。

まず、confから次の行を削除することをお勧めします。

RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^ https://%{HTTP_Host}%{REQUEST_URI} [L,R=302]

構文が間違っているのではないかと思います。次に、各http://およびhttps://プロトコルで接続を再試行します。

11
Ivan

次のようにファイルを編集してみてください。

これが非常に基本的な設定です。これが機能する場合は、必要に応じてリダイレクトを追加してください。

これが機能しない場合は、ssl.confを表示してください

NameVirtualHost *:80
NameVirtualHost *:443

<VirtualHost *:80>
         <Directory "[docRoot]">
        AllowOverride All
        </Directory>
        DocumentRoot [docRoot]
        ServerName [serverName]
</VirtualHost>

<VirtualHost *:443>
        SSLEngine on
       SSLCertificateFile [...]/[domain].crt
       SSLCertificateKeyFile [...]/[certificate].key
       SSLCertificateChainFile [...]/[theotherone].crt
         <Directory "[docRoot]">
        AllowOverride All
        </Directory>
        DocumentRoot [docRoot]
        ServerName [serverName]
</VirtualHost>
10
Anthony Fornito