
RHEL 6にApacheをインストールしました。すべて正常に動作しています。使用するにはどのような変更と構成を行う必要がありますか? https://localhost:443/。
「Listen 80」を443に変更すると、SSL接続エラーが発生します。
「エラー 107 (net::ERR_SSL_PROTOCOL_ERROR): SSL プロトコル エラーです。」
答え1
を使用している場合は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>
答え2
ではListen 80
に変更しないでください。SSL は で構成されます。RHEL 6 では、SSL はデフォルトで有効になっており、自己署名証明書を使用してリッスンします。443
/etc/httpd/conf/httpd.conf
/etc/httpd/conf.d/ssl.conf
ブラウズするだけで SSL を使用してデフォルトのサイトにアクセスできますhttps://localhost
(URL の末尾にポートを追加する必要はありません)。
すべての HTTP リクエストを HTTPS に転送したい場合 (これが実現しようとしていることだと思います)、永続的なリダイレクトを追加するか、Apache モジュールを使用しますmod_rewrite
。
最も簡単で安全な方法は、永続的なリダイレクトを設定することです。名前付き仮想ホストを有効にし、Redirect
の VirtualHost にディレクティブを追加します/etc/httpd/conf/httpd.conf
。
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