
Я установил 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