Вопрос или проблема
Возможно ли создать запрос на подпись сертификата в OpenSSL с ограниченным алгоритмом ключей:
id-ECDH (oid: 1.3.132.1.12)
как это определено в RFC5480.
Каждая моя попытка сгенерировать ключ приводит к выбору неограниченного алгоритма (id-ecPublicKey).
Ответ или решение
Для того чтобы создать сертификат с использованием алгоритма ЭКД (ECDH) с помощью OpenSSL, нужно учесть, что стандартный запрос на подпись сертификата (CSR) не поддерживает напрямую создание ограниченных алгоритмов, таких как „id-ECDH“ (OID: 1.3.132.1.12). Однако, существует способ указания желаемого расширения для соответствия требованиям.
Вот как можно сгенерировать ключовую пару ECDH и CSR с использованием OpenSSL:
-
Установка OpenSSL. Убедитесь, что у вас установлена версия OpenSSL не ниже 1.0.2. Для большинства дистрибутивов Linux OpenSSL можно установить с помощью менеджера пакетов.
-
Создание приватного ключа для ECDH:
openssl ecparam -name prime256v1 -genkey -noout -out ecdh_private_key.pem
-
Создание запроса на подпись сертификата (CSR):
Вам необходимо создать CSR, добавив соответствующие расширения. Создайте конфигурационный файл (например,ecdh.cnf
) со следующим содержимым:[ req ] default_bits = 256 distinguished_name = req_distinguished_name req_extensions = req_ext [ req_distinguished_name ] C = RU O = My Organization CN = mydomain.com [ req_ext ] extendedKeyUsage = ECDH keyUsage = critical,keyEncipherment
Теперь сгенерируйте CSR с использованием этого конфигурационного файла:
openssl req -new -key ecdh_private_key.pem -out ecdh_request.csr -config ecdh.cnf
-
Просмотр содержимого CSR:
Вы можете проверить, что ваш CSR содержит необходимые.extensions:openssl req -in ecdh_request.csr -text -noout
-
Подписание CSR. Если необходимо подписать ваш CSR вашим собственным центром сертификации (CA), убедитесь, что CA поддерживает необходимые алгоритмы и настройки. Обычно это можно сделать с помощью следующей команды (при условии, что у вас есть CA):
openssl x509 -req -in ecdh_request.csr -CA ca_cert.pem -CAkey ca_key.pem -CAcreateserial -out ecdh_cert.pem -days 365 -extfile ecdh.cnf -extensions req_ext
Этот процесс создаст сертификат с использованием ограниченного алгоритма ECDH, как указано в вашем вопросе. Пожалуйста, учтите, что может потребоваться настройка ваших конфигурационных файлов OpenSSL в зависимости от конкретных требований вашего окружения или использования сторонних библиотек, которые могут по-другому обрабатывать расширения и алгоритмы.
Если у вас возникнут дополнительные вопросы или потребуется помощь с конкретными ошибками, не стесняйтесь обращаться за помощью.