我从我的 java 代码中收到这个奇怪的错误:
java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
Run Code Online (Sandbox Code Playgroud)
我用来生成密钥库的命令:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
我试图用谷歌搜索这个错误,但大多数情况下它说当找不到密钥库或不允许读取密钥库时会发生这种情况。
但对于我来说,这两种情况都不成立。有任何想法吗?
一些简短和简化的背景以防不清楚。PKIXParameters 对象用于客户端证书验证。这是您允许或禁止访问您的网络资源的一种方式。这通常的工作方式是
keystore.jks 文件是您的信任存储区。您的信任存储当前不包含任何证书(只是一个无用的私钥)。要添加 ca 证书,您可以使用此命令
keytool -import -alias <an alias for the CA cert> -file <the trusted CA cert> -keystore <your keystore>
Run Code Online (Sandbox Code Playgroud)
例如,将 CA 证书从浏览器导出到文件,然后将其导入到您的信任存储中
在命令提示符下运行以下命令
keytool -import -alias msroot -file msroot.cer -keystore keystore.jks
现在,当您使用此更新的 keystore.jks 运行 Java 代码时,它应该运行得很好。
| 归档时间: |
|
| 查看次数: |
14391 次 |
| 最近记录: |