Проверка SSL через openssl: команды и разбор вывода
Проверка SSL через openssl сводится к двум утилитам: s_client подключается к серверу и забирает сертификат, а x509 читает его и печатает срок, издателя и список доменов. Обе работают без доступа к серверу, как обычный посетитель.
Ответ за 30 секунд
Для разовой проверки хватит одной строки: openssl s_client -connect сайт:443 -servername сайт. Смотрите на строку Verify return code: ноль значит, что цепочка собрана верно, любое другое число указывает на причину ошибки.
Выпуск бесплатного Let's Encrypt занимает до часа, платные сертификаты GlobalSign готовы за 15-30 минут.
Как проверить версии TLS командой openssl s_clients_clientподключается к порту 443
x509читает срок и имена
0 (ok)код успешной проверки
01 · 1 мин
Что делает каждая команда openssl при проверке SSL#
| Команда | Что делает | Когда нужна |
|---|---|---|
openssl s_client | Подключается к порту, проводит рукопожатие, печатает цепочку | Проверить, что отдаёт живой сервер |
openssl x509 | Читает один сертификат: даты, имена, издатель | Разобрать полученное или файл .crt и .pem |
openssl verify | Проверяет цепочку по списку корневых сертификатов | Найти, где разрывается цепочка |
OpenSSL стоит в Linux и macOS по умолчанию. На Windows его берут из Git Bash или WSL. Сам openssl сертификаты на сайт не устанавливает: он создаёт ключ, запрос CSR и читает результат, а ставит сертификат Certbot или правка конфига веб-сервера.
02 · 1 мин
Как подключиться к сайту командой openssl s_client#
openssl s_client -connect example.ru:443 -servername example.ru
Ключ -connect задаёт адрес и порт, -servername передаёт имя сайта в расширении SNI. Без SNI сервер с несколькими сайтами на одном IP отдаст сертификат по умолчанию, и вы получите чужой результат. Выход из сессии: Ctrl+C, либо подайте на вход пустую строку командой echo | перед openssl.
Вывод длинный, читать нужно три места. Блок Certificate chain показывает цепочку: строка s: владелец, строка i: издатель.
Certificate chain
0 s:CN = example.ru
i:C = US, O = Let's Encrypt, CN = R11
1 s:C = US, O = Let's Encrypt, CN = R11
i:C = US, O = Internet Security Research Group, CN = ISRG Root X1
...
Verify return code: 0 (ok)
Если в цепочке один сертификат вместо двух-трёх, сервер не отдаёт промежуточные: такой сайт покажет ошибку недоверенного сертификата в части программ.
03 · 1 мин
Как прочитать срок, издателя и имена сертификата#
echo | openssl s_client -connect example.ru:443 -servername example.ru 2>/dev/null \
| openssl x509 -noout -subject -issuer -dates -ext subjectAltName
Результат из четырёх блоков: subject (для кого выдан), issuer (кто выдал), notBefore и notAfter (начало и конец срока), Subject Alternative Name (все домены, на которые сертификат действует). Современные браузеры сверяют адрес именно со списком SAN, поэтому при ошибке «имя не совпадает» смотрите на него: что делать, если имя сертификата не совпадает.
Для файла на диске подключение не нужно: openssl x509 -in fullchain.pem -noout -dates. Отдельно срок разобран на странице проверка срока действия.
04 · 1 мин
Что значит Verify return code в выводе openssl#
| Код | Сообщение | Причина |
|---|---|---|
| 0 | ok | Цепочка собрана и доверенный корень найден |
| 10 | certificate has expired | Срок сертификата вышел |
| 18 | self-signed certificate | Сертификат самоподписанный |
| 20 | unable to get local issuer certificate | Не найден издатель: нет промежуточного или корневого |
| 21 | unable to verify the first certificate | Сервер не отдал промежуточный сертификат |
Для кодов 20 и 21 переходите к проверке цепочки: как проверить цепочку сертификата.
Инструмент · 1 мин
Как проверить версии TLS командой openssl s_client#
openssl s_client -connect example.ru:443 -servername example.ru -tls1_2
openssl s_client -connect example.ru:443 -servername example.ru -tls1_3
Если сервер принимает версию, в выводе появится сертификат и строка Protocol. Если нет, openssl напишет про handshake failure или no protocols available. Для старых версий ключи -tls1 и -tls1_1 в новых сборках OpenSSL могут быть отключены, и тогда проверку делают сканером. Что делать с таким результатом: неподдерживаемая версия TLS.
Какая команда openssl вам нужна
Выберите, что хотите узнать о сертификате, и получите готовую команду
06 · 1 мин
Вопросы о проверке SSL через openssl#
Как добавить SSL-сертификат через терминал, если нужен именно openssl?
Openssl создаёт ключ и CSR командой openssl req -new -newkey rsa:2048 -nodes -keyout site.key -out site.csr и проверяет готовый сертификат. Установка идёт через Certbot или через пути в конфиге веб-сервера.
Почему openssl s_client показывает сертификат другого сайта?
Не передано имя сайта. Добавьте -servername с вашим доменом, иначе сервер вернёт сертификат по умолчанию.
Как проверить ssl через openssl в Windows?
Установите Git for Windows и запустите Git Bash: там есть openssl с теми же командами. Второй путь: WSL с любым дистрибутивом Linux.
Почему этому можно верить
Как мы проверяли
Источники цифр на этой странице: SSL-сертификаты Таймвеб, timeweb.com/ru/services/domains/ssl, проверено 19 октября 2026; Let's Encrypt: документация, letsencrypt.org/docs, проверено 19 октября 2026; OpenSSL: документация openssl-x509, docs.openssl.org/master/man1/openssl-x509, проверено 19 октября 2026.
Подключите SSL к сайту
От бесплатного Let's Encrypt до платных сертификатов GlobalSign с гарантийной выплатой и установкой под ключ. Любой можно вернуть за 7 дней.
- Бесплатный Let's Encrypt на домен
- Платные от 1 000 ₽ за 6 месяцев
- Wildcard на все поддомены
- 7 дней на возврат