使用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编码的。默认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
文件,上面的课程很容易阅读。参考:
keytool
command查看和编辑诸如keytool
之类的密钥库。要
查看密钥库中的所有密钥,请使用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
是您可以指定要删除的别名。