如何查看和编辑cacerts文件?

时间:2013-11-26 17:53:42

标签: java keystore websphere-8 ibm-rad

将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编码。

2 个答案:

答案 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

然后verisignclass1caverisignserverca是您可以指定要删除的别名。