Формирование ключевой пары и запроса на подпись сертификата (CSR — Certificate Signing Request), первый и важнейший шаг при получении SSL/TLS-сертификата или квалифицированной электронной подписи. В этой статье подробно разберём весь процесс: от генерации закрытого ключа до отправки запроса в удостоверяющий центр.
Что такое ключевая пара и CSR
При работе с асимметричной криптографией используются два связанных ключа:
- Закрытый (приватный) ключ — секретная часть, которая хранится только у владельца. Его компрометация означает необходимость перевыпуска сертификата.
- Открытый (публичный) ключ, передаётся в удостоверяющий центр в составе запроса CSR и включается в итоговый сертификат.
CSR (запрос на подпись сертификата) — это файл в формате PKCS#10, содержащий открытый ключ и данные о владельце: страну, организацию, доменное имя (Common Name) и другие атрибуты.
Генерация ключей и CSR с помощью OpenSSL
Наиболее распространённый инструмент — OpenSSL, поддерживаемый на всех основных платформах (Linux, Windows, macOS).
Шаг 1. Установка и запуск OpenSSL
На Linux OpenSSL обычно предустановлен. Пользователям Windows необходимо открыть директорию bin в папке с OpenSSL и запустить терминал.
Шаг 2. Генерация закрытого ключа и запроса одной командой
Классическая команда для создания RSA-ключа длиной 2048 бит и CSR:
openssl req -out CSR;csr -new -newkey rsa:2048 -nodes -keyout private.key
Разберём параметры:
- req, работа с запросами на сертификат;
- -new — указывает, что запрос нужно сгенерировать заново;
- -newkey rsa:2048 — создать новый ключ RSA длиной 2048 бит;
- -nodes, не шифровать закрытый ключ паролем (если нужна защита паролем, параметр опускают);
- -keyout private.key, имя файла закрытого ключа;
- -out CSR.csr — имя файла запроса.
Шаг 3. Заполнение данных запроса
Утилита интерактивно запросит следующие сведения:
- Country Name (C) — код страны, например RU;
- State or Province Name (ST) — регион;
- Locality Name (L) — город;
- Organization Name (O) — наименование организации, например ООО «»;
- Organizational Unit Name (OU) — подразделение;
- Common Name (CN) — доменное имя, например example. или ФИО владельца (Иванов И. И.);
- Email Address — контактный адрес, например admin@.
Если ключ защищён паролем, после запроса «Verifying — Enter pass phrase for private.key» необходимо повторно ввести пароль.
Шаг 4. Генерация на эллиптических кривых (опционально)
Для современных ECDSA-сертификатов можно использовать кривую P-256:
openssl req -newkey ec:<(openssl genpkey -genparam -algorithm ec -pkeyopt ec_paramgen_curve:P-256) -keyout PRIVATEKEY.key -out MYCSR.csr
Шаг 5. Проверка созданных файлов
Просмотреть закрытый ключ можно командой:
less private.key
Проверить корректность CSR:
openssl req -in CSR.csr -noout -text
Повторное создание CSR из существующего сертификата
Если оригинальный запрос был утерян, его можно восстановить на основе существующего сертификата и закрытого ключа, это удобно при продлении сертификата:
openssl x509 -in domain.crt -signkey domain.key -x509toreq -out domain.csr
Формирование запроса на квалифицированный сертификат
Для получения квалифицированной электронной подписи (например, через программные продукты типа «Сигнатура-клиент») процедура выглядит иначе:
- Запустите программу формирования запроса и выберите пункт создания нового запроса PKCS#10.
- В окне «Выберите считыватель ключа» укажите тип ключевого носителя (токен, флеш-накопитель, реестр).
- При необходимости задайте пароль на ключевой носитель.
- Заполните персональные данные: ФИО (), СНИЛС (— ), ИНН организации ().
- Сохраните сформированный PKCS#10-запрос, нажав кнопку «ОК».
- Отправьте файл запроса в аккредитованный удостоверяющий центр лично или через личный кабинет.
Отправка запроса в удостоверяющий центр
После генерации CSR его необходимо передать в центр сертификации:
- При заказе SSL-сертификата — на сайте регистратора выберите пункт «Уже есть CSR» и вставьте содержимое файла (включая строки
-----BEGIN CERTIFICATE REQUEST-----и-----END CERTIFICATE REQUEST-----). - Через веб-интерфейс оборудования — нажмите «Обзор», укажите файл запроса и щёлкните «Регистрация».
- В корпоративных системах — запрос подписывается локальным CA командой вида:
openssl x509 -req -in request.csr -CA ca.crt -CAkey ca.key -out server.crt -sha256.
Рекомендации по безопасности
- Генерируйте закрытый ключ только на своём сервере. Использование сторонних онлайн-генераторов не рекомендуется, так как в создании приватного ключа участвует третья сторона.
- Храните закрытый ключ в защищённом месте с ограниченными правами доступа.
- При утрате пароля или компрометации закрытого ключа сертификат необходимо незамедлительно перевыпустить.
- Используйте современные алгоритмы: RSA не менее 2048 бит или ECDSA P-256, хеширование SHA-256.
Формирование ключей и запроса на сертификат, несложная, но ответственная процедура. Правильно сгенерированный закрытый ключ и корректно заполненный CSR обеспечивают надёжную основу для выпуска сертификата, будь то SSL для сайта или квалифицированная электронная подпись. Следуйте приведённым инструкциям, берегите закрытый ключ — и процесс получения сертификата пройдёт быстро и без проблем.