OpenSSL генерирует сертификат с порядком следования байтов, кодировкой и кодировкой

У меня проблемы с созданием сертификата с помощью инструмента командной строки openssl.

Спецификации закрытого ключа:

" Я даже не нашел, как установить его с помощью инструмента командной строки openssl, любая помощь здесь будет очень признательна!

2
задан 27 November 2018 в 23:56
1 ответ

Если я не читаю неправильно, этот документ, кажется, противоречит сам себе. В нем говорится о создании сертификата и о том, что самозаверяющие сертификаты в порядке, но позже говорится, что единственное, что они хотят, чтобы вы отправили в NTA, - это открытый ключ. Для подписи данных не требуется сертификат, только закрытый ключ. Поэтому мне интересно, почему они просто не заставляют вас создать пару открытого и закрытого ключей, а не целый сертификат, который всегда будет лежать на коробке и никогда не будет использоваться.

Вот как можно создать простой Закрытый ключ RSA 1024 и извлеките открытый ключ в отдельный файл:

openssl genrsa -out rsa.key 1024
openssl rsa -in rsa.key -outform PEM -pubout -out rsa.pub

Файл rsa.pub - это то, что вы отправляете в NTA. Я никогда не слышал, чтобы кому-то нужно было иметь дело с порядком байтов в openssl. Так что я могу ошибаться, но вам, вероятно, не стоит об этом беспокоиться. Кодировка UTF8, вероятно, имеет значение только для реальных сертификатов с текстовыми полями, такими как Тема. Openssl выводит файлы PEM с кодировкой ASCII, что нормально (и нормально), потому что PEM закодирован в Base64. Заполнение PKCS1 v1.5 также является стандартным.

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

echo -n 'signature_from_previous_receipt;2014-01-24;23:59:59;123456789;1250.00;1000.00' > data.txt

Отобразите хэш SHA1, чтобы доказать, что у нас есть данные, которые соответствуют примеру

openssl dgst -sha1 data.txt

Хеш и подписать данные , преобразуйте его в base64 без разрывов строк и сохраните в файл.

openssl dgst -sha1 -sign rsa.key data.txt | openssl base64 -A -out data.sig

Гипотетически, текст в data.sig теперь является тем, что вы использовали бы для "signature_for_this_receipt" из примера.

] Чтобы проверить, мы можем просто сделать следующее, что должно вывести "Подтверждено ОК".

openssl dgst -sha1 -verify rsa.pub -signature <(openssl base64 -d -A -in data.sig) data.txt

Если по какой-то причине вам действительно нужен файл сертификата, вы можете заменить первую команду, которая генерирует закрытый ключ, на этот один лайнер, который будет генерировать как ключ, так и самозаверяющий сертификат. Вам по-прежнему нужна та же вторая команда для извлечения открытого ключа.

openssl req -nodes -x509 -sha1 -utf8 -newkey rsa:1024 -keyout rsa.key -out server.crt -days 365 -subj "/CN=MyCert"
3
ответ дан 3 December 2019 в 10:32

Теги

Похожие вопросы