Как изменить хранилище ключей Java Keystore (JKS) и пароль псевдонима, чтобы они работали - PullRequest
0 голосов
/ 18 июня 2019

Я создал глобальный JKS, в котором в качестве пароля хранилища ключей используется changeme.Я создал JKS с помощью Keystore Explorer.

Идея использования глобального JKS заключается в том, что приложения могут снять JKS с S3 и затем сбросить JKS с помощью собственного строкового пароля.У нас есть много API SpringBoot, и мы используем JKS для защиты Tomcat в контейнере, чтобы мы могли подключить HTTPS.

Но вот проблема, с которой я сталкиваюсь, когда я меняю пароль хранилища ключей JKS, я начинаю получатьjava.security.UnrecoverableKeyException: Cannot recover key выдаваемые ошибки.

В проводнике хранилища ключей я не указывал пароль для псевдонима.Когда я захожу в Keystore Explorer, чтобы изменить пароль псевдонима, он принимает «changeme» ​​в качестве пароля.Итак, я предполагаю, что Keystore Explorer автоматически использует changeme в качестве пароля, поскольку я предоставил его для пароля хранилища ключей JKS.

По общему признанию, я не эксперт по использованию JKS и пониманию тонкостей безопасности, но у этого естьменя поставили в тупик.

Я также пытался изменить оба пароля хранилища ключей с помощью Keytool, используя следующую команду:

keytool -storepasswd -keystore myJKS.jks

и

keytool -keypasswd -alias myalias -keystore myJKS.jks

Но когда я пытаюсьчтобы изменить псевдоним:

ошибка keytool: java.io.IOException: подделка хранилища ключей или неверный пароль

Что я делаю не так?

Спасибо

1 Ответ

0 голосов
/ 19 июня 2019

Ошибка, которую вы видите, заключается в том, что вы, возможно, неправильно указали keystore-password в команде.

Базовое понимание того, как и что такое JKS.JKS (Java KeyStore) - это файл, который защищает секретные ключи (симметричные ключи), пары ключей (асимметричные ключи) и сертификаты.Он защищает их паролем, этот пароль называется keystore-password.И ключи в файле JKS также могут быть защищены индивидуально, что означает, что они могут иметь свой собственный пароль, который называется key-password.

Способ изменения пароля хранилища ключей:

keytool -storepasswd -keystore [KEYSTORE] -storepass [OLD_KEYSTORE_PASSWORD] -new [NEW_KEYSTORE_PASSWORD]

Способ изменения пароля-ключа:

keytool-keypasswd -keystore [KEYSTORE] -storepass [KEYSTORE_PASSWORD] -alias [ALIAS] -keypass [OLD_KEY_PASSWORD] -new [NEW_KEY_PASSWORD]

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

server.ssl.ciphers= # Supported SSL ciphers.
server.ssl.client-auth= # Client authentication mode.
server.ssl.enabled=true # Whether to enable SSL support.
server.ssl.enabled-protocols= # Enabled SSL protocols.
server.ssl.key-alias= # Alias that identifies the key in the key store.
server.ssl.key-password= # Password used to access the key in the key store.
server.ssl.key-store= # Path to the key store that holds the SSL certificate (typically a jks file).
server.ssl.key-store-password= # Password used to access the key store.
server.ssl.key-store-provider= # Provider for the key store.
server.ssl.key-store-type= # Type of the key store.
server.ssl.protocol=TLS # SSL protocol to use.
server.ssl.trust-store= # Trust store that holds SSL certificates.
server.ssl.trust-store-password= # Password used to access the trust store.
server.ssl.trust-store-provider= # Provider for the trust store.
server.ssl.trust-store-type= # Type of the trust store.

Вы можете найти все свойства весенней загрузки в документации здесь .

Если вы посмотрите на свойства, есть server.ssl.key-store-password и server.ssl.key-password.Вы можете попросить пользователей установить эти два значения после изменения глобального пароля JKS.

...