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

Обновлены сертификаты SSL и условия перезаписи, которые больше не работают для apache2

Я использую сервер Ubuntu 14.04 с Apache2 v2.4.7.

Недавно наш сайт получал ошибки от Chrome, говоря, что нам нужно обновить наши сертификаты. Я только что завершил это ранее на этой неделе, обновив сертификаты SSL, а затем перезапустив Apache. Через пару дней мой клиент вернулся и упомянул, что определенные изображения и файлы больше не доступны через их сервер отчетов. Сервер отчетов использовал HTTPS для доступа к изображениям и файлам.

В моем файле conf есть это, которое не изменилось с тех пор, как я унаследовал этот сервер:

<VirtualHost *:80>
    ServerName abc.example.com
    DocumentRoot /home/deployer/html/_abc/public
    RewriteEngine On

    RewriteCond %{HTTPS} off
    RewriteCond %{REQUEST_URI} !^/files/
    RewriteCond %{REQUEST_URI} !^/images/checksheets/
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
</VirtualHost>

<VirtualHost *:443>
    ServerName abc.example.com
    DocumentRoot /home/deployer/html/_abc/public
    SSLEngine on
    SSLProtocol all -SSLv2 -SSLv3
    SSLCipherSuite          ECD....C3-SHA:!DSS
    SSLHonorCipherOrder     on
    SSLCompression          off
    SSLCertificateFile /etc/ssl/ssl_certificate.crt
    SSLCertificateKeyFile /etc/ssl/abc_staging.key
    SSLCertificateChainFile /etc/ssl/IntermediateCA.crt
    # HSTS (mod_headers is required) (15768000 seconds = 6 months)
    Header always set Strict-Transport-Security "max-age=15768000"
    <Directory /home/deployer/html/_abc/public>
        AllowOverride all
        Options FollowSymLinks
        # -MultiViews
        #   Order allow,deny
        Require all granted
    </Directory>

Единственное, что я сделал на сервере, буквально обновил ssl_certificate и IntermediateCAs и перезапустил Apache, поэтому я не уверен, что произошло. В последний раз сертификат SSL обновлялся, вероятно, около года назад, и способ получения изображений / файлов сервером отчетов не изменился. Я также довольно часто перезапускаю Apache, и раньше это никогда не было проблемой.

По прихоти мой клиент создал новый отчет, используя http вместо того https, и это, казалось, сработало отлично.

Мой вопрос на самом деле в том, что могло измениться, чтобы сервер внезапно перестал принимать https подключения для изображений / файлов?

EDIT: это только запросы GET (нет действий POST / DELETE).

Кроме того, переход к изображению (или файлу) как https://abc.example.com/images/path/to/file.jpg с HTTPS полностью нормально работает. Но когда сервер отчетов использует ту же ссылку, отображается пустая страница.

Журналы доступа Apache будут отображать указанную выше ссылку как попадание при прямой навигации, но когда сервер отчетов использует ее, и я перехожу к отчету, журналы доступа Apache вообще ничего не показывают.

Предложения по устранению неполадок:

  1. Подтвердите свою среду:

    • Сервер Ubuntu 14.04 с Apache2 v2.4.7.
    • Ваш httpd.conf настроен для обслуживания как HTTP (: 80) и HTTPS (: 443).
    • Конфигурация вашего сертификата (указанная выше) верна, а файлы и (SSLCertificateFile и т. Д.) Существуют и не были «повреждены».
  2. Подтвердите описание проблемы:

    • «Раньше все работало» до того, как вы обновили свой сертификат SSL, «проблема» как-то связана с новым сертификатом.
    • Все пользователи, которые пытаются «получать отчеты» через https (ПРИМЕР https://apache-server.com/myreport) терпят неудачу - они просто видят «белое». Это верно?
    • Те же пользователи могут успешно получать одни и те же отчеты, если они используют http (ПРИМЕР: http://apache-server.com/myreport) вместо этого. Это тоже правильно?
    • Есть ли что-нибудь «особенное» в отчетах? Например, это веб-приложение?
  3. Мне любопытно, если ВСЕ https "сломан" или просто "некоторые вещи" недоступны.

    Создайте тестовый файл (ПРИМЕР: /var/www/html/myreport/hello.html) и проверьте, можете ли вы прочитать его одновременно с http и https.

  4. При тестировании используйте один (или оба) из этих инструментов на своем ПК, чтобы проанализировать попытку браузера подключиться (и, таким образом, помочь определить конкретную точку отказа):

  5. Пожалуйста, опубликуйте то, что вы нашли.

PS:

Вот несколько дополнительных советов. В частности, «включить подробное ведение журнала»:

https://www.futurehosting.com/blog/troubleshooting-the-most-common-apache-problems-youll-encounter/

PPS:

я буду НЕ отключите http, пока не решите проблему:

  • По крайней мере, это временное решение для тех людей, которым могут понадобиться отчеты.
  • Возможность сравнить поведение http и https поможет в устранении неполадок.

На ваше <VirtualHost *:443> вы включаете HSTS. Это указывает браузеру внутренне переписывать каждый запрос домена на HTTPS. После этого использовать RewriteCond %{REQUEST_URI} !^/files/ так как все уже должно быть безоговорочно переписано, что дает вам возможность упростить конфигурацию:

<VirtualHost *:80>
    ServerName abc.example.com
    Redirect permanent / https://abc.example.com/
</VirtualHost>

Проблема с пустой страницей вообще не кажется проблемой на стороне сервера, вызванной вашим Apache. Тот факт, что вы можете получить доступ к URL-адресу с другого компьютера, в значительной степени это доказывает.

Сначала очистите все кеши на «сервере отчетов» и посмотрите, поможет это или нет. Подробностей о том, как работает этот «сервер отчетов», нет, но пустая страница может быть, например, результатом того, что не отображается кэшированное изображение URL-адреса HTTP на странице HTTPS из-за изменения политики смешанного содержимого. Если это так, согласованность между перенаправлением и политикой HSTS может предотвратить такое кеширование в будущем.

Также исправьте все http:// URL-адреса вашего контента на https://.

Мы разобрались. Хотя с сервером Apache все в порядке, по-видимому, ранее у нас был конкретный фрагмент параметров DH, сохраненный в файле сертификата. Этот фрагмент был добавлен, потому что сервер отчетов, который запрашивает изображения и файлы, работает на Java 6. А Java 6 может обрабатывать только параметры DH размером 1024 бит.

Так что в моем новом ssl_certificate.crt, Я добавил

-----BEGIN DH PARAMETERS-----
MIGHAoGBAP//////////yQ/aoiFowjTExmKLgNwc0SkCTgiKZ8x0Agu+pjsTmyJR
Sgh5jjQE3e+VGbPNOkMbMCsKbfJfFDdP4TVtbVHCReSFtXZiXn7G9ExC6aY37WsL
/1y29Aa37e44a/taiZ+lrp8kEXxLH+ZJKGZR7OZTgf//////////AgEC
-----END DH PARAMETERS----- 

из http://httpd.apache.org/docs/current/ssl/ssl_faq.html#javadh

К сожалению, это понижает рейтинг нашего сертификата с A + до B, но мне не разрешено обновлять сервер Java с 6 до более нового.

Как только я добавил этот фрагмент в свой ssl-сертификат, сервер отчетов смог получить доступ к изображениям через https!