将RAD 8.5与WAS 8.5运行时一起使用,我的控制台上出现异常:
The keystore located at "C:\IBM\Websphere85\jdk\jre\lib\security\cacerts" failed to load due to the following error: DerInputStream.getLength(): lengthTag=109, too big..
搜索到错误后,我收到了 link ,建议您修改文件并删除空行/额外字符。
如何编辑文件?我在Windows环境中,文件似乎是base64编码。
答案 0 :(得分:2)
这是一种在不需要查看或编辑文件的情况下实际解决此问题的方法。
默认的keyStore类型是JKS,WSKeyStore类假定它是一个抛出上述错误的PKCS12文件。所以我们需要将cacerts文件转换为.p12格式。
从我执行的命令行使用keytool实用程序:
C:\IBM\WebSphere85\AppServer\java\bin>keytool -importkeystore ^
-srckeystore C:\IBM\WebSphere85\AppServer\java\jre\lib\security\cacerts ^
-destkeystore C:\IBM\WebSphere85\AppServer\java\jre\lib\security\cacerts.p12 ^
-srcstoretype JKS -deststoretype PKCS12 -srcstorepass changeit -deststorepass changeit -noprompt
它给了我一个cacerts.p12
文件,上面的类可以很容易地读到它。
参考:
答案 1 :(得分:1)
对于原始问题,您可以使用keytool
command来查看和编辑cacerts
之类的密钥库。
要查看密钥库中的所有密钥,请使用keytool -list
:
$ keytool -list -keystore ${keystore.file}
其中${keystore.file}
是cacerts
文件的路径,在您的情况下为C:\IBM\Websphere85\jdk\jre\lib\security\cacerts
。
要删除特定键,请使用keytool -delete
:
$ keytool -delete -alias ${cert.alias} -keystore ${keystore.file}
其中${cert.alias}
是来自上述-list
命令的现有密钥别名。 *
要添加已在其他地方生成的新密钥,请使用keytool -importcert
:
$ keytool -importcert -alias ${cert.alias} -keystore ${keystore.file} -file ${cer.file}
其中${cer.file}
是现有证书或证书链的路径。
请注意,使用这些命令中的每一个,都会提示您输入密钥库密码,而您可以使用-storepass
选项来指定。例如:
$ keytool -delete -noprompt -alias ${cert.alias} -keystore ${keystore.file} -storepass ${keystore.pass}
* ${cert.alias}
是从keytool -list
输出的行中最左边的值。
例如,如果这是来自keytool -list
的输出:
$ keytool -list -keystore ./cacerts
Enter keystore password:
Keystore type: jks
Keystore provider: SUN
Your keystore contains 2 entries
verisignclass1ca, Jun 29, 1998, trustedCertEntry,
Certificate fingerprint (MD5): 51:86:E8:1F:BC:B1:C3:71:B5:18:10:DB:5F:DC:F6:20
verisignserverca, Jun 29, 1998, trustedCertEntry,
Certificate fingerprint (MD5): 74:7B:82:03:43:F0:00:9E:6B:B3:EC:47:BF:85:A5:93
然后verisignclass1ca
和verisignserverca
是您可以指定要删除的别名。