Настройка Apache с SSL
В следующих инструкциях предполагается, что вы хотите запустить как защищенный сервер (на порту 443
) и обычный сервер (на порт 80
). Во-первых, вам нужно настроить сервер на прослушивание обоих портов. Либо редактировать /etc/apache2/ports.conf
(в Debian; это включено в apache2.conf
) или редактировать /etc/apache2/apache2.conf
непосредственно включить строки:
Слушайте 80 Слушайте 443
Затем отредактируйте /etc/apache2/sites-enabled/yoursite
использовать настройки SSL. Разделение обычных и безопасных настроек сервера с помощью VirtualHosts - самый простой вариант с точки зрения ремонтопригодности. Любая конфигурация вне разделов VirtualHosts (например, установка ServerAdmin) будет применяться как к (и к любым другим) VirtualHosts.
Версии Apache 2.4.8 и выше предполагают, что ваш сертификат сервера будет объединен с любыми промежуточными сертификатами в одном файле. Чтобы загрузить связанный файл с SSL.com, выберите Nginx
ссылка для скачивания в вашем аккаунте портала:
Кроме того, вы можете объединить существующий сертификат и промежуточные файлы с помощью команды, подобной следующей:
$ cat /etc/ssl/private/ca-bundle-client.crt >> /etc/ssl/private/yourdomain.crt
Добавьте следующий раздел в ваш конфигурационный файл:
# ================================================= # SSL /TLS настройки # ================================================ = NameVirtualHost *: 443 DocumentRoot "/ var / www / yoursite" SSLEngine в SSLCertificateFile /etc/ssl/private/yourdomain.chained.crt SSLCertificateKeyFile /etc/ssl/private/myserver.key
Несколько замечаний по этой конфигурации:
SSLEngine
должен быть включен, чтобы сервер использовал SSL.DocumentRoot
устанавливает корневой каталог для этого виртуального хоста. Это означает, что вы можете полностью отделить защищенный контент от обычного контента.SSLCertificateFile
должно быть указано место, куда вы положили файл с сертификатом вашего сервера и промежуточной цепочкой.SSLCertificateKeyFile
должен быть указан в том месте, куда вы положили свой файл закрытого ключа.
Добавьте следующий раздел в ваш конфигурационный файл:
# ================================================= # SSL /TLS настройки # ================================================ = NameVirtualHost *: 443 DocumentRoot "/ var / www / yoursite" SSLEngine на SSLCertificateFile /etc/ssl/private/yourdomain.crt SSLCertificateKeyFile /etc/ssl/private/myserver.key SSLCertificateChainFile / etc / ca ssl / private client.crt
Несколько замечаний по этой конфигурации:
SSLEngine
должен быть включен, чтобы сервер использовал SSL.DocumentRoot
устанавливает корневой каталог для этого виртуального хоста. Это означает, что вы можете полностью отделить защищенный контент от обычного контента.SSLCertificateFile, SSLCertificateChainFile,
иSSLCertificateKeyFile
должны быть установлены в местах, где вы положили свой сертификат, промежуточный и закрытый ключи, соответственно.
Чтобы запустить обычный сервер через порт 80, добавьте следующий раздел в файл конфигурации:
NameVirtualHost *: 80 DocumentRoot "/ var / www / yoursite" # Настройка каталога для конкретного хоста, параметры и т. Д. # Большинство этих параметров, скорее всего, будут установлены вне разделов VirtualHosts #.
После сохранения отредактированного файла конфигурации перезапустите веб-сервер. Если вы использовали парольную фразу при создании сертификата, вам нужно будет ввести ее, когда возникнет вопрос.
Тестирование
Создайте базовую страницу index.html везде, где находится корневой каталог вашего веб-сервера, если у вас еще нет там содержимого.
Затем укажите ваш веб-браузер на https://www.yoursite.com
. Вы должны увидеть открытое SSL-соединение и доставку страницы. Если вы используете самозаверяющий сертификат, в вашем браузере появится всплывающее предупреждение о том, что идентификация сервера не может быть проверена. Вы можете просмотреть и принять сертификат. При использовании внешнего сертификата все должно происходить без вмешательства.
Также убедитесь, что вы не можете получить доступ к защищенному контенту с помощью http: //. Если вы попытаетесь, вы должны получить сообщение об ошибке.
УСТРАНЕНИЕ НЕПОЛАДОК
Если он не работает должным образом, сначала проверьте, действительно ли ваш сервер работает, используя ps -a | grep apache
. Если это ничего не вернет, попробуйте перезапустить его и проверьте сообщения об ошибках на терминале.
Также убедитесь, что права доступа к файлам ключей и сертификатов установлены правильно (см. Выше), а также права доступа к тестовому файлу HTML и его родительскому каталогу.
Далее проверьте логи. Вы должны проверить как основные журналы сервера, так и журналы SSL, которые вы настроили в своем файле конфигурации выше. Если вы не получили ничего полезного, попробуйте изменить значение LogLevel в файле конфигурации Apache2 на «отладка», перезапустите Apache2 и повторите попытку. Это должно дать больше данных файла журнала.
Если вы также используете обычный веб-сервер на 80-м порту, попробуйте загрузить тестовую страницу по http: //, а не по https: //, чтобы определить, связана ли проблема с веб-сервером или с SSL-соединением. Обратите внимание, что в приведенной выше настройке корневой каталог веб-сервера отличается для http: // и https: //, поэтому вы не сможете (или не должны!) Иметь доступ к одному и тому же содержимому. Если ваша тестовая страница в корневом каталоге http: // работает нормально, а ваша тестовая страница в корневом каталоге https: // - нет, это может помочь вам определить проблему.
Если проблема заключается в соединении SSL, полезным инструментом является s_client
, который является диагностическим инструментом для устранения неполадок TLS/ SSL-соединения. Основное использование: /usr/bin/openssl s_client -connect localhost:443
, Есть также множество других опций, для которых вы можете проверить документацию. Если вы получаете сообщения об ошибках, это должно помочь вам найти проблему.