Apache обслуживает старый SSL-сертификат

Apache обслуживает старый SSL-сертификат

Я размещаю веб-страницу с Apache на Raspberry Pi (Debian) и не могу заставить сервер выдать текущий сертификат. Я сгенерировал самоподписанный SSL-сертификат с помощью /home/pi/ssl/:

openssl req -new -sha256 -x509 -nodes -days 365 -out example.com.pem -keyout example.com.key

Apache ищет пару файлов .pemи .keyиз файла file /etc/apache2/sites-enabled/owncloud.conf, который содержит:

SSLCertificateFile    /home/pi/ssl/example.com.pem
SSLCertificateKeyFile /home/pi/ssl/example.com.key

Когда я удаляю эти файлы и перезапускаю Apache, я получаю ошибку [FAIL] Reloading web server config: apache2 failed!. Эта ошибка не возникает при перезапуске после генерации новой пары файлов сертификата, так что Apache, похоже, вызывает сертификат.

Однако сертификат, который появляется в браузерах (Chrome Incognito или FF/Safari в приватных окнах, и даже в браузере на компьютере, который наверняка никогда раньше не запрашивал домен), — это старый сертификат, который я сгенерировал месяц назад — см. ниже:

старые данные сертификата

Есть идеи, почему это происходит?

решение1

Оказывается, выданный сертификат по какой-то причине был сертификатом Apache "snakeoil" по умолчанию. Я установил это следующим образом:

grep -i -r "SSLCertificateChainFile" /etc/apache2/

.. который вернул 2 строки из файла /etc/apache2/sites-available/default-ssl, ссылающегося на сертификат Snakeoil. Я закомментировал эти строки, и теперь браузер возвращает настроенный сертификат.

решение2

Распространенным источником таких проблем является несколько запущенных экземпляров Apache. Изменения конфигурации подхватываются процессом, который вы (пере)запускаете, но запрос обслуживается старым процессом, который работает со старой конфигурацией.

Остановить службу:

service apache2 stop

Проверьте, доступен ли сайт. Если да, то вы определили причину.

Теперь беги

ps aux | grep apache

Это даст вам список запущенных процессов apache2 и их PID. Убейте их всех (обратите внимание, что эта команда может также возвращать несвязанные процессы с Apache в имени/пользователе и т. д., например Apache Tomcat, вы можете не захотеть убивать их.)

kill <pid>

Запустите ps aux еще раз и убедитесь, что процессы больше не запущены.

Проверьте еще раз, доступен ли сайт. Он не должен быть доступен.

Теперь запустите службу Apache.

service apache2 start

Убедитесь, что новый сертификат обслуживается.

Если вы не хотите убивать процессы, вы можете перезагрузить систему. Это даст тот же эффект.

Связанный контент