さて、私はこれまでSSL/HTTPSの経験がありませんでした。標準のHTTPしか扱っていません。最近、SSLが必要なサイトで作業を開始しました。もちろん、私は外に出て、その方法を調査し、始めました。 SSL証明書を正常にインストールする段階に到達しました-緑の南京錠が表示され、サーバーがポート443でHTTPSリクエストに応答します。問題は、何を実行しても、HTTPS /を使用してページを表示できないことです。 SSL、ただし、それらはポート80/HTTPで正常に表示されました(HTTPをHTTPSにリダイレクトするまで)。
簡単に言うと、HTTPSサイトに完全にアクセスできますが、ページは送信されず、リクエストごとに404が送信されます。
<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では有効になっていません。これを引き起こしている構成がどこにあるのかわからないようです
どのようにしてそれを見つけたのか正確に思い出せませんが、どこかに置くように提案された何かに偶然出会いました:
<VirtualHost _default_:443>
の代わりに:
<VirtualHost *:443>
それを置き換えて以来、私のSSLは完全に機能しています。
すべてのhttpリクエストをhttpsにリダイレクトすることが絶対に必要ですか?それはあなたがここでやろうとしていることのようです。
まず、confから次の行を削除することをお勧めします。
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^ https://%{HTTP_Host}%{REQUEST_URI} [L,R=302]
構文が間違っているのではないかと思います。次に、各http://およびhttps://プロトコルで接続を再試行します。
次のようにファイルを編集してみてください。
これが非常に基本的な設定です。これが機能する場合は、必要に応じてリダイレクトを追加してください。
これが機能しない場合は、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>