У меня есть установка Jenkins в ci.example.com, и статический сайт по адресу example.com. Установка Jenkins настроена на использование исключительно HTTPS. Я скряга, поэтому у меня есть только сертификат на ci.example.com домен. Моя конфигурация Apache выглядит так:
<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/html
ErrorDocument 404 /404.html
</VirtualHost>
<VirtualHost *:80>
ServerName ci.example.com
Redirect permanent / https://ci.example.com
</VirtualHost>
<VirtualHost *:443>
ServerName https://ci.example.com
ServerAlias ci
SSLEngine on
SSLCertificateKeyFile /etc/apache2/ssl/ci.example.com.key
SSLCertificateFile /etc/apache2/ssl/ci.example.com.crt
SSLCertificateChainFile /etc/apache2/ssl/ci.example.com.ca-bundle
# Some proxy magic to make Jenkins work
</VirtualHost>
(на самом деле, это машина с Ubuntu, поэтому я просто вытащил соответствующие файлы конфигурации сайта и объединил их; в других файлах есть много других в основном несущественных конфигурационных файлов)
Когда я перейду к https://example.com, Я получаю сообщение об ошибке сертификата, потому что Apache выбирает единственный доступный виртуальный хост на порту 443. Можно ли выдать пользователю менее пугающую ошибку отказа в соединении?
Этот ответ говорит, что я не могу просто перенаправить с HTTPS на HTTP без сертификата, что имеет смысл, поскольку вам необходимо установить SSL-соединение (с сертификатом), прежде чем вы сможете отправить 3xx. Но я не хочу отправлять 3xx (или 4xx, если на то пошло). Я просто хочу полностью отказаться от подключения. Есть ли способ сделать это?
С вашей текущей настройкой:
Нет, нельзя просто отказаться от подключения ..
то есть без отказа в подключении к vHost ci.example.com.
Укусите пулю и получите сертификат для дополнительных имен хостов, или получите сертификат с подстановочными знаками, или используйте cloudlfare, и т.д., или примите предупреждения браузера, когда люди пытаются использовать HTTPS для vhost, для которого у вас нет сертификата.
Альтернативно:
Хост ci.example.com. на другом IP-адресе, чем example.com.
На IP, используемом для example.com, не слушайте 443.
Это приведет к отказу в соединении, которое вы ищете.
(однако это может не соответствовать заявленному вами статусу скряги)