2015-02-05 8 views
0

Мне нужно использовать разъем ssl (2 way handshake) для подключения в моем проекте. Таким образом, для создания ключей, я использовал OpenSSL с этим comands:импорт зашифрованного закрытого ключа для jks

для сервера:

req -x509 -days 3650 -nodes -newkey rsa:2048 -keyout a_private.key -out a_certificate.cert 

rsa -in a_private.key -des3 -out a_private_des.key 

rsa -in a_private_des.key -pubout -out a_pub.key 

для клиента:

req -x509 -days 3650 -nodes -newkey rsa:2048 -keyout b_private.key -out b_certificate.cert 

rsa -in b_private.key -des3 -out b_private_des.key 

rsa -in b_private_des.key -pubout -out b_pub.key 

для импорта в JKS файл я использовал keytool:

keytool -import -alias a_private -file a_private_des.key -keystore a.jks 

keytool error: java.lang.Exception: Input not an X.509 certificate 

после этого, я сделал дер-файл с помощью следующей команды:

pkcs8 -topk8 -in a_private_des.key -out a_private_des.der -outform DER 

и повторной попытки импортировать ключ к JKS файла:

keytool -import -alias a_private -file a_private_des.der -keystore a.jks 

keytool error: java.lang.Exception: Input not an X.509 certificate 

и я получаю же исключение с b_pub.key


Как я могу импортировать зашифрованный закрытый ключ и открытый ключ в файл jks?

tanx alot.

ответ

0

Я считаю, что опция -import позволяет вам импортировать сертификаты, а не ключи. Глядя на это post, кажется, вам, возможно, придется написать какое-то обходное решение.

+0

tanx для вашего ответа. Мне нужно использовать зашифрованный ключ для ssl socket conection. как я могу использовать открытый ключ в моем клиентском сокете? – Ardeshir

+0

Я думаю, что процесс будет заключаться в создании вашего закрытого ключа, создании собственного подписного сертификата с использованием этого ключа, а затем создании и добавлении сертификата в jks truststore, который вы затем сможете развернуть для использования вашего приложения. Поэтому я думаю, что элемент, который вам нужно изменить, - импортировать созданный сертификат (a_certificate.cert) в a.jks, вместо того, чтобы пытаться импортировать ключ. После этого вы можете проверить с помощью 'keytool -list -v -keystore a.jks', чтобы просмотреть содержимое хранилища ключей. – Garreth

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