Як налаштувати SSL в apache?


10

Я встановив apache в RHEL 6. Все працює добре. Які всі зміни та конфігурації слід зробити для використання https: // localhost: 443 / .

Якщо я поміняю "Слухати 80" на 443, це кидає помилку підключення SSL

"Помилка 107 (нетто: 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 каталог повинен бути доступний для читання лише корінь.

Крок 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>

Перші три рядки не потрібні. 1. NameVirtualHostзастаріло і буде видалено у майбутніх версіях Apache. Наразі його вже немає. 2. Listen 443може викликати проблеми, якщо apache вже налаштований на прослуховування на порту 443, що вже в багатьох дистрибутивах Linux. Додайте лише якщо ви впевнені, що ця лінія не налаштована ще де.
lanoxx

3

Не змінювати , 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

Власне, якщо ви додасте пакет mod_ssl для RHEL6, він створює /etc/httpd/conf.d/ssl.conf, який завантажує модуль і встановлює <VirtualHost _default_:443>, з усіма необхідними параметрами, кожен з коментарями. mod_sslПакет не встановлюється автоматично , якщо ви встановили httpdпакет.
jsbillings

1
Я хотів би додати до Вашого переписування лише одне: використовувати [R=301,L]замість просто [R,L], таким чином переписати використовувати постійний параметр кодів стану HTTP 3xx .
dcestari
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.