Я использую сервер 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
соединения для изображений / файлов?
РЕДАКТИРОВАТЬ: Это только запросы GET (действий POST / DELETE нет).
Кроме того, переход к изображению (или файлу) как https://abc.example.com/images/path/to/file.jpg
с HTTPS полностью работает. Но когда сервер отчетов использует ту же ссылку, отображается пустая страница.
Журналы доступа Apache покажут указанную выше ссылку как попадание при прямой навигации, но когда сервер отчетов использует ее, и я перехожу к отчету, Apache журналы доступа вообще ничего не показывают.
Мы разобрались с этим. Хотя сервер 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
!
Предложения по устранению неполадок:
Подтвердите свою среду:
Подтвердите описание проблемы:
Мне любопытно, ВСЕ https "сломаны" или просто "некоторые вещи" недоступны.
Создайте тестовый файл (ПРИМЕР: /var/www/html/myreport/hello.html
) и проверьте, можете ли вы читать его одновременно с http и https.
При тестировании используйте один (или оба) из этих инструменты на вашем ПК для анализа попытки браузера подключиться (и, таким образом, помочь определить конкретную точку сбоя):
Отправьте ответ, что вы нашли.
PS :
Вот несколько дополнительных советов. В частности, «включить подробное ведение журнала»:
https://www.futurehosting.com/blog/troubleshooting-the-most-common-apache-problems-youll-encounter/
PPS:
Я бы НЕ отключать http, пока проблема не будет решена:
На вашем
вы включаете 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: //
.