URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 96153
[ Назад ]

Исходное сообщение
"wildcard ssl сертификат и ServerAlias"

Отправлено ALex_hha , 28-Май-15 11:02 
собственно столкнулся с непонятным поведением apache

Есть два виртуалхоста


<VirtualHost *:443>
   ServerName blog.example.com
   DocumentRoot /vhosts/blog.example.com
  
   SSLCertificateFile blog.example.com.crt
   ...
</VirtualHost>

<VirtualHost *:443>
   ServerName example.com
   ServerAlias *.example.com
   DocumentRoot /vhosts/example.com

   SSLCertificateFile example.com.crt
   ...
</VirtualHost>


Во втором виртуалхосте используется wildcard сертификат

На сервере один ip адрес, т.е. используется SNI. Так вот, когда я набираю https://blog.example.com и https://example.com все работает корректно и отдается соответствующий сертификат для каждого из хостов. Но при попытке открыть https://www.example.com почему то отдается сертификат первого хоста, т.е. от блога, который является дефолтным.

Собственно вопрос, почему запрос попадает в первый виртуальный хост, а не во второй под условие ServerAlias *.example.com ?

CentOS 6,

# httpd -v
Server version: Apache/2.2.15 (Unix)
Server built:   Oct 16 2014 14:48:21

Проверял на win 7, chrome 43.x


Содержание

Сообщения в этом обсуждении
"wildcard ssl сертификат и ServerAlias"
Отправлено ALex_hha , 28-Май-15 17:08 
Оказывается виной всему было указание порта в ServerAlias. При этом, что интересно, никаких ошибок или хотя бы предупреждений в логах. Т.е. apache просто игнорировал директиву ServerAlias.

"wildcard ssl сертификат и ServerAlias"
Отправлено eRIC , 01-Июн-15 15:47 
> Оказывается виной всему было указание порта в ServerAlias. При этом, что интересно,
> никаких ошибок или хотя бы предупреждений в логах. Т.е. apache просто
> игнорировал директиву ServerAlias.

Дело не в порте,а сервере по умолчанию. Учитывая что blog.example.com в конфиге указан первым, то при любом обращении www.example.com будет отрабатывать сервер по умолчанию, т.е. blog.example.com

Побольше курите доку по httpd (http://httpd.apache.org/docs/2.4/vhosts/examples.html):

The asterisks match all addresses, so the main server serves no requests. Due to the fact that the virtual host with ServerName www.example.com is first in the configuration file, it has the highest priority and can be seen as the default or primary server. That means that if a request is received that does not match one of the specified ServerName directives, it will be served by this first VirtualHost.



"wildcard ssl сертификат и ServerAlias"
Отправлено ALex_hha , 01-Июн-15 21:23 
> Дело не в порте,а сервере по умолчанию. Учитывая что blog.example.com в конфиге
> указан первым, то при любом обращении www.example.com будет отрабатывать сервер по
> умолчанию, т.е. blog.example.com

с какого это перепуга? У меня был ServerAlias с wildcard под который и должен был попадать www.example.com. Но так как, какие то криворукие ребята прописали там порт, то директива ServerAlias просто игнорировалась, но при этом никаких ошибок или предупреждений в логах не было, что меня собственно и смутило. И тогда, apache не найдя точного соответствия - открывал дефолтный хост.

Как только я убрал порт в ServerAlias все сразу заработало так, как и предполагалось, т.е. www стал попадать во второй виртуальный хост