我从我的java代码中得到了这个奇怪的错误:
java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
我用来生成密钥库的命令:
keytool -genkey -alias tomcat -keystore keystore.jks
这是我的java代码:
import java.security.cert.PKIXParameters;
import java.security.KeyStore;
import java.io.FileInputStream;
public class MyKeyTest {
public static void main(String[] args) throws Exception {
KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
String password = "mypass";
ks.load(new FileInputStream("keystore.jks"), password.toCharArray());
new PKIXParameters(ks);
}
}
我试图谷歌周围的这个错误,但大多数情况下,它说这发生在没有找到密钥库或不允许阅读。
但在我的情况下,这两种情况都不是真的。有什么想法吗?
答案 0 :(得分:1)
一些简短而简化的背景只是不清楚的情况。 PKIXParameters对象用于客户端证书验证。这是一种允许或禁止访问您的Web资源的方法。通常的方式是
keystore.jks文件是您的信任存储区。您的信任存储当前不包含任何证书(只是一个无用的私钥)。要添加ca证书,您将使用此命令
Warning: Possible EventEmitter memory leak detected. 11 object listeners added. Use emitter.setMaxListeners() to increase limit
例如,将CA证书从浏览器导出到文件,然后将其导入信任库
在命令提示符下运行以下命令
keytool -import -alias msroot -file msroot.cer -keystore keystore.jks
现在,当您使用此更新的keystore.jks运行Java代码时,它应该运行得很好。