В последнее время многие сайты переезжают на https и получают в связи с этим следующую проблему - сайт на разных компьютерах то открывается, то нет (с ошибкой о том, что сертификат недостоверен). Выглядит это, как на скриншоте слева.
Все дело в том, что ssl устроен немного сложнее, чем все привыкли. Обычно сертификат для Вашего сайта подписан не самим корневым сертификатом, а промежуточным. Выглядит это так: корневым сертификатом подписан промежуточный, промежуточным подписан Ваш.
На скриншоте справа изображена цепочка сертификатов этого блога.
Во всех современных операционных системах и всех используемых браузерах имеются корневые сертификаты доверенных центров, но если заглянуть глубже, то оказывается, что в довольно большой части систем присутствуют еще и промежуточные сертификаты, но далеко не во всех.
Так что же это все значит? Это значит, если компьютер пользователя не имеет у себя промежуточного сертификата, то проверить подлинность Вашего он не может. Это и объясняет, что на компьютерах без него сайт открываться не будет, а на компьютерах с ним откроется без каких-либо проблем. Скорее всего, на Вашем компьютере регулярно устанавливаются обновления и проблемы такой не будет. Но кто же может ручаться за обновления windows у пользователей?
Везде и всегда есть выход, ведь далеко не дураки придумали https.
При покупке сертификата у Вас есть ключ (private key), запрос (certificate request) и сам сертификат (certificate). Но так же, во всех случаях, когда сертификат подписан промежуточным (а это более половины случаев), доступен еще и промежуточный сертификат.
Настроить сервер нужно на отдачу сразу и самого сертификата сайта, и промежуточного сертификата (кстати, их может быть несколько).
Специально на этот счет имеется официальная русскоязычная документация к серверу nginx: цепочки ssl-сертификатов
Кратко о том, как это делается:
$ cat site.com.crt intermediate.crt > sitecom.com-fullchain.crt
server {
listen 443 ssl;
server_name www.site.com;
ssl_certificate www.site.com-fullchain.crt;
ssl_certificate_key www.site.com-key.key;
В Apache это делается немного иначе. Привожу строки из конфигруации Apache:
SSLCertificateFile /etc/ssl/crt/yourdomain.com.crt //Ваш сертификат для yourdomain.com
SSLCertificateKeyFile /etc/ssl/crt/private.key //Приватный ключ
SSLCertificateChainFile /etc/ssl/crt/intermediate.crt //Промежуточный сертификат
В панелях хостингов обычно есть дополнительное поле для загрузки промежуточного сертификата либо документация, как собрать сертификаты в один файл.
Не забывайте промежуточный сертификат и все будет работать.
Быстро+Дешево+Качественно - так не бывает, в чем подвох?
Потому что отсутствует самое важное, что должно быть в любой надежной инженерной системе
Если считаете, что парсинг Вашего сайта - проблема, то эта статья для Вас.
Имеется такое явление, набравшее свою популярность, как letsencrypt/certbot. Он выдает ssl-сертификаты автоматически и всем подряд. В целом, это его основная проблема.
Особенности серверных приложений, работающих с сетью IoT-устройств на практике и в теории