На этот вопрос уже есть ответ здесь:
Я установил два сертификата ssl на apache2, но когда я вхожу с доменом первый сертификат работает, и когда я вхожу с IP-адресом сервера, он показывает мне тот же сертификат, который у меня есть в домене. Я отключил хосты по умолчанию и ssl по умолчанию. Вот мои виртуальные хосты:
<VirtualHost *:443>
ServerAdmin mail@example.com
ServerName example.com:443
ServerAlias www.example.com:443
DocumentRoot /var/www/example.com/public_html
ErrorLog /var/log/apache2/error-log.log
CustomLog /var/log/apache2/custom-log.log common
DirectoryIndex index.html index.php index.xhtml index.htm
#Allow phpmyadmin /usr/share/phpmyadmin
<Directory /usr/share/phpmyadmin>
Options -Indexes FollowSymLinks
AllowOverride None
Order deny,allow
allow from all
</Directory>
<Directory />
Options -Indexes FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>
<Directory /var/www/>
Options FollowSymLinks MultiViews -Includes -ExecCGI -Indexes
AllowOverride All
Order allow,deny
allow from all
LimitRequestBody 104857600
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
SSLEngine on
SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
SSLCertificateFile /etc/apache2/ssl/first-ssl.crt
SSLCertificateKeyFile /etc/apache2/ssl/first-ssl.key
SSLCertificateChainFile /etc/apache2/ssl/first-ssl.crt
</VirtualHost>
<VirtualHost *:443>
ServerAdmin example@example.com
ServerName 188.226.208.247
DocumentRoot /var/www/
SSLEngine on
SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
SSLCertificateFile /etc/apache2/ssl/second-ssl.crt
SSLCertificateKeyFile /etc/apache2/ssl/second-ssl.key
</VirtualHost>
Как упоминается в Вики-сайт Apache Common Misconfigurations
"... Из-за природы SSL информация о хосте не используется при установке SSL-соединения. Apache всегда будет использовать сертификат виртуального хоста по умолчанию, который является первым определенный виртуальный хост для виртуальных хостов на основе имен. Хотя это не означает, что вы никогда не сможете получить доступ ко второму виртуальному хосту, это означает, что ваши пользователи всегда будут получать предупреждение о несоответствии сертификата при попытке доступа к some.domain2.com ... "
И из apache docs :
"... Причина в том, что протокол SSL является отдельным уровнем, который инкапсулирует протокол HTTP. Таким образом, сеанс SSL - это отдельная транзакция, которая происходит до начала сеанса HTTP. Сервер получает запрос SSL на IP-адрес X и порт Y (обычно 443). Поскольку запрос SSL не содержал поля Host :, сервер не мог решить, какой виртуальный хост SSL использовать. Обычно он просто использовал первый найденный, соответствующий указанному порту и IP-адресу. ... "
Возможно иметь несколько сертификатов SSL с одним IP-адресом с SNI (указание имени сервера), но только в самых последних версиях Apache и OpenSSL (с Apache v2.2.12 и OpenSSL v0.9.8 j).
Вкратце:
Если вы хотите использовать разные сертификаты SSL для виртуальных хостов, вам необходимо предоставить разные IP-адреса для каждого из них или использовать SNI.
Пожалуйста, проверьте второй SSL, приобретенный для какого домена, и введите домен вместо IP-адреса.
ServerName 188.226.208.247
change to
ServerName domainname .