Назад | Перейти на главную страницу

Сертификат сервера НЕ включает идентификатор, который соответствует имени сервера

Наш сервер был обновлен вчера, поэтому теперь на нем более обновленные 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 можно использовать для проверки отсутствия каких-либо промежуточных сертификатов или наличия других проблем.