У меня есть веб-сайт, на котором мы недавно включили SSL. В большинстве браузеров это нормально работает: наши скрипты и таблицы стилей импортируются с использованием HTTPS, и большинство браузеров успешно загружают страницы. Однако в некоторых случаях защищенные страницы загружаются без стилей страницы или JavaScript.
Одно место, где мы постоянно воспроизводили это, - это Mac OS X (v10.6.4) с Safari 5. У нас есть еще один пользователь, который сообщает о постоянных проблемах в Mac OS X с Chrome v5, но я не вижу проблем с Chrome v6.
Safari сообщает мне, что сертификат недействителен, поскольку он подписан «неизвестным» органом (DigiCert). Это усложняет ситуацию, поскольку в Safari в Windows такой проблемы нет. Однако по крайней мере в Safari пользователь может указать браузеру всегда доверять контенту с сайта, и таблицы стилей и скрипты будут загружаться соответствующим образом.
Большинство пользователей Chrome, столкнувшихся с этой проблемой, имеют аналогичную сигнатуру ошибки. Однако один из них сообщает, что его браузер загружает файлы с пустым содержимым. В этих ситуациях консоль ошибок Chrome указывает, что файл был интерпретирован как правильный тип, но передан с пустым типом MIME.
Сам сайт работает под управлением Apache, а сервер статического содержимого использует Lighttpd.
Непоследовательность этой проблемы затрудняет определение, поэтому любые предложения будут оценены.
Оказалось, что это проблема с тем, как мы настраиваем сертификат на нашем сервере статического содержимого. Он был настроен в Lighttpd таким образом, что Safari не мог проследить цепочку сертификации до промежуточного сертификата от корневого сертификата. Нам пришлось сложить сертификаты в один файл и переместить сертификат сервера в файл pem. После этого Safari обработал запросы к нашему статическому серверу как действительные и снова начал предоставлять браузеру JavaScript и CSS.
У меня была такая же проблема с nginx. Согласно DigiCert и документации nginx, сертификат сайта и промежуточный сертификат необходимо объединить:
http://www.digicert.com/ssl-certificate-installation-nginx.htm
http://wiki.nginx.org/HttpSslModule
cat intermediate_certificate.crt >> your_domain_name.crt
nginx (и в вашем случае lighttpd) не имеет отдельной директивы SSLCertificateChainFile, такой как Apache, и вместо этого требуется, чтобы сертификаты были «связаны» вручную.
Вы помещали жестко заданные ссылки на файлы с полным URL? например 'http: //server/file.cs'
Если браузер отказывается отображать небезопасный контент для защищенной веб-страницы, вы столкнетесь с описанной вами проблемой.