Создайте файл X509 для закрытого ключа PKCS#8

#java #authentication #ssl #openssl #pem

Вопрос:

В настоящее время у меня есть закрытый ключ PKCS#1, и мне нужно импортировать этот ключ в мое хранилище ключей на основе Java.

К сожалению, мое хранилище ключей может принимать только форматы X509, PKCS#8 и PKCS#12. Поэтому, используя openssl, я преобразовал свой ключ в формат PKCS#8 с помощью приведенной ниже команды:

 openssl pkcs8 -topk8 -in PrivateKey.pem -out PrivateKey.p8 -nocrypt
 

Выходной файл находится в ожидаемом формате PKCS#8, но, тем не менее, для его импорта в мое хранилище ключей мне требуются следующие элементы:

(i) Ключевой файл PKCS#8 (ii) Сертификат(ы)PKCS#8

Из приведенной выше команды с использованием openssl у меня уже есть элемент (i). Я понятия не имею, что (ii) означает, должен ли я генерировать сертификат X509, используя свой закрытый ключ PKCS#8, и если да, то как?

Или, если есть способ преобразовать мой файл PKCS#1 в файл PKCS#12, это также было бы полезно, так как для импорта файла pkcs#12 мне понадобится только файл .p12 и пароль.

Примечание: Мой первоначальный закрытый ключ PCKS#1 является ключом RSA длиной 2048 и генерируется с помощью приведенной ниже команды openssl:

 openssl genrsa -out ./PrivateKey.pem 2048
 

Есть ли какой-либо способ сгенерировать сертификат X509 из вышеуказанного ключа PCKS#1 или преобразованного ключа PKCS#8?

Любое решение будет высоко оценено!

Комментарии:

1. Зачем вам нужно хранилище ключей? Для чего вы собираетесь его использовать? Это важная информация, необходимая вам для получения полезного ответа.

2. Я хочу выполнить проверку подлинности сертификата клиента. Даже если система, которую я использую, основана на JAVA, я не могу импортировать ключи из любой файловой системы. Ключи необходимо импортировать в определенное хранилище ключей, которое затем будет использоваться во время выполнения для предоставления подписанного сертификата вместе с закрытым ключом стороннему API.

3. Существует два доступных типа сертификатов — а) самозаверяющие сертификаты и б) сертификаты, подписанные Агентством по сертификации («CA»). Если ваша цель состоит в том, чтобы сторонний API мог проверить любой сертификат, который они обычно принимают, только типа b). Если они должны принимать самозаверяющие типы — вот объяснение, как вы создаете закрытый ключ RSA и самозаверяющий сертификат. Позже вы создадите хранилище ключей из обоих файлов: blogs.oracle.com/blogbypuneeth/…

4. @MichaelFehr, ты прав. Я пытаюсь реализовать тип b), и я сгенерировал Закрытый ключ и запрос CSR для того же самого. На стороне получателя сервер подписал мой запрос CSR и выдал мне сертификат ответа CSR. Я могу получить доступ к получателю с помощью комбинации моего закрытого ключа ответа CSR через JAVA. Однако основная проблема, как описано выше, возникает, когда мне нужно импортировать этот закрытый ключ в мое рабочее пространство(другое приложение), он просит меня предоставить сертификат X509, связанный с созданным мной Закрытым ключом

5. Моя ссылка ( blogs.oracle.com/blogbypuneeth/… ) ссылается на официальный блог oracle, и на шаге 2 вы видите, как импортировать свой закрытый ключ и сертификат, подписанный центром сертификации , в хранилище ключей (тип jks или-на шаге 2а — тип pkcs12. Просто используйте openssl для выполнения этой задачи в течение нескольких секунд.