Проверка SSL-сертификата

Посмотрите сертификат, который сайт действительно отдаёт, — включая испорченные, которые браузер отказывается показывать.

Примеры:

Зачем для этого вообще нужен инструмент

Ваш браузер и так проверяет сертификаты, и делает это лучше любой веб-страницы. Чего он не сделает — так это не покажет вам сломанный. При неудачной проверке вы получаете заглушку и туманную причину; сам сертификат спрятан ещё за двумя кликами, если до него вообще можно добраться. А сбои, которые стоит разбирать, — обычно как раз те, где ваш браузер совершенно доволен, а чей-то чужой нет.

Поэтому проверка выше выполняется на сервере, намеренно не доверяя тому, что находит, и сообщает, что узел предъявил на самом деле. Истёкший, самоподписанный, выпущенный на другое имя — всё возвращается как данные, а не как стена.

Четыре отказа, в том порядке, в каком вы их встретите

Истёк

Самый частый и самый предотвратимый. Любой браузер показывает предупреждение на всю страницу, и для всякого, кто не готов кликнуть насквозь, сайт фактически лежит. Случается это потому, что кто-то однажды продлил сертификат вручную, триста девяносто восемь дней назад, а потом уволился.

Несовпадение имени узла

Сертификат настоящий и действующий, но не покрывает то имя, которым вы воспользовались. Почти всегда виновато правило подстановки: *.example.com не покрывает example.com. Оба имени должны быть в сертификате, и этот инструмент перечисляет все найденные имена, чтобы недостающее было видно с первого взгляда.

Неполная цепочка

Именно эта порождает самые странные баг-репорты. Сервер шлёт свой сертификат, но опускает промежуточный, связывающий его с доверенным корнем. Настольные браузеры обычно подгружают недостающее сами и молчат. Мобильные браузеры, Java-клиенты, старый Android, curl и большинство потребителей API — нет, они просто падают.

В результате сайт безупречно работает на ноутбуке разработчика и с перебоями у всех остальных — потому раздел с цепочкой выше и перечисляет ровно то, что прислал сервер, а не то, что удалось бы восстановить.

Самоподписанный

Выпущен сам себе, поэтому по умолчанию ему не доверяет ни один клиент. Вполне разумно для внутренней службы, где сертификат вы раздаёте сами, и никогда не годится в открытом вебе.

Что значок замка означает, а что нет

Действительный сертификат устанавливает две вещи: что вы говорите с тем, кто управляет этим доменным именем, и что трафик между вами нельзя прочитать или изменить по дороге. Это действительно ценно — и это вся гарантия целиком.

Чего он не устанавливает — так это честности оператора. Сертификаты бесплатны и выпускаются за секунды, поэтому у фишинговых сайтов они есть как само собой разумеющееся. Замочек никогда не означал «этот сайт безопасен», и потому браузеры последние несколько лет тихо убирали его как положительный признак, а теперь отмечают лишь отсутствие шифрования.

Всё, что есть в вашем сертификате, публично

Это стоит знать, прежде чем добавлять туда имена узлов. С 2018 года каждый публично доверенный сертификат обязан попадать в Certificate Transparency — публичные журналы, работающие только на добавление, которые браузеры проверяют и без записи в которых сертификат отвергают.

Польза для безопасности настоящая: удостоверяющий центр не может тихо выпустить сертификат для вашего домена кому-то другому так, чтобы это не всплыло в журнале, за которым вы можете следить. Побочный эффект в том, что каждое имя в каждом сертификате доступно для поиска. Поместив staging-admin.example.com в публичный сертификат, вы публикуете сам факт существования этого узла для всякого, кому не лень посмотреть, — а смотрят: мониторинг журналов является стандартным шагом разведки.

Продление вот-вот перестанет быть необязательным

Максимальный срок жизни публичного сертификата падает годами: пять лет, потом три, потом два, а с 2020 года — 398 дней. Форум CA/Browser утвердил график, доводящий его до 200 дней в 2026-м, 100 в 2027-м и 47 к 2029-му.

При сорока семи днях продлять вручную значит делать это восемь раз в год на каждом узле, а цена сбоя — упавший сайт. Автоматизация через ACME — Let's Encrypt или то, что предлагает ваш хостер, — перестаёт быть хорошей практикой и становится единственным работающим вариантом. Если вы проверяете здесь сертификат, потому что получили письмо об истечении срока, чинить надо именно это.

Чего эта проверка не делает

Она намеренно узкая. Читает сертификат и согласованное соединение — и на этом останавливается. Она не загружает страницу, не оценивает наборы шифров, не проверяет уязвимости протокола и не выставляет вашей конфигурации балл из ста. Для полного аудита серверной конфигурации признанный и дотошный инструмент — Qualys SSL Labs.

О смежных вопросах: проверка на утечку DNS показывает, какой резолвер отвечает за вас, а поиск по IP — кому принадлежит тот или иной адрес.

Частые вопросы о сертификатах

Сайт открывается в моём браузере, а здесь пишут, что сертификат не доверенный. Кто прав?

Оба, и обычное объяснение — неполная цепочка. Сервер должен присылать собственный сертификат и промежуточные, связывающие его с доверенным корнем. Если он присылает только свой, настольные браузеры часто сами закрывают этот пробел, подгружая недостающий промежуточный, — эта возможность называется AIA fetching. Многие мобильные браузеры, клиенты API, Java-приложения и утилиты командной строки так не умеют. В результате у вас сайт работает, а у части ваших пользователей нет — ровно тот дефект, о котором сообщают словами «ломается только у некоторых». Этот инструмент показывает, что сервер прислал на самом деле.

Почему мой сертификат годится для www.example.com, но не для example.com?

Потому что подстановочный знак покрывает ровно одну метку, и только самую левую. *.example.com подходит для www.example.com и api.example.com, но не для самого example.com и не для a.b.example.com. Голый домен нужно перечислить отдельно в альтернативных именах субъекта. Это одна из самых частых ошибок в сертификатах, и она даёт сайт, который работает с префиксом www и не работает без него.

На какой срок выпускать сертификат?

Сегодня публичные сертификаты ограничены 398 днями, и отрасль решительно движется к более коротким срокам: форум CA/Browser утвердил график, по которому к 2029 году максимум опустится до 47 дней. Практическое следствие в том, что ручное продление перестаёт быть жизнеспособным. Если у вас нет автоматического продления через ACME или хостинг-провайдера, это стоит исправить прежде, чем срок сделает это за вас.

Чем SSL отличается от TLS?

TLS — это сам протокол; SSL — его предшественник, последнюю версию которого объявили устаревшей в 2015 году. Всё, что работает сегодня, — это TLS. Слово «SSL» уцелело в названиях продуктов, сертификатов и должностей исключительно по привычке — потому эта страница и называется проверкой SSL, хотя каждое значение, которое она показывает, относится к TLS. Если сервер и правда предлагает SSL 3.0, это уже само по себе находка.

Означает ли действительный сертификат, что сайт безопасен?

Нет, и смешение этих двух вещей — самое распространённое заблуждение о сертификатах. Сертификат доказывает, что вы говорите с тем, кто управляет этим доменным именем, и что никто посередине не может прочесть или изменить разговор. О честности этого человека он не говорит ничего. У фишинговых сайтов действительные сертификаты — обычное дело: они бесплатны и выпускаются за секунды. Замочек означает «зашифровано», а не «заслуживает доверия».

Можно ли увидеть все сертификаты, выпущенные для моего домена?

Да, и это стоит сделать. Каждый публично доверенный сертификат обязан попадать в Certificate Transparency — набор публичных журналов, работающих только на добавление, которые проверяют браузеры. Поищите свой домен на crt.sh, и вы увидите все когда-либо выпущенные для него сертификаты; именно так обнаруживают тот, который вы не заказывали. Это же означает, что альтернативные имена субъекта в ваших сертификатах публичны, так что внутреннее частное имя узла, попавшее в публичный сертификат, тем самым опубликовано.

A certificate protects the connection between a visitor and one site. It does nothing about what the networks in between can see about which sites you visit at all — that metadata is visible even when every connection is encrypted. What your network can still see

Последняя проверка . Заметили, что что-то устарело? Напишите нам.