有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在EJB中使用SSL的java遇到异常:密钥库被篡改,或者密码不正确

我按照Oracle Tutorial中的说明创建了新的“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
]
]

新文件的结果不包含任何与上述行类似的内容。在我的应用程序中,我打算使用自签名证书。如果有人能就如何解决这个问题给我一些建议,我将不胜感激

致以最良好的祝愿

詹姆斯·陈


共 (1) 个答案

  1. # 1 楼答案

    尝试添加此参数-Djavax.net.ssl.trustStorePassword=newpass