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

Похоже, что Apache использует старый сертификат с истекшим сроком действия, хотя установлен новый

Apache 2.2.3 / mod_ssl / CentOS 5.5 VPS

Срок действия нашего сертификата истек 6 октября 2011 г., и хотя мы, похоже, правильно установили новый, при просмотре сайта по-прежнему отображается просроченный сертификат! Я пробовал удалить кеш своего браузера и использовать несколько разных браузеров. Соответствующие строки из файла ssl.conf (я исключил закомментированные):

Listen 127.0.0.1:443
SSLSessionCache         shmcb:/var/cache/mod_ssl/scache(512000)
SSLSessionCacheTimeout  300
# Note - I tried disabling SSLSessionCache with the "none" setting but it didn't help.
<VirtualHost 127.0.0.1:443>
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
SSLCertificateFile /var/certs/gentlemanjoe.com/new2011/gentlemanjoe.com.crt
SSLCertificateKeyFile /var/certs/gentlemanjoe.com/new2011/gentlemanjoe.com.key
SSLCertificateChainFile /var/certs/gentlemanjoe.com/new2011/gd_bundle.crt
SetEnvIf User-Agent ".*MSIE.*" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0
CustomLog logs/ssl_request_log \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
ServerAdmin webmaster@donotemailme.com
DocumentRoot /var/www/gentlemanjoe.com
ServerName gentlemanjoe.com
<Directory /var/www/gentlemanjoe.com>
    AllowOverride All
    Order deny,allow
    allow from all
</Directory>          
</VirtualHost>

Вещи, которые я проверил

Сначала я попытался переместить старые файлы сертификата и ключей в совершенно другую папку, чтобы убедиться, что Apache каким-то образом их не захватывает. Ничего не изменилось. Ради интереса я попытался временно переименовать новые файлы сертификатов и ключей, и Apache послушно пожаловался и отказался запускаться.

Затем я попытался убедиться, что меня не обманули, отредактировав неправильный файл конфигурации. Используя "locate", я нашел только один файл httpd.conf в /etc/httpd/conf/httpd.conf. Я также использовал команду «найти», чтобы убедиться, что существует только один файл ssl.conf, /etc/httpd/conf.d/ssl.conf. Ключевой файл - это то, что я создал с помощью OpenSSL, следуя инструкциям GoDaddy по созданию CSR.

Я подтвердил, что работаю с правильным сайтом, загрузив файл test.html в папку /var/www/gentlemanjoe.com и убедившись, что могу перейти к нему. Но если я попытаюсь просмотреть тестовый файл в HTTPS, я получаю такое же предупреждение об истечении срока действия сертификата.

Я проверил, что у самого сертификата правильная дата истечения срока действия:

openssl x509 -in /var/certs/gentlemanjoe.com/new2011/gentlemanjoe.com.crt -noout -text

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            07:e7:49:69:97:96:16
        Signature Algorithm: sha1WithRSAEncryption
        Issuer: C=US, ST=Arizona, L=Scottsdale, O=GoDaddy.com, Inc., OU=http://certificates.godaddy.com/repository, CN=Go Daddy Secure Certification Authority/serialNumber=07969287
        Validity
            Not Before: Oct 21 17:37:55 2011 GMT
            Not After : Oct  8 21:16:03 2013 GMT
        Subject: C=CA, ST=BC, L=Burnaby, O=Diamond Bailey Consolidated Commercial Services Ltd, OU= , CN=www.gentlemanjoe.com

Я попытался изменить ключ сертификата в GoDaddy с новым CSR, и все вроде работает, но в браузере я получаю тот же результат.

Возможная разгадка # 1

Всякий раз, когда я выполняю «перезапуск apachectl», я вижу это в файле error_log:

[Fri Oct 21 18:03:33 2011] [notice] SIGHUP received.  Attempting to restart
[Fri Oct 21 18:03:33 2011] [notice] Digest: generating secret for digest authentication ...
[Fri Oct 21 18:03:33 2011] [notice] Digest: done
[Fri Oct 21 18:03:33 2011] [info] APR LDAP: Built with OpenLDAP LDAP SDK
[Fri Oct 21 18:03:33 2011] [info] LDAP: SSL support available
[Fri Oct 21 18:03:33 2011] [info] Init: Seeding PRNG with 256 bytes of entropy
[Fri Oct 21 18:03:33 2011] [info] Init: Generating temporary RSA private keys (512/1024 bits)
[Fri Oct 21 18:03:33 2011] [info] Init: Generating temporary DH parameters (512/1024 bits)
[Fri Oct 21 18:03:33 2011] [info] Shared memory session cache initialised
[Fri Oct 21 18:03:33 2011] [info] Init: Initializing (virtual) servers for SSL
[Fri Oct 21 18:03:33 2011] [warn] RSA server certificate CommonName (CN) `www.gentlemanjoe.com' does NOT match server name!?
[Fri Oct 21 18:03:33 2011] [info] Server: Apache/2.2.3, Interface: mod_ssl/2.2.3, Library: OpenSSL/0.9.8e-fips-rhel5
[Fri Oct 21 18:03:34 2011] [notice] Apache/2.2.3 (CentOS) configured -- resuming normal operations
[Fri Oct 21 18:03:34 2011] [info] Server built: Aug 30 2010 12:28:40

Специалисты GoDaddy говорят мне, что www или non-www не имеет значения, и я склонен согласиться, поскольку предупреждение системы безопасности в моем браузере не жалуется на несоответствие имени сервера, а скорее истечение срока, указывая, что старый сертификат все еще каким-то образом загружается.

Возможная разгадка # 2

Заголовок ответа HTTP-сервера для http://gentlemanjoe.com говорит «Андромеда», а не «Апач». Мне это кажется странным, так как мой поиск в Google "Андромеды" обнаружил проект типа медиа-сервера, который не был бы установлен на этом сервере (но я не могу сказать это с уверенностью, поскольку я не устанавливал ничего из этого , обычный администратор / разработчик в отпуске, а я просто помогаю другу с его сайтом.) Кроме того, файл httpd.conf не содержит строки «Andromeda», указывающей на то, что он не был изменен, чтобы выплеснуть это. Возможно, он использует платформу электронной коммерции Magento, но какой смысл заменять стандартный заголовок ответа Apache?

Что-то перед Apache. Проверьте эту конфигурацию:

Listen 127.0.0.1:443
....
<VirtualHost 127.0.0.1:443>

Он прослушивает только локальный хост, поэтому интернет-клиенты не обращаются к этой службе напрямую - они, вероятно, получают прокси.

Для проверки работоспособности Apache, загружающего правильный сертификат, вызовите службу непосредственно на слушателе Apache: openssl s_client -connect 127.0.0.1:443 -showcerts

Не уверен насчет заголовка Andromeda, поэтому давайте найдем процесс: lsof -i.

Apache будет иметь 127.0.0.1:443, а у некоторых других сервисов 0.0.0.0:443 (или публичный адрес VPS :443) - это тот, который нуждается в новом сертификате.

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

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

service apache2 stop

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

Теперь беги

ps aux | grep apache

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

kill <pid>

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

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

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

service apache2 start

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

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