ApacheでSSLを構成する方法は?


10

RHEL 6にapacheをインストールしました。すべてが正常に動作しています。https:// localhost:443 /を使用するために必要なすべての変更と構成 。

「Listen 80」を443に変更すると、SSL接続エラーがスローされます

「エラー107(net :: ERR_SSL_PROTOCOL_ERROR):SSLプロトコルエラー。」

回答:


13

を使用している場合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 webmaster@mydomain.com
DocumentRoot /srv/www/htdocs/mydomain
ServerName www.mydomain.com
ServerAlias mydomain.com
</VirtualHost>


<VirtualHost *:443>
ServerAdmin webmaster@mydomain.com
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 webmaster@mydomain.com
DocumentRoot /srv/www/htdocs/mydomain
ServerName mail.mydomain.com
RedirectMatch permanent (/.*) https://mail.mydomain.com$1
</VirtualHost>

最初の3行は不要です。1. NameVirtualHostは非推奨であり、Apacheの将来のバージョンでは削除される予定です。現在、すでに何も行われていません。2. Listen 443Apacheがすでにポート443でリッスンするように構成されている場合、問題が発生する可能性があります。これは、多くのLinuxディストリビューションですでに当てはまります。この行が他の場所で構成されていないことが確実な場合にのみ追加してください。
lanoxx

3

変更しないでくださいListen 80443の中で/etc/httpd/conf/httpd.conf。SSLはで設定され/etc/httpd/conf.d/ssl.confます。RHEL 6では、SSLが有効になっており、デフォルトで自己署名証明書でリッスンしています。

を参照するだけで、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.confApacheを再起動します。

LoadModule ssl_module modules/mod_ssl.so
Listen 443

実際、RHEL6のmod_sslパッケージを追加すると、/ etc / httpd / conf.d / ssl.confが作成され<VirtualHost _default_:443>、モジュールが読み込まれ、必要なすべてのパラメーターとそれぞれにコメントが設定されます。mod_sslあなたがインストールした場合、パッケージが自動的にインストールされていないhttpdパッケージを。
jsbillings 2012

1
書き換えの1つだけを追加したいと思います。[R=301,L]単にの代わりにを使用します[R,L]。これにより、書き換えはHTTP 3xxステータスコードの永続オプションを使用します。
dcestari
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.