У меня есть директива virtualhost, которая выдает настраиваемую ошибку 404, если введен недопустимый поддомен:
<VirtualHost *:80> # the first virtual host
ServerName site_not_found
RedirectMatch 404 ^/(?!custom_error)
</VirtualHost>
<VirtualHost *:80>
ServerName example.com
ServerAlias ??.example.com
</VirtualHost>
Я хочу настроить виртуальный хост, чтобы отображать ту же настраиваемую ошибку через HTTPS-соединение. Я пробовал следующее:
<VirtualHost *:443> # the first virtual host
ServerName site_not_found
RedirectMatch 404 ^/(?!custom_error)
</VirtualHost>
<VirtualHost *:443>
ServerName example.com
ServerAlias ??.example.com
# SSL options, other options, and stuff defined here.
</VirtualHost>
Но сервер не запускается и выдается ошибка:
Сервер должен поддерживать SSL, но не имеет настроенного сертификата [Подсказка: SSLCertificateFile] ((null): 0)
Кажется, что сертификат SSL требуется, даже если SSLEngine не включен для этого виртуального хоста. Есть ли способ обойти проблему, кроме предоставления сертификата? Выключить модуль нельзя, так как мне нужен SSL для виртуального сервера example.com.
Кажется, что сертификат SSL требуется, даже если SSLEngine не включен для этого виртуального хоста. Есть ли способ обойти проблему, кроме предоставления сертификата?
Нет - если в вашем браузере https
в URL-адресе предполагается использование SSL. нет, это не удастся. Apache любезно сообщает вам об этом, иначе вы столкнетесь с какими-то непонятными ошибками браузера, которые нужно будет понять. Следовательно, вам нужно настроить SSL в Apache, прежде чем вы сможете использовать порт 443
.
Если вам не нужны предупреждения браузера о том, что это плохой сертификат SSL, вам нужно купить его в центре сертификации. Вы жестяная банка получить бесплатный от https://cert.startcom.org/ которые становятся все более популярными, но, вероятно, не имеют такого же уровня признания, как платные (особенно на старых машинах). Я использую это для своих сайтов разработки и еще не видел предупреждения о том, что им нельзя доверять, но опять же, я использую только относительно новые ОС / браузеры.
Да, есть способ:
Настройте директиву прослушивания Apache (в Ubuntu /etc/apache2/ports.conf
)
В нем будет что-то вроде: Listen *:443
Вы можете принудительно использовать HTTP, добавив к нему протокол:
Listen *:443 http
Таким образом, Apache2 может прослушивать порт 443 как простой HTTP-сервер.
Найдено здесь: https://httpd.apache.org/docs/2.4/bind.html
Игнорирование ошибки Apache из-за отсутствия сертификатов SSL, то, что вы пытаетесь сделать, невозможно, если вы не создадите или не купите сертификат с подстановочными знаками для покрытия «недействительных» поддоменов.
Если все ваши клиенты являются внутренними, вы можете создать мини-центр подписи и установить весь сертификат CA на все свои устройства.
Если ваши клиенты являются внешними, вам придется купить подстановочный сертификат, который стоит около 600 долларов США.