如何查看和编辑 cacerts 文件?

2022-09-03 13:13:04

将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..

搜索错误后,我得到了这个链接,建议编辑文件并删除空行/多余的字符。

如何编辑文件?我在Windows环境中,文件似乎是base64编码的。


答案 1

就原始问题而言,您可以使用 keytool 命令来查看和编辑密钥库,例如 。cacerts

查看密钥库中的所有密钥,请使用:keytool -list

$ keytool -list -keystore ${keystore.file}

其中 是文件的路径,在您的情况下。${keystore.file}cacertsC:\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


答案 2

这是一种无需查看或编辑文件即可实际解决此问题的方法。

默认密钥存储类型是 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

参考资料


推荐