2013-05-10 7 views
19

Мы пытаемся реализовать некоторые функции веб-сервиса от одного из наших партнеров. Теперь содержимое, которое передается, должно быть зашифровано с помощью открытого ключа, который мы должны предоставить.X.509: частный/открытый ключ

В спецификации безопасности говорится, что публичный сертификат должен быть стандартом X.509. Не использует ли X.509 метод частного/открытого ключа? Потому что я получаю только один файл .pem, содержащий закрытый ключ и сертификат, но не открытый ключ, используя следующую команду:

openssl req -new -x509 -days 365 -nodes -out ./cert.pem -keyout ./cert.pem 

Должен ли я изменить команду, чтобы создать частный и открытый ключ?

ответ

54

Шаги командной строки основы для создания частного и публичного ключа с помощью OpenSSL являются следующие

openssl genrsa -out private.key 1024 
openssl req -new -x509 -key private.key -out publickey.cer -days 365 
openssl pkcs12 -export -out public_privatekey.pfx -inkey private.key -in publickey.cer 

Шаг 1 - генерирует секретный ключ

Шаг 2 - создает сертификат X509 (CER-файл), содержащий ваш открытый ключ, который вы загружаете при регистрации своего частного приложения (или перехода на партнерское приложение).

Шаг 3 - Экспортируйте сертификат x509 и закрытый ключ в файл pfx. Если ваша выбранная библиотека обертки использует файл .pem для подписи запросов, этот шаг не требуется.

Надеюсь, что это поможет! This answer explains различные расширения файлов.

+1

Я не совсем уверен, что делает 3-я команда, privatekey.pem и publickey.cer. Благодаря! – Ahatius

+0

В этом примере 'privatekey.pem' содержит только закрытый ключ или открытый ключ? –

+5

Вы используете неправильное расширение файла в своей первой команде. Вы должны использовать '.key' вместо' .pem', чтобы избежать путаницы. Результирующий файл будет просто закрытым ключом. Кто-то может отправить файл '.pem' кому-то другому по ошибке, создав проблему безопасности. – w0rp

8

Открытый ключ хранится внутри сертификата x.509. Сертификат связывает идентификационную информацию (общее имя, адрес, все остальное) с этим открытым ключом.

+1

Ну, в моем случае есть ** НАЧАТЬ СВИДЕТЕЛЬСТВО ** и ** НАЧАТЬ PRIVATE KEY **. Является ли СЕРТИФИКАТ моим открытым ключом? Могу ли я разделить эти два на отдельные файлы, чтобы другая сторона не увидела закрытый ключ? – Ahatius

+2

Да, частью CERTIFICATE является сертификат (base64-encoded, с открытым ключом), PRIVATE KEY - это, doh, закрытый ключ. Вы можете (и на самом деле СЛЕДУЕТ) отделить их и отправить только часть сертификата другой стороне. –

+2

Хорошо, спасибо вам большое. Затем я отправлю им часть CERTIFICATE. Я бы хотел подняться, но, очевидно, я достиг своего дневного лимита: O – Ahatius

1

Создайте частно-открытую пару ключей.

openssl req -x509 -newkey rsa:2048 -keyout private.key -out public.cert -days 365 

Опционально, объедините пару в один файл.

openssl pkcs12 -export -inkey private.key -in public.cert -out certificate.pfx 

Это приводит к следующим файлам.

private.key 
certificate.pfx 
public.cert 

Смотрите также

Смежные вопросы