如何创建一个空的java信任库?

2022-09-01 16:57:40

我想在java中创建一个https客户端,该客户端最初没有任何CA证书可供信任。由于我不希望 JVM 使用默认的 cacerts 文件,因此我应该创建一个空的信任存储区并将其指向 JVM。
如何创建空信任存储?


答案 1

使用 keytool 创建一个随机密钥对:

keytool -genkeypair -alias boguscert -storepass storePassword -keypass secretPassword -keystore emptyStore.keystore -dname "CN=Developer, OU=Department, O=Company, L=City, ST=State, C=CA"

然后将其删除

keytool -delete -alias boguscert -storepass storePassword -keystore emptyStore.keystore

查看其内容:

$ keytool -list -keystore emptyStore.keystore -storepass storePassword
Keystore type: JKS
Keystore provider: SUN
Your keystore contains 0 entries

答案 2

我发现的一个可能的解决方案是将一些随机证书导入新创建的信任存储区,然后从中删除导入的证书。这将留下一个空的密钥/信任存储。不幸的是,JVM 对空的信任存储不满意,并为此引发异常。因此,为了实现目标,那里应该至少存在一个证书,该证书可以是任何无效或已过期的证书。keytool import