gpt4 book ai didi

java - 无效算法参数异常 : the trustAnchors parameter must be non-empty

转载 作者:搜寻专家 更新时间:2023-11-01 03:38:06 26 4
gpt4 key购买 nike

我从我的 java 代码中得到这个奇怪的错误:

java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty

我用来生成 keystore 的命令: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);
}
}

我试着用谷歌搜索这个错误,但大多数情况下它说当找不到 keystore 或不允许读取时会发生这种情况。

但这两种情况都不是我的情况。有什么想法吗?

最佳答案

一些简短和简化的背景只是为了防止不清楚。 PKIXParameters 对象用于客户端证书验证。这是您允许或禁止访问您的 Web 资源的一种方式。这通常的工作方式是

  • 您有一份您信任的证书颁发机构 (CA) 证书列表(这是您的信任库)。
  • 您的应用程序要求客户端提供数字证书(客户端证书)
  • 客户端证书将包含 签署客户端证书 的 CA 证书。如果CA 证书在您的列表中,则客户端通过验证

keystore.jks 文件是您的信任库。您的信任库当前不包含任何证书(只是一个无用的私钥)。要添加 ca 证书,您可以使用此命令

keytool -import -alias <an alias for the CA cert> -file <the trusted CA cert> -keystore <your keystore>

例如,将 CA 证书从您的浏览器导出到一个文件,然后将其导入您的信任库

  • 转到您的控制面板/Internet 选项/内容选项卡并点击证书。
  • 选择“受信任的根证书颁发机构”选项卡并选择一个证书(例如“Microsoft 根证书颁发机构”)
  • 单击“导出”并将其保存到文件(在本例中我使用“msroot.cer”)。
  • 在命令提示符下运行以下命令

    keytool -import -alias msroot -file msroot.cer -keystore keystore.jks

现在,当您使用这个更新的 keystore.jks 运行您的 java 代码时,它应该运行得很好。

关于java - 无效算法参数异常 : the trustAnchors parameter must be non-empty,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23882447/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com