У меня есть подстановочный SSL-сертификат, установленный в домене, размещенном с Media Temples Dedicated Virtual 4.0. Вот простой пример страницы, которую я пытаюсь обслуживать через SSL: https://ssltest.bblhosted.com/
Другие люди, которых я спрашивал (около 4 или 5), говорят, что сайт отлично работает на их компьютерах, в различных браузерах, без предупреждений о безопасности. Однако на моем компьютере я получаю противоречивые результаты.
Вот мои результаты. Я использую последнюю версию OSX, Windows 7 работает через Parallels и последние версии всех браузеров:
OSX / Firefox: Замок показывает, проблем нет. Windows 7 / Firefox: Предупреждение - "Это соединение ненадежное"
OSX / Chrome: Предупреждение - «Безопасность этого сайта не заслуживает доверия!» Windows 7 / Chrome: Зеленый замок - «Идентификация подтверждена RappidSSL CA».
OSX / Opera: Предупреждение - «Цепочка сертификатов этого сервера неполная, и подписывающие лица не зарегистрированы. Принять? Windows 7 / Opera: Замок показывает: «Надежно подключено, чистая запись о безопасности».
OSX / Safari: Предупреждение - «Safari не может проверить подлинность веб-сайта»
Windows 7 / IE: Padlock показывает: «Это соединение с сервером зашифровано».
Мой вопрос: может ли кто-нибудь дать какое-либо представление о том, что может вызывать проблему здесь, или как ее исправить? Может быть, проблема только в моем компьютере, и если да, то в чем? Что особенно странно, так это то, что я получаю противоположные результаты в OSX и Windows 7 для одних и тех же браузеров.
Даже если вы можете просто прокомментировать, какой браузер / ОС вы используете, и работает ли он для вас, это было бы здорово! Спасибо.
_______ ОБНОВИТЬ:
Первоначальное электронное письмо от Rapid SSL дало мне один сертификат и один сертификат CA. Я обновил его, включив в него два сертификата CA Вот, с которым связан Кристофер Перрин.
Я тестировал ssltest.bblhosted.com с помощью Инструмент Rapid SSL и в нем говорится, что все настроено правильно (хотя этот инструмент работал успешно, прежде чем я также изменил сертификат CA).
Этот инструмент выдает ошибку - и говорит, что, скорее всего, это проблема с промежуточным сертификатом.
Я обновляю сертификат через Plesk и получаю предупреждение «Предупреждение: сертификат CA не подписывает сертификат.», Хотя согласно этому, вы можете игнорировать это предупреждение.
SSL отлично работает для https://www.bblhosted.com/, https://bblhosted.com/ и https://anythinggoeshere.bblhosted.com/ - не работает только для явно настроенных поддоменов.
в var / log / httpd / error_log у меня есть куча ошибок, например: "Подстановочный знак сертификата сервера RSA CommonName (CN)` * .bblhosted.com 'НЕ соответствует имени сервера !? "
и в ssl_error_log у меня куча ошибок, например: «[предупреждение] Сертификат сервера RSA - это сертификат CA (BasicConstraints: CA == TRUE!?)»
У меня недостаточно опыта, чтобы понять, что они означают. Завтра я продолжу бой!
Возможно, ваша цепочка сертификатов не завершена. Возможно, вам потребуется добавить Пакет RapidSSL CA. к вашему сертификату.
В Apache у вас есть возможность SSLCertificateChainFile
. Установите это в путь, где вы сохранили Пакет RapidSSL CA.
Другой вариант - добавить сертификаты цепочки к своим собственным, добавив их в свой сертификат следующим образом
cat mycert.pem RapidSSL_CA_bundle.pem >> mychainedcert.pem
Это должно решить проблему.
Очевидно, вы купили сертификат в RapidSSL. Однако RapidSSL не является одним из центров сертификации, которым доверяют ваши браузеры. Это не проблема, потому что ваш браузер доверяет GeoTrust, а GeoTrust доверяет RapidSSL. Вам просто нужно показать браузеру сертификат, подтверждающий это. Вот почему вам нужно включить файл цепочки.
Хорошо, так что Кристофер Перрин поставил меня на правильный путь с SSLCertificateChainFile
- Спасибо. Вот подробности, если они кому-то помогают. Я использую Plesk 11, и очевидно, что пути, о которых я говорю, будут другими для других.
Когда я создаю поддомен ssltest.bblhosted.com, Plesk создает файл по адресу /var/www/vhosts/ssltest.bblhosted.com/conf/13558069200.18494000_httpd.include
(или похожие). Этот файл фактически служит целям файла vhost.conf (или vhost_ssl.conf), за исключением того, что он автоматически создается plesk и будет автоматически заменяться каждый раз, когда вы меняете настройки через Plesk.
Файл содержит строку:
SSLCertificateFile /usr/local/psa/var/certificates/cert-Eq8jue
который показывает, где найти мой сертификат SSL. В нем нет строки, указывающей, где найти сертификат CA. Итак, он должен содержать строку:
SSLCertificateChainFile /usr/local/psa/var/certificates/cert-t8ReAO
(Очевидно, путь должен указывать на ваш собственный сертификат CA). Насколько я могу судить, тот факт, что эта строка не включена, является ошибкой в Plesk. Вы можете добавить строку в этот файл прямо под SSLCertificateFile
строка, а затем перезапустите Apache, и он будет работать - ОДНАКО, если вы это сделаете, файл будет переопределен в следующий раз, когда вы измените настройки для этого домена в Plesk, и вы потеряете свои изменения. В верхней части файла Plesk выдает следующее предупреждение:
#ATTENTION!
#
#DO NOT MODIFY THIS FILE BECAUSE IT WAS GENERATED AUTOMATICALLY,
#SO ALL YOUR CHANGES WILL BE LOST THE NEXT TIME THE FILE IS GENERATED.
#
#IF YOU REQUIRE TO APPLY CUSTOM MODIFICATIONS, PERFORM THEM IN THE FOLLOWING FILES:
#/var/www/vhosts/ssltest.bblhosted.com/conf/vhost.conf
#/var/www/vhosts/ssltest.bblhosted.com/conf/vhost_ssl.conf
Итак, я создал /var/www/vhosts/ssltest.bblhosted.com/conf/vhost_ssl.conf
и добавил к нему единственную строчку:
SSLCertificateChainFile /usr/local/psa/var/certificates/cert-t8ReAO
Вам не нужно ничего добавлять, кроме этой единственной строки. Насколько мне известно, все остальные настройки по-прежнему будут взяты из файла httpd.include по умолчанию, созданного Plesk.
Теперь вы должны указать Plesk, что нужно искать файл vhost_ssl.conf, потому что по умолчанию он этого не делает, даже если вы его создали! Сделайте это, войдя в систему через SSH и выполнив эту команду:
/usr/local/psa/admin/bin/httpdmng --reconfigure-all
Это скажет Plesk искать vhost.conf (и vhost_ssl.conf) для всех доменов. При необходимости вы также можете сделать это только для одного домена.
Наконец, перезапустите Apache, и SSL заработает!
Обратите внимание, что если вы добавляете еще один поддомен, вам нужно снова пройти весь процесс, включая выполнение команды терминала, чтобы Plesk искал vhost.conf и vhost_ssl.conf для вашего нового домена или поддомена.
Я недавно настроил именно этот сценарий. Мне нужно будет проверить дальше, НО:
При проверке данных сертификата вы получаете:
Номинальный DNS: * .bblhosted.com Номинальный DNS: bblhosted.com
Вы получили bblhosted.com как AltDNSName.
Я решил проблему, с которой вы столкнулись, имея один сертификат для корневого домена и один сертификат с подстановочными знаками для каждого другого поддомена.
Таким образом, шаблонная маска сертификата будет соответствовать указанному URL-адресу всеми возможными способами, которыми браузер должен его проверять.
TL; DR: получите два новых сертификата, один с просто «bblhosted.com» как altDnsName / CN и один с «* .bblhosted.com».
РЕДАКТИРОВАТЬ: вы можете проверить, является ли это проблемой, запустив несколько бесплатных сертификатов парнями в http://www.cacert.org . Я не стал беспокоиться о коммерческом сертификате, и у меня он есть в качестве основных сертификатов ssl. Единственная проблема заключается в том, что большинство ОС не поставляют свой корневой сертификат, поэтому вам придется установить его самостоятельно.
Сертификат может содержать специальный Доступ к информации о полномочиях расширение (RFC-3280) с URL-адресом сертификата эмитента. Большинство браузеров могут использовать расширение AIA для загрузки отсутствующего промежуточного сертификата для завершения цепочки сертификатов. Но некоторые клиенты (мобильные браузеры, OpenSSL) не поддерживают это расширение, поэтому сообщают о таком сертификате как о ненадежном.
Вы можете решить неполная цепочка сертификатов вручную, объединив все сертификаты от сертификата до доверенного корневого сертификата (исключительно в этом порядке), чтобы предотвратить такие проблемы. Обратите внимание: доверенного корневого сертификата там не должно быть, так как он уже включен в хранилище корневых сертификатов системы.
Вы должны иметь возможность получать промежуточные сертификаты от издателя и объединять их самостоятельно. Кстати, я написал сценарий для автоматизации процедуры, он перебирает расширение AIA для вывода правильно связанных сертификатов. https://github.com/zakjan/cert-chain-resolver