Apache で SSL を設定するにはどうすればいいですか?

Apache で SSL を設定するにはどうすればいいですか?

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

関連情報