Наш сервер был обновлен вчера, поэтому теперь на нем более обновленные Ubuntu, Apache 2.4.10, PHP и т. Д. После того, как я все вернул, Apache начал жаловаться на мою конфигурацию.
На сервере размещен сайт, который использует подстановочные знаки для динамического контента для разных клиентов и содержит 3 подстановочных сертификата для различных услуг для этих клиентов.
Часть конфига с подстановочным знаком выглядит так:
<VirtualHost *:80>
ServerName *.dashboard.example.com
ServerAlias *.dashboard.example.com
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(.+)\.dashboard.example\.com$
RewriteRule ^/(.*)$ https://%1.dashboard.example.com/$1 [R=302,L]
</VirtualHost>
<VirtualHost *:443>
ServerAdmin webmaster@example.com
ServerName *.dashboard.example.com
ServerAlias *.dashboard.example.com
DocumentRoot /var/www/dashboard.example.com/web
<Directory />
AllowOverride All
Options -Indexes +MultiViews +FollowSymLinks
Order Deny,Allow
Allow from all
</Directory>
ErrorLog /var/log/apache2/dashboard.example.com-error.log
CustomLog /var/log/apache2/dashboard.example.com-access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/certs/bundle_wc_dashboard_example_com.crt
SSLCertificateKeyFile /etc/ssl/certs/wildcard_dashboard_example_com.key
</VirtualHost>
Обратите внимание, что я использую комплект в качестве файла сертификата. Использование отдельных файлов для промежуточных и корневых файлов приводит к еще худшему результату при использовании проверок SSL. Тогда сертификат GeoTrust не распознается. Мой поставщик сертификатов SSL объяснил, что начиная с Apache 2.4 сертификаты должны быть пакетами.
Так что это не работает для меня:
SSLCertificateFile /etc/ssl/certs/wildcard_dashboard_example_com.crt
SSLCertificateKeyFile /etc/ssl/certs/wildcard_dashboard_example_com.key
SSLCertificateChainFile /etc/ssl/certs/GeoTrust_Global_CA.crt
SSLCertificateChainFile /etc/ssl/certs/RapidSSL_SHA256_CA_G3.crt
Однако вышеперечисленное работало на Apache 2.2.
Когда я пытаюсь запустить apache, он жалуется на ServerName
стоимость:
[FAIL] Reloading web server: apache2 failed!
[warn] The apache2 configtest failed. Not doing anything. ... (warning).
Output of config test was:
AH00526: Syntax error on line 42 of /etc/apache2/sites-enabled/3-production.conf:
Invalid ServerName "*.dashboard.example.com" use ServerAlias to set multiple server names.
Action 'configtest' failed.
The Apache error log may have more information.
Похоже, звездочка не разрешена. Если я удалю звездочку, apache запустится, но в журнале ошибок домена появится ошибка:
Пт 11 марта 10: 32: 13.821304 2016] [ssl: warn] [pid 18019] AH01909: dashboard.example.com:443:0 сертификат сервера НЕ включает идентификатор, который соответствует имени сервера.
Из других источников я нашел следующую команду, которую следует использовать для определения CommonName, которое следует использовать как ServerName:
openssl x509 -in wildcard_dashboard_example_com.crt -noout -subject
Что возвращает:
subject = /CN=*.dashboard.example.com
В моем браузере отображается зеленый замок, но проверки SSL жалуются, что мне не хватает промежуточного файла сертификата / цепочки (см. Снимок экрана). Та же проблема возникает на том же сервере для 2 других доменов с подстановочными знаками и 1 нормального поддомена, который не является подстановочным знаком. Даже там apache утверждает server certificate does NOT include an ID which matches the server name
. Сайт использует подстановочные знаки для динамического контента для разных клиентов и содержит 3 подстановочных сертификата для разных услуг для этих клиентов.
Есть идеи, как я могу это исправить? Что еще я могу сделать, чтобы проверить, что не так?
Обновление 18 мая 2016 г.
Я исправил это в начале апреля. Оказалось, что компания, предоставившая сертификаты SSL, дала нам старый корневой сертификат. Они отправили мне почтовый индекс, содержащий как связанный сертификат, так и отдельные файлы сертификатов. Я пытался установить их несколько раз. Затем я вручную сравнил содержимое всех файлов с другими сайтами, которые действительно работали. Я заметил разницу и повторно загрузил сертификаты вручную с их сайта.
Сертификат GeoTrust был другим. После установки все заработало как шарм. Мой босс сказал мне, что свяжется с ними по этому поводу, но, к сожалению, этого не произошло. Счастлив, что теперь все равно работает.
Если сертификат действителен только для *.dashboard.example.com
, это не действует для dashboard.example.com
(последний не соответствует подстановочному знаку).
ServerName
используется для указания канонического имени (одного имени) для сайта.
Дополнительные имена и подстановочные знаки входят только в ServerAlias
.
Настройка, например, ServerName foo.dashboard.example.com
должен работать (в сочетании с ServerAlias
у тебя есть).
Что касается упомянутых проблем с цепочкой сертификатов, они, похоже, не имеют отношения к фактическому вопросу.
Я бы предложил убедиться, что все необходимые промежуточные сертификаты правильно упакованы.
Как вы отметили SSLCertificateChainFile
устарело, вам не нужно его использовать, вы можете просто поместить все сертификаты в SSLCertificateFile
.
В Лаборатории SSL Qualy test можно использовать для проверки отсутствия каких-либо промежуточных сертификатов или наличия других проблем.