У меня есть подстановочный сертификат ssl (letsencrypt), например, example.de и *.example.com.
Мой 000-default.conf выглядит так:
<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
#ServerName www.example.com
ServerName example.de
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
Redirect permanent / https://example.de/
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
<VirtualHost *:80>
ServerName cloud.example.de
ServerAdmin [email protected]
DocumentRoot /var/www/cloud.example.de
Redirect permanent / https://cloud.example.de/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<VirtualHost *:80>
ServerName dev.example.de
ServerAdmin [email protected]
DocumentRoot /var/www/dev.example.de
Redirect permanent / https://dev.example.de/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
по умолчанию-ssl.conf:
<IfModule mod_ssl.c>
<Виртуальный хост *:443>
Имя сервера example.de
SSLEngine включен
SSLCertificateFile /etc/letsencrypt/live/example.de/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.de/privkey.pem
Корень документа /var/www/html
Журнал ошибок ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log вместе
</ виртуальный хост>
<Виртуальный хост _default_:443>
Веб-мастер администратора сервера@localhost
Корень документа /var/www/html
# Доступные уровни логов: trace8, ..., trace1, debug, info, note, warn,
# ошибка, крит, оповещение, эмердж.
# Также можно настроить уровень логирования для конкретного
# модули, например.
# Информация об уровне журнала ssl: предупреждение
Журнал ошибок ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log вместе
# Для большинства конфигурационных файлов из conf-available/, которые
# включено или отключено на глобальном уровне, можно
# включить строку только для одного конкретного виртуального хоста. Например
# следующая строка включает конфигурацию CGI только для этого хоста
# после глобального отключения с помощью "a2disconf".
# Включить conf-available/serve-cgi-bin.conf
# Переключатель механизма SSL:
# Включить/отключить SSL для этого виртуального хоста.
SSLEngine включен
# Самоподписанный сертификат (snakeoil) можно создать, установив
# пакет ssl-сертификата. Видеть
# /usr/share/doc/apache2/README.Debian.gz для получения дополнительной информации.
# Если и ключ, и сертификат хранятся в одном файле, только
# Требуется директива SSLCertificateFile.
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
# Цепочка сертификатов сервера:
# Указываем SSLCertificateChainFile на файл, содержащий
# объединение закодированных PEM сертификатов CA, которые формируют
# цепочка сертификатов для сертификата сервера. Альтернативно
# указанный файл может быть таким же, как SSLCertificateFile
# когда сертификаты ЦС напрямую присоединяются к серверу
# сертификат для удобства.
#SSLCertificateChainFile /etc/apache2/ssl.crt/server-ca.crt
# Центр сертификации (ЦС):
# Установите путь проверки сертификата ЦС, где найти ЦС
# сертификаты для аутентификации клиента или один
# огромный файл, содержащий их все (файл должен быть закодирован в PEM)
# Примечание: Внутри SSLCACertificatePath вам нужны хэш-символические ссылки
# чтобы указать на файлы сертификатов. Используйте предоставленный
# Makefile для обновления хеш-символических ссылок после изменений.
#SSLCACertificatePath /etc/ssl/certs/
#SSLCACertificateFile /etc/apache2/ssl.crt/ca-bundle.crt
# Списки отзыва сертификатов (CRL):
# Установите путь отзыва ЦС, где можно найти CRL ЦС для клиента
# аутентификация или, как вариант, один огромный файл, содержащий все
# из них (файл должен быть закодирован в PEM)
# Примечание: внутри SSLCARevocationPath вам нужны хэш-символические ссылки
# чтобы указать на файлы сертификатов. Используйте предоставленный
# Makefile для обновления хеш-символических ссылок после изменений.
#SSLCAREvocationPath /etc/apache2/ssl.crl/
#SSLCARevocationFile /etc/apache2/ssl.crl/ca-bundle.crl
# Аутентификация клиента (тип):
# Тип и глубина проверки клиентского сертификата. Типы
# нет, необязательный, требуемый и необязательный_no_ca. Глубина
# число, указывающее, насколько глубоко проверять сертификат
# цепочка эмитента, прежде чем решить, что сертификат недействителен.
#SSLVerifyClient требует
#SSLVerifyDepth 10
# Опции механизма SSL:
# Установите различные параметры для механизма SSL.
# о FakeBasicAuth:
# Преобразование клиента X.509 в базовую авторизацию. Это означает, что
# для управления доступом можно использовать стандартные методы Auth/DBMAuth.
# имя пользователя - это "однострочная" версия сертификата X.509 клиента.
# Обратите внимание, что пароль от пользователя не получен. Каждая запись в пользователе
# файлу нужен этот пароль: `xxj31ZMTZzkVA'.
# о ЭкспортCertData:
# Это экспортирует две дополнительные переменные среды: SSL_CLIENT_CERT и
# SSL_SERVER_CERT. Они содержат закодированные PEM сертификаты
# сервер (существует всегда) и клиент (существует только тогда, когда клиент
# используется аутентификация). Это можно использовать для импорта сертификатов
# в CGI-скрипты.
# о StdEnvVars:
# Это экспортирует стандартные переменные среды `SSL_*', связанные с SSL/TLS.
# По умолчанию этот экспорт отключен из соображений производительности,
# потому что этап извлечения является дорогостоящей операцией и обычно
# бесполезно для обслуживания статического контента. Таким образом, обычно включают
# экспорт только для запросов CGI и SSI.
# o OptRenegotiate:
# Это позволяет оптимизировать обработку повторного согласования SSL-соединения, когда SSL
# директивы используются в контексте каталога.
#SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Каталог /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Каталог>
# Настройки протокола SSL:
# Безопасное завершение работы по умолчанию, но все же совместимое со стандартом SSL/TLS
# подход заключается в том, что mod_ssl отправляет уведомление о закрытии, но не ждет
# уведомление о закрытии от клиента. Когда вам нужно другое отключение
# можно использовать одну из следующих переменных:
# o ssl-unclean-shutdown:
# Это приводит к нечистому завершению работы при закрытии соединения, т.е.
# Оповещение о закрытии SSL отправлено или разрешено к получению. Это нарушает
# является стандартом SSL/TLS, но необходим для некоторых браузеров с мертвым мозгом. Использовать
# это когда вы получаете ошибки ввода-вывода из-за стандартного подхода, где
# mod_ssl отправляет уведомление о закрытии.
# о ssl-точное отключение:
# Это вызывает точное завершение работы при закрытии соединения, т.е.
# Оповещение о закрытии SSL отправлено, и mod_ssl ожидает уведомления о закрытии
# оповещение клиента. Это на 100 % соответствует стандарту SSL/TLS, но в
# практика часто приводит к зависанию соединений с браузерами с мертвым мозгом. Использовать
# это только для браузеров, где вы знаете, что их реализация SSL
# работает корректно.
# Примечание. Большинство проблем с неработающими клиентами также связаны с протоколом HTTP.
# функция поддержания активности, поэтому обычно вы также хотите отключить
# поддерживать активность и для этих клиентов. Используйте для этого переменную «nokeepalive».
# Точно так же необходимо заставить некоторых клиентов использовать HTTP/1.0 для обходного пути.
# их неработающая реализация HTTP/1.1. Используйте переменные «downgrade-1.0» и
# "force-response-1.0" для этого.
# BrowserMatch "MSIE [2-6]" \
# nokeepalive ssl-unclean-shutdown \
# downgrade-1.0 force-response-1.0
</ виртуальный хост>
</ЕслиМодуль>
# vim: синтаксис=apache ts=4 sw=4 sts=4 sr noet
dev.example.de и cloud.example.de имеют подстановочный ssl-сертификат и перенаправляют оба в каталог html ??
введите описание изображения здесь
То же самое произошло, когда я использую это:
введите описание изображения здесь