Как настроить SSL в Apache?

Как настроить SSL в Apache?

Я установил apache в RHEL 6. Все работает отлично. Какие изменения и настройки нужно сделать, чтобы использовать 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на 443в /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.confи перезапустите Apache.

LoadModule ssl_module modules/mod_ssl.so
Listen 443

Связанный контент