Я установил два сертификата ssl на apache2, но когда я вхожу с доменом, первый сертификат работает, и когда я вхожу с ipadress сервера, он показывает мне тот же сертификат, который у меня есть в домене. Я отключил хосты default и default-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>
Пожалуйста, проверьте второй ssl, для которого был приобретен домен, и введите домен вместо IP-адреса.
ServerName 188.226.208.247
change to
ServerName domainname .
Как упоминается в Вики-сайт Apache Common Misconfigurations
"... Из-за природы SSL информация о хосте не используется при установке SSL-соединения. Apache всегда будет использовать сертификат виртуального хоста по умолчанию, который является первым определенным виртуальным хостом для виртуальных хостов на основе имен. Хотя это не означает, что вы никогда не сможете получить доступ ко второму виртуальному хосту, это означает, что ваши пользователи всегда будут получать предупреждение о несоответствии сертификата при попытке доступа к some.domain2.com ... "
И из апача документы:
"... Причина в том, что протокол 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.8j).
Коротко:
Если вы хотите использовать разные сертификаты SSL для виртуальных хостов, вам необходимо указать разные IP-адреса для каждого из них или использовать SNI.