суббота, 22 ноября 2014 г.

Импорт закрытого ключа в jks-хранилище

Для работы с ключами/сертификатами в java активно использую keytool: просто, понятно и "всегда под рукой".
Но иногда случается так, что на руках оказывается пара "закрытый ключ + сертификат", которую надо импортировать в jks:
Certificate.cer
Private.key
Но keytool возможности импорта не даёт (http://itech-notes.blogspot.com/2013/02/keytool.html).
Для решения задачи есть достаточно удобный способ, основанный на возможности импорта хранилища в формате PKCS12.


Потребуется openssl. Сначала сделаем из нашего ключа и сертификата пару в формате PKCS12:
D:\cert_>openssl pkcs12 -export -in Certificate.cer -inkey Private.key -certfile Certificate.cer -name "alias_" -out keystore.p12
D:\cert_rapida>openssl pkcs12 -export -in Certificate.cer -inkey Private.key -name "alias_" -out keystore.p12
Loading 'screen' into random state - done

Enter pass phrase for Certificate.key: //secret - это пароль на ключ
Enter Export Password: //secret - Пароль на новое хранилище
Verifying - Enter Export Password: //secret - Пароль на новое хранилище
В результате появится новое хранилище keystore.p12. И именно его уже можно импортировать в jks-формат с помощью keytool.
D:\cert_>keytool -importkeystore -srckeystore keystore.p12 -srcstoretype pkcs12 -destkeystore rapida-ks.jks -deststoretype JKS
Enter destination keystore password: //secret - Пароль на новое хранилище
Re-enter new password: //secret - Пароль на новое хранилище
Enter source keystore password: //secret - Пароль на исходное хранилище
Entry for alias my certificate successfully imported.
Import command completed:  1 entries successfully imported, 0 entries failed or cancelled

Теперь есть keystore, с которым можно работать в java-приложениях.
D:\cert_rapida\test>keytool -list -keystore ks.jks
Enter keystore password: //secret
Keystore type: JKS
Keystore provider: SUN
Your keystore contains 1 entry
alias_, Nov 22, 2014, PrivateKeyEntry,
Certificate fingerprint (SHA1): 80:CD:5F:4D:E2:49:C0:CA:9C:78:CE:E8:FC:E2:40:9E:BC:E4:A1:F5
Готово!

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

Отправить комментарий