Я настраиваю новый веб-сервер, на котором размещается дюжина виртуальных хостов на Ubuntu 12.4 с использованием Apache 2.2.22 с одним файлом конфигурации для каждого сайта. Я создал все файлы конфигурации сразу и запустил a2ensite *
чтобы включить их все сразу. Когда я перезагрузил конфигурацию, это не удалось, и после перезапуска apache я обнаружил следующее сообщение об ошибке в моем error.log:
К сожалению, для server.host.name:0 не найден сертификат сервера RSA или DSA ?!
Большинство результатов для этого сообщения об ошибке датированы годами, которые не устраняют проблему, или являются исправленными ошибками. https://issues.apache.org/bugzilla/show_bug.cgi?id=31709
Сводка: эта ошибка также может возникнуть, если вы забудете следующую строку в своем VirtualHost
раздел:
SSLEngine on
Проблема оказалась в разные файла конфигурации, чем хост, указанный в ошибке. Это произошло из-за того, что в двух файлах были повторяющиеся значения ServerName. Я исправил не тот, и он начал резервное копирование (пока, эти полчаса) :-).
Чтобы устранить эту проблему, я отключил все сайты, а затем включил пару за раз, пока снова не столкнулся с проблемой.
Вы также можете получить эту ошибку, если используете сертификат с несколькими альтернативными именами субъектов, но ServerName
директива не соответствует значению (значениям) CN или SAN сертификата. ИТ-отдел часто случается, когда разработчик хочет получить версию для разработки того же рабочего сайта, но для этого сайта нет настоящего сертификата.
Примеры веб-сайтов:
webserver.example.com
webserver-dev.example.com
Сертификат:
CN = primaryserver.example.com
SAN = webserver.example.com, puppies.example.com, kittens.example.com
Следующая конфигурация вызовет эту ошибку:
/etc/apache2/sites-enabled/webserver.example.com-ssl.conf
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName webserver.example.com
...
/etc/apache2/sites-enabled/webserver-dev.example.com-ssl.conf
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName webserver-dev.example.com
...
Следующая конфигурация решает эту проблему:
/etc/apache2/sites-enabled/webserver.example.com-ssl.conf
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName webserver.example.com
...
/etc/apache2/sites-enabled/webserver.example.com-ssl.conf
<IfModule mod_ssl.c>
<VirtualHost webserver-dev.example.com:443>
ServerName webserver.example.com
...
FWIW, я снова столкнулся с этой проблемой под другим видом.
Если вы используете SSL-сертификаты с подстановочными знаками, убедитесь, что запись VirtualHost для домена (domain.com) указана перед любыми другими (foo.domain.com, bar.domain.com и т. Д.).
Я попробовал настроить конфигурацию по одному, и все остальное работало нормально, пока я не добавил этот файл обратно.
Затем я подумал, что имя файла конфигурации был ниже по алфавиту, чем конфигурационный файл с "определением основного домена". Изменил символическую ссылку так, чтобы она была помещена после основного определения, и все работало как шарм.
Пример порядка неудачного листинга:
foo.domain.conf
prim.domain.conf
something.domain.conf
Листинг рабочего примера:
prim.domain.conf
something.domain.conf
zfoo.domain.conf
HTH кто-то другой :)