Apache 2.4 SSL _default_ overriding virtualhost

У меня есть сервер Apache 2.4, на котором я создал самозаверяющий сертификат для тестирования https с новым клиентским сайтом. Проблема, с которой я столкнулся, заключается в том, что файл ssl.conf ' s всегда загружается для моего сайта, когда я пытаюсь перейти на определенный виртуальный хост, который я настроил в отдельном файле vhosts.conf.

Не могли бы кто-нибудь помочь мне понять, почему желаемый виртуальный хост никогда не загружается, а загружается только по умолчанию?

Мое содержимое ssl.conf

Listen 443 https

SSL Global Context
SSLPassPhraseDialog exec:/usr/libexec/httpd-ssl-pass-dialog

SSLSessionCache         shmcb:/run/httpd/sslcache(512000)
SSLSessionCacheTimeout  300

SSLRandomSeed startup file:/dev/urandom  256
SSLRandomSeed connect builtin

SSLCryptoDevice builtin

<VirtualHost _default_:443>
  DocumentRoot "/var/www/html"
  ServerName localhost:443

  ErrorLog logs/default_ssl_error_log
  TransferLog logs/default_ssl_access_log
  LogLevel warn

  SSLEngine on
  SSLProtocol all -SSLv2
  SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA

  SSLCertificateFile /etc/pki/tls/certs/localhost.crt
  SSLCertificateKeyFile /etc/pki/tls/private/localhost.key

  <Files ~ "\.(cgi|shtml|phtml|php3?)$">
    SSLOptions +StdEnvVars
  </Files>
  <Directory "/var/www/cgi-bin">
    SSLOptions +StdEnvVars
  </Directory>

  BrowserMatch "MSIE [2-5]" \
     nokeepalive ssl-unclean-shutdown \
     downgrade-1.0 force-response-1.0

  CustomLog logs/ssl_request_log \
      "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>

Мое содержимое файла виртуального хоста

<VirtualHost demo.ffh.com:443>
  ServerAdmin   skittles@site.com
  ServerName    demo.ffh.com
  DocumentRoot  "/var/www/vhosts/ffh/public"

  RewriteEngine On
  # And THIS doesn't seem to be working at all!
  LogLevel debug rewrite:trace8

  <Directory "/var/www/vhosts/ffh/public/">
    AllowOverride all
    SSLOptions +StdEnvVars
    #Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
    SSLRequireSSL On
  </Directory>

  SSLEngine on

  SSLCertificateKeyFile /etc/httpd/ssl/ssl.key/demo_ffh.key
  SSLCertificateFile    /etc/httpd/ssl/ssl.crt/demo_ffh.crt

  <FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
  </FilesMatch>

  BrowserMatch ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0

  CustomLog logs/ssl_ffh-access.log combined
  ErrorLog logs/ssl_ffh-error.log
</VirtualHost>

Кто-нибудь понимает, почему сайт vhosts.conf игнорируется в пользу значения по умолчанию? И как мне это исправить? Я весь день бился головой об стену с этим.

ПРИМЕЧАНИЕ: «Наверное, стоит сказать, что я пробовал использовать IP-адрес и *: 443 в vhost.conf вместо домена, но все равно не любил».

2
задан 11 July 2016 в 03:16
4 ответа

Хорошо ... Думаю, я исправил Это. O.o

Я не уверен, что именно заставило меня работать, но последние пару вещей, которые я сделал, были:

  1. Я создал новую личностьподписанный сертификат и установил конфигурацию vhost для его использования и соответствующего ключа.
  2. Затем я изменил конфигурацию виртуального хоста на *: 443.
  3. Перезапустил сервер apache. И ВИОЛА! Что дает?!

Ну ... может быть, урок усвоен?

0
ответ дан 3 December 2019 в 12:39

У меня возникла эта проблема, и четыре решения заключались в

  1. изменении путей, указывающих на мои сертификат и ключ (и любые другие промежуточные сертификаты?) непосредственно в /etc/httpd/conf.d/ssl.conf

. Это нормально, если у вас есть только один сертификат SSL для всей машины.

  1. удалите вся запись виртуального хоста по умолчанию из ssl.conf,

Это дает мне конфигурацию в SSL.conf и позволяет мне определять мои собственные записи VirtualHost для нескольких сертификатов SSL (при необходимости)

  1. помещают ssl.conf (в алфавитном порядке) после желаемого файла conf, который я назвал «vhosts.conf» (я изменил ssl.conf на «vv.conf» на проверьте это)

Это также работает для нескольких сертификатов SSL в моем файле vhosts.conf, но заставляет меня чувствовать себя грязным, потому что я меняю имена. Я думаю, можно было бы использовать синтаксис conf.modules.d-meet-sitesenabled файла 010-vhosts.conf 020-ssl.conf и чувствую себя немного менее грязным.

  1. поместил мой собственный сертификат и ключ в /etc/pki/tls/certs/localhost.crt и /etc/pki/tls/private/localhost.key

Эх ... может быть, для некоторых ... Мне это не понравилось.

1
ответ дан 3 December 2019 в 12:39

Давайте сначала зашифруем остановленную обработку ssl.conf

Думаю, у меня обратная проблема . OP здесь хочет, чтобы файл Vhost обрабатывался вместо ssl.conf.

Мне нужно, чтобы ssl.conf обрабатывался до e.conf, как это было раньше. Я не понимаю, почему раньше ssl.conf был по умолчанию и никакие файлы в /etc/httpd/conf.d не мешали, даже если они были первыми по алфавиту.

Я думаю, что решением для моего случая была бы переустановка, если кто-то не может предложить лучшее решение.

Редактировать: я нашел лучшее решение, чем переустановка (по крайней мере, на данный момент) Давайте сначала остановим шифрование ssl.conf Но я думаю, что это хак, и я все еще ищу варианты получше.

РЕДАКТИРОВАТЬ: Исправление моей проблемы заключалось в переименовании файла em-le-ssl.conf, а не em.conf во что-то после ssl.conf в алфавитном порядке. Чтобы решить эту проблему, спрашивающему придется переименовать свой файл vHost-le-ssl.conf во что-то, предшествующее ssl.conf.

0
ответ дан 8 May 2020 в 20:49

Действительно кажется (см. этот ответ), что вам нужно поставить

<VirtualHost *:443>

для вашего сайта/конфигурационного файла (и каждого из них) вместо

<VirtualHost demo.ffh.com:443>

Разрешение будет выполнено параметром ServerName.

0
ответ дан 17 January 2022 в 08:07

Теги

Похожие вопросы