Мне нужно поддерживать шифрование Диффи-Хеллмана
DH - это протокол обмена ключами (или соглашения о ключах), а не шифрование. DH используется для безопасной генерации общего ключа между двумя сторонами, другие алгоритмы используются для самого шифрования.
Мне нужно создать сертификат с параметрами ключа DH, например. длина ключа - 2048 и т. д.
Нет ничего похожего на параметры DH в сертификате.
DH - это только один из способов использования открытого ключа,Вы можете сгенерировать открытый ключ DH с указанной длиной (например, 2048 бит) и выполнить обмен DH, но это не имеет ничего общего с параметрами сертификата. (Разве вы не хотели создавать пару ключей, а не сертификат?).
Действительно, для обмена ключами DH нужны другие параметры (p, g), но эти параметры являются частью протокола, а не сертификата. В TLS даже параметры DH могут быть случайными и аутентифицированными с помощью открытого ключа сертификата - это называется эфемерным обменом ключами Диффи-Хеллмана.
Вы можете генерировать параметры DH (p, g) отдельно:
openssl dhparam -out dhparams.pem 4096
Может ли кто-нибудь указать мне правильное направление ??
Теперь я предполагаю, что вы хотите установить зашифрованный канал (TLS) с использованием DH. Самый простой способ - указать разрешенные параметры для SSL для библиотеки. Это пример конфигурации httpd , где вы можете принудительно осуществлять обмен ключами DH. Каждый разумный SSL-фреймворк или сервер имеет возможность установить параметры.
Если вы хотите самостоятельно выполнить обмен ключами DH (не в составе TLS), я бы посоветовал использовать готовый к использованию зрелыйбиблиотека для вашего языка программирования.