Как это работает
Сертификат X.509 — это подписанный документ, который связывает открытый ключ с именем: доменом, человеком или организацией. Между серверами и в файлах передаётся его двоичная форма (DER), а копируется и вставляется та же структура в Base64 между строками BEGIN CERTIFICATE и END CERTIFICATE — это формат PEM. Внутри находятся субъект, издатель, срок действия, открытый ключ и расширения, указывающие, для чего предназначен сертификат и где проверить, не отозван ли он.
Инструмент распознаёт сертификаты, запросы на подпись PKCS#10 (CSR), закрытые ключи PKCS#8, PKCS#1 и SEC1, открытые ключи, пакеты PKCS#7 (.p7b) и файлы PKCS#12 (.pfx, .p12). Если вставить несколько блоков сразу, он упорядочит цепочку от конечного сертификата до корневого, проверит каждую подпись ключом издателя и сравнит закрытый ключ с каждым сертификатом и каждым CSR, чтобы показать, что чему соответствует.
Он также конвертирует форматы, собирает из сертификата и ключа файл .pfx, который требуют IIS и Azure, и генерирует новый CSR с закрытым ключом или самоподписанный сертификат для тестов. Всё выполняется с помощью криптографического API вашего браузера: ни сертификаты, ни ключи не отправляются на сервер.
Примеры
ISRG Root X1 · SHA-25696:BC:EC:06:26:49:76:F3:74:60:77:9A:CF:28:C5:A7:CF:E8:A3:C0:AA:E1:1A:8F:FC:EE:05:C0:BD:DF:08:C6Отпечаток SHA-256 корневого сертификата Let's Encrypt. Именно его публикуют центр сертификации и хранилища доверенных сертификатов: если отпечаток вашего файла совпадает, это в точности тот же сертификат.ISRG Root X1 · pin SPKIC5+lpZ7tcVwmwQIMcRtPbsQtWLABXhQzejna0wHFr8M=SHA-256 открытого ключа в Base64. Это значение указывается в pin-sha256 конфигурации сетевой безопасности Android или при certificate pinning в приложении, и оно не меняется при продлении сертификата, если ключ используется повторно.root.crt + intermediate.crt + server.crtserver.crt + intermediate.crt + root.crtnginx и HAProxy считают первый сертификат в файле сертификатом сервера. Если цепочка перевёрнута, nginx выдаёт ошибку key values mismatch, потому что сравнивает закрытый ключ с корневым сертификатом.openssl pkcs12 -in viejo.pfx -legacy -nodes | openssl pkcs12 -export -out nuevo.pfxPBES2 · AES-256-CBC · MAC SHA-256Файлы .pfx, экспортированные старыми версиями Windows или OpenSSL 1.x, зашифрованы RC2 и 3DES, которые браузеры не поддерживают. Эта команда перешифровывает их в AES — формат, который OpenSSL 3 использует по умолчанию.Сценарии использования
- Перед установкой убедиться, что сертификат от центра сертификации покрывает все домены (SAN), а дата окончания срока действия соответствует ожидаемой.
- Выяснить, какой из закрытых ключей, оставшихся на сервере, соответствует каждому сертификату, не сравнивая модули в OpenSSL.
- Найти причину, по которой клиент не доверяет вашему сайту: отсутствующий промежуточный сертификат, неупорядоченная цепочка или сертификат, подписанный SHA-1.
- Сгенерировать CSR для покупки или продления сертификата с ключом, созданным на вашем компьютере, и получить эквивалентную команду OpenSSL на случай, если удобнее сделать это на сервере.
- Преобразовать .crt и его .key в .pfx для IIS, Azure App Service или хранилища ключей Java либо извлечь сертификат и ключ из .pfx для nginx.
- Получить отпечаток или SPKI-пин сертификата, чтобы настроить certificate pinning в мобильном приложении или проверить клиентский сертификат.
Часто задаваемые вопросы
Безопасно ли вставлять сюда закрытый ключ?
Ключ обрабатывается через Web Crypto API внутри вашего браузера и не отправляется ни на какой сервер — это можно проверить на вкладке «Сеть» в инструментах разработчика. Тем не менее рекомендуется обращаться с любым рабочим ключом как с секретом: вставляйте его только в инструменты, которым доверяете, и закрывайте вкладку после завершения работы.
Чем отличаются PEM, DER, CRT, CER, P7B и PFX?
DER — это сертификат в двоичном виде, а PEM — те же двоичные данные в Base64 между строками BEGIN и END. Расширения .crt и .cer не определяют формат: файл может быть в любом из двух. Файл .p7b — это пакет PKCS#7 с несколькими сертификатами и без ключа. Файл .pfx или .p12 — это PKCS#12: он хранит сертификат, промежуточные сертификаты и закрытый ключ вместе, зашифрованными паролем.
Как узнать, не хватает ли на моём сервере промежуточного сертификата?
Вставьте то, что настроено на сервере. Если цепочка заканчивается сертификатом, который не является самоподписанным, одного звена не хватает: в его расширении Authority Information Access в поле CA Issuers обычно указан адрес для загрузки издателя. Настольные браузеры иногда находят его сами, но Android, curl и большинство библиотек — нет, поэтому ошибка возникает только у некоторых клиентов.
Какой максимальный срок действия у публичного TLS-сертификата?
С сентября 2020 года браузеры отвергают сертификаты сроком более 398 дней. В 2025 году CA/Browser Forum одобрил поэтапное сокращение максимума: 200 дней для сертификатов, выпущенных с 15 марта 2026 года, 100 дней с марта 2027 года и 47 дней с марта 2029 года. Поэтому продление стоит автоматизировать с помощью ACME. На внутренние CA компаний это ограничение не распространяется.
RSA или ECDSA для CSR?
ECDSA P-256 обеспечивает безопасность, сопоставимую с RSA 3072 бит, при гораздо меньших ключах и подписях, а сервер быстрее выполняет рукопожатие. Его поддерживают все современные браузеры и системы. RSA 2048 остаётся надёжным вариантом, если у вас очень старые клиенты, встраиваемые устройства или система, принимающая только RSA.
Достаточно ли указать домен в общем имени (CN)?
Нет. Начиная с Chrome 58 (2017 год) браузеры смотрят только на альтернативные имена (SAN), а CN игнорируется. Каждый домен, для которого будет использоваться сертификат, включая указанный в CN, должен быть в списке SAN. Подстановочный знак вроде *.example.com покрывает только один уровень: он подходит для www.example.com, но не для example.com и не для a.b.example.com.