RHEL 6にApacheをインストールしました。すべてが正常に動作しています。 https:// localhost:443 / を使用するために、すべての変更と構成を行う必要があります。
「Listen 80」を443に変更すると、SSL接続エラーがスローされます
「エラー107(net :: ERR_SSL_PROTOCOL_ERROR):SSLプロトコルエラー。」
Apache2
を使用している場合は、次のことを行う必要があります。
ステップ1: OpenSSLを使用して、サイトの保護に使用されるキーを生成します。これらのキーは、安全なサイトへのトラフィックを暗号化および復号化するときに使用されます。
$ openssl genrsa -out mydomain.key 1024
このコマンドは、1024ビットの秘密鍵を作成し、それをファイルmydomain.keyに入れます。
ステップ2:独自の証明書を生成します。
$ openssl req -new -key mydomain.key -x509 -out mydomain.crt
ステップ3:秘密キーをディレクトリ/etc/Apache2/ssl.key/
に、証明書をディレクトリ/etc/Apache2/ssl.crt/
に保存します。
注:ssl.key
ディレクトリは、rootのみが読み取り可能である必要があります。
ステップ4:httpd.conf
の/etc/Apache2
ファイルを編集する必要があります。
これで、このファイルには次のようなコンテンツが含まれるはずです。
NameVirtualHost *:80
NameVirtualHost *:443
Listen 443
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /srv/www/htdocs/mydomain
ServerName www.mydomain.com
ServerAlias mydomain.com
</VirtualHost>
<VirtualHost *:443>
ServerAdmin [email protected]
DocumentRoot /srv/www/htdocs/mydomain-secure
ServerName mail.mydomain.com
SSLEngine on
SSLCertificateFile /etc/Apache2/ssl.crt/mydomain.crt
SSLCertificateKeyFile /etc/Apache2/ssl.key/mydomain.key
</VirtualHost>
<Directory /srv/www/htdocs/mydomain-secure>
SSLRequireSSL
</Directory>
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /srv/www/htdocs/mydomain
ServerName mail.mydomain.com
RedirectMatch permanent (/.*) https://mail.mydomain.com$1
</VirtualHost>
Listen 80
の443
を/etc/httpd/conf/httpd.conf
に変更しないでください。 SSLは/etc/httpd/conf.d/ssl.conf
で構成されます。 RHEL 6では、SSLが有効になっており、デフォルトで自己署名証明書でリッスンしています。
https://localhost
にアクセスするだけで、SSLを使用してデフォルトのサイトにアクセスできます(URLの末尾にポートを追加する必要はありません)。
すべてのHTTPリクエストをHTTPSに転送する場合(これは達成しようとしていることだと思います)、永続的なリダイレクトを追加するか、Apacheモジュールmod_rewrite
を使用できます。
最も簡単で安全な方法は、永続的なリダイレクトを設定することです。名前付き仮想ホストを有効にし、Redirect
ディレクティブを/etc/httpd/conf/httpd.conf
のVirtualHostに追加します。
NameVirtualHost *:80
<VirtualHost *:80>
ServerName localhost
Redirect permanent / https://localhost
</VirtualHost>
mod_rewrite
を使用して、名前付き仮想ホストも作成します。これは推奨される方法ではありませんが、機能します。
NameVirtualHost *:80
<VirtualHost *:80>
# Enable the Rewrite engine
RewriteEngine On
# Make sure the connection is not already HTTPS
RewriteCond %{HTTPS} !=on
# This rewrites the URL and forwards to https
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
</VirtualHost>
SSLをオフにする場合は、/etc/httpd/conf.d/ssl.conf
のこれらの行をコメント化して、Apacheを再起動します。
LoadModule ssl_module modules/mod_ssl.so
Listen 443