Я следовал инструкциям в учебнике Oracle, чтобы создать новый Файлы «keystore.jks» и «cacerts.jks» с новым паролем (без использования «changeit» по умолчанию). Чтобы быть более точным, я использовал следующие 3 команды для создания файлов:
1. keytool -genkey -alias s1as -keyalg RSA -keypass newpass -storepass newpass -keystore keystore.jks
2. keytool -export -alias s1as -storepass newpass -file server.cer -keystore keystore.jks
3. keytool -import -v -trustcacerts -alias s1as -file server.cer -keystore cacerts.jks -keypass newpass -storepass newpass
После того, как я скопировал новые файлы «keystore.jks» и «cacerts.jks» в папку «/domains/domain1/config» и запустил сервер приложений, я столкнулся со следующим исключением:
IllegalStateException: Keystore was tampered with, or password was incorrect
Однако я думаю, что пароль должен быть правильным, потому что, когда я настраивал GlassFish для использования новых файлов, я добавил эту строку в параметры JVM:
-Djavax.net.ssl.keyStorePassword=newpass
Я попытался сравнить старый файл «keystore.jks» с новым с помощью команды:
keytool -list -v -keystore keystore.jks
Я заметил, что в результате для старого файла, кроме информации о сертификате s1as, он также содержит следующую строку:
Extensions:
#1 ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 1B 31 49 23 1C 5B 17 1D 9F 02 86 FD F7 2B 44 F4 .1I#.[.........+D.
0010: 1B E3 7A C6
]
]
Результат для нового файла не содержит ничего похожего на приведенные выше строки. В своем приложении я намерен использовать самозаверяющий сертификат. Буду очень признателен, если кто-нибудь подскажет, как решить эту проблему.
С наилучшими пожеланиями,
Джеймс Тран