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

Данные владельца

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

Создайте самоподписанный сертификат для локальной разработки или внутреннего тестирования прямо в браузере. Вы выбираете размер ключа RSA (2048, 3072 или 4096 бит), Common Name, имена Subject Alternative Names, окно действия и основные данные организации. Сертификат и его закрытый ключ создаются в вашем браузере и никогда не отправляются на наш сервер, а вы скачиваете оба как файлы PEM, готовые для Nginx или Apache.

Как работает создание сертификата

  1. 1

    Выберите размер ключа RSA

    2048 бит достаточно для большинства тестов; 3072 или 4096 дают больший ключ ценой скорости.

  2. 2

    Укажите субъект и имена SAN

    Common Name плюс каждое имя узла или IP, которые должен покрывать сертификат (современные браузеры игнорируют CN в пользу SAN).

  3. 3

    Создайте в браузере

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

  4. 4

    Скачайте результат

    Сертификат в кодировке PEM (`cert.pem`) и закрытый ключ в PEM (`key.pem`), готовые к установке.

Всё происходит в вашем браузере

Этот генератор работает полностью в вашем браузере. Пара ключей RSA создаётся локально с помощью криптографической библиотеки на JavaScript, сертификат подписывается на вашем устройстве, и ни закрытый ключ, ни сертификат никогда не загружаются на наш сервер. Тем не менее относитесь к закрытому ключу как к секрету: тот, у кого он есть, может выдать себя за сертификат.

Что значит самоподписанный

Вы одновременно и издатель, и субъект: сертификат подписан собственным закрытым ключом, поэтому за него не ручается никакой публичный центр сертификации (CA). Поэтому браузеры показывают предупреждение. Он подходит для тестов, локальной разработки (localhost, dev.local) и внутренних серверов, где вы можете раздать сертификат клиентам, которые должны ему доверять.

Если вам нужен сертификат, которому доверяет публичный интернет, этот инструмент не тот шаг: вам нужен сертификат, подписанный CA (например, Let’s Encrypt или платным CA), а это требует запроса на подпись сертификата (CSR) и проверки домена, которых этот браузерный инструмент не выполняет.

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

Поле Примечания
Субъект (CN, O, C) Common Name, организация, страна
Subject Alternative Names Каждый покрываемый домен или IP (важно!)
Открытый ключ RSA, производный от созданного закрытого ключа
Издатель Совпадает с субъектом, ведь он самоподписан
Действие Not Before / Not After (ваши дни действия)
Key Usage digitalSignature, keyEncipherment
Extended Key Usage serverAuth, clientAuth
Basic Constraints CA:FALSE (конечный сертификат, не CA)

Выходные файлы

  • key.pem, закрытый ключ (защитите его, режим 0600)
  • cert.pem, самоподписанный сертификат (публичный, можно распространять)

Для Nginx

server {
    listen 443 ssl;
    server_name example.com;
    ssl_certificate     /etc/ssl/certs/cert.pem;
    ssl_certificate_key /etc/ssl/private/key.pem;
    ssl_protocols       TLSv1.2 TLSv1.3;
    ssl_ciphers         HIGH:!aNULL:!MD5;
}

Для Apache 2.4+

<VirtualHost *:443>
    ServerName example.com
    SSLEngine on
    SSLCertificateFile    /etc/ssl/certs/cert.pem
    SSLCertificateKeyFile /etc/ssl/private/key.pem
</VirtualHost>

Доверие сертификату на ваших собственных машинах

Чтобы убрать предупреждение браузера на машине, которую вы контролируете, импортируйте cert.pem в хранилище доверия этой системы или браузера. Делайте это только для сертификатов, которые вы создали сами, на устройствах, которые вам принадлежат. Инструменты вроде mkcert автоматизируют локальный CA для нескольких сервисов; этот генератор создаёт по одному самоподписанному сертификату за раз.

Для чего самоподписанный сертификат не годится

  • Публичные сайты. Пользователи видят предупреждение, и многие уходят.
  • Интеграции со сторонними API. Большинство клиентов отклоняют неизвестных издателей.
  • Продакшен. Категорически нет. Для всего в открытом интернете используйте Let’s Encrypt (бесплатно) или платный CA.

Часто задаваемые вопросы

Нет. Пара ключей и сертификат создаются в вашем браузере и остаются на вашем устройстве; ничего не загружается. Всё же держите скачанный файл key.pem в секрете, ведь тот, у кого он есть, может выдать себя за сертификат.

Нет, если подключаться будут третьи стороны. Браузеры показывают заметное предупреждение. Используйте сертификат, подписанный бесплатным (Let’s Encrypt, ZeroSSL) или платным CA. Самоподписанный подходит для связи между машинами во внутренней сети, где вы контролируете обе стороны.

Исторически CN содержал основной домен. Современные браузеры игнорируют CN при проверке узла и используют только SAN. Всегда указывайте каждое имя узла в SAN; задавайте CN основной домен только для читаемой идентификации.

Да, укажите *.example.com в именах SAN. Он покрывает один уровень поддоменов. Для нескольких уровней добавьте несколько подстановочных знаков (*.example.com и *.dev.example.com).

Сопутствующие инструменты

Кодировщик и декодировщик Base85

Кодируйте и декодируйте Base85 в варианте Adobe Ascii85, который используется в файлах PostScript и PDF. Компактнее Base64 для двоичных данных.

Кодировщик и декодировщик Base58

Кодируйте текст UTF-8 или шестнадцатеричные байты и безопасно декодируйте Base58 с алфавитом Bitcoin, Ripple или Flickr.

Кодировщик шифра A1Z26

Кодируйте текст шифром A1Z26 (A=1, B=2, ... Z=26) или декодируйте числовую последовательность обратно в буквы, выбрав разделитель.

Генератор bcrypt

Сгенерируйте bcrypt hash из plaintext password. Настраиваемый cost factor от 4 до 13, совместим с Laravel, Django, Node и PHP.

Кодировщик шифра Цезаря

Шифруйте и расшифровывайте текст с помощью шифра Цезаря. Любой сдвиг 1-25, поддержка ROT13 как особого случая, сохранение пунктуации и регистра.

Кодировщик файлов Base64

Кодируйте любой файл (PDF, ZIP, изображение, исполняемый файл) в текст Base64 для встраивания в JSON, письма, YAML или data URI. Работает локально в браузере, без загрузки на сервер.