【发布时间】:2017-07-11 03:42:00
【问题描述】:
我的 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);
}
}
我试图用谷歌搜索这个错误,但大多数情况下它说这是在找不到密钥库或不允许读取密钥库时发生的。
但这两种情况都不是我的情况。有什么想法吗?
【问题讨论】:
-
如果您通过该命令“生成”密钥库,则只有一个私钥条目,而没有可信证书条目。 docs.oracle.com/javase/7/docs/api/java/security/cert/… 说它抛出 InvalidAlgorithmParameterException - 如果密钥库不包含至少一个受信任的证书条目。
-
如何使用 keytool 添加可信证书条目?
-
查看 docs.oracle.com/javase/7/docs/technotes/tools/windows/… 尤其是
-importcert以获取文件中的证书(到唯一的-alias不是/a 私钥条目)或来自另一个 JKS 的-importkeystore已经包含受信任的证书条目(或一些)。特别是每个 Suncle JRE(或 JDK)安装都带有一个默认的信任库,位于JRE/lib/security/cacerts中,有几十个已建立的 CA 根。