Параметры для создания самозаверяющего сертификата DSA в Ubuntu 12.04?
Я хотел бы создать самозаверяющий сертификат DSA в Ubuntu 12.04 для использования с веб-сервером и соединением TLS 1.2 (HTTPS).
Я обнаружил, что вы можете запустить следующую команду для создания RSA:
openssl genrsa -out server.key 3072
Однако мне нужны следующие свойства:
- Длина ключа 3072 бита с использованием обычного алгоритма DSA (не ECDSA)
- Использование криптографической хеш-функции SHA2 с 384 битами
- Использование опции "совершенная прямая секретность"
- Назначьте AES 256 в качестве первого порядка предпочтения для симметричного шифра
- Не требуется шифрование для закрытого ключа (для автоматической перезагрузки).
Может ли кто-нибудь помочь мне с параметрами, чтобы сделать следующие параметры выше?
Когда начинается сеанс TLS, как вы убедитесь, что он генерирует новое случайное значение подписи k каждый раз? Это, очевидно, имеет решающее значение для безопасности алгоритма. Или это автоматически с OpenSSL?
Я нашел этот набор шифров TLS 1.2 TLS_DHE_DSS_WITH_AES_256_GCM_SHA384
вот как мне сказать, чтобы использовать это?
Заранее спасибо.
2 ответа
Что бы вы ни делали, вполне вероятно, что вы делаете это неправильно, исходя из того, как вы сформулировали этот вопрос. Если вы где-то нашли сообщение в блоге, в котором говорится, что вам нужно сделать то или иное, не просто следуйте ему, не зная, что на самом деле написано. Причина, по которой я так говорю, заключается в том, что большинство функций, которые вы запрашивали, не имеют ничего общего с созданием самозаверяющего сертификата DSA.
Вместо этого, отправьте вопрос о том, чего вы на самом деле пытаетесь достичь. Может быть, решение не то, что вы думаете.
Но так как вы спросили, вот как вы генерируете самозаверяющий сертификат DSA из 3072 битов:
openssl dsaparam -out params.pem 3072
openssl gendsa -out key.pem params.pem
openssl req -new -key key.pem -out req.pem
openssl x509 -req -in req.pem -signkey key.pem -out certificate.cer
Хотя SHA-384 можно использовать с DSA, стандартного OID для такой комбинации не существует, поэтому OpenSSL не сможет кодировать часть "алгоритма подписи" вашего самозаверяющего сертификата. Стандартные OID были определены для DSA только с SHA-1, SHA-224 и SHA-256. Для вашей собственной подписи вам нужно будет смягчить свое требование "только SHA-384". Поскольку самоподпись в любом случае имеет абсолютно нулевое криптографическое значение (оно существует только потому, что сертификат имеет необязательное поле для "подписи") и может быть заменено некоторыми случайными байтами примерно подходящего размера, это не должно вызывать затруднений.,
Точно так же DSA сначала был определен для использования модуля в диапазоне от 512 до 1024 битов, а затем модуля из ровно 1024 битов, не меньше и не больше. Последние версии стандарта (FIPS 186-4) допускают более длинный модуль с ограничительным выбором: только 1024, 2048 и 3072 бита, с размером подгруппы 160, 224 или 256 бит (см. Стр. 15 для получения информации о допустимых комбинациях). По сути, использование модуля с размером, отличным от 1024 бит, будет означать проблемы взаимодействия (уже использование DSA подразумевает проблемы взаимодействия, потому что никто не делает этого на практике, поэтому эта поддержка в лучшем случае плохо протестирована в развернутых реализациях).
(Между прочим, это означает, что использование с DSA хеш-функции с выходом, превышающим 256 бит, совершенно бесполезно, поскольку безопасность будет ограничена защитой 256-битной группы, то есть чрезвычайно разумного уровня безопасности "128 бит".)
Генерация случайного значения k для каждой подписи автоматически выполняется OpenSSL, поэтому вам не нужно об этом беспокоиться (это уже сложно сделать правильно; если бы пользователям библиотеки приходилось делать это самостоятельно, это никогда бы не было сделано правильно).
OpenSSL позволяет конфигурировать множество наборов шифров; см. документацию В SSL традиционно сервер следует предпочтениям клиента для выбора комплекта шифров, но OpenSSL (библиотека) для принудительного применения предпочтений сервера (т. Е. Для того, чтобы комплект шифров был определенным, если клиент поддерживает его, даже если он не появился первым в списке, отправленном клиентом). Обратите внимание, что OpenSSL- это библиотека: вы используете ее только через некоторый код приложения, который использует OpenSSL, и вы можете настроить поведение OpenSSL только через параметры конфигурации этого кода приложения, которые могут или не могут дать вам возможность применять произвольные параметры уровня SSL,