gpt4 book ai didi

java - KeyStore 和 TrustStore 加载失败 - 私钥必须附有证书链

转载 作者:行者123 更新时间:2023-11-29 09:58:54 27 4
gpt4 key购买 nike

我已经使用以下命令创建了一个自签名证书:

keytool -genkeypair -keyalg RSA -alias test-api -keystore test-api.p12 -storepass password -validity 3650 -keysize 2048 -storetype pkcs12

然后我将这个 keystore 导入到新的信任库中:

keytool -import -trustcacerts -alias test-api-2018 -file test.crt -keystore trusted-keystore.p12 -storetype pkcs12

在 Java 中,创建自定义 SSL 存储提供程序 (org.springframework.boot.context.embedded.SslStoreProvider)。作为其中的一部分,使用以下 Java 代码加载 keystore 和信任库:

try {

try (final InputStream keyStoreStream = new ByteArrayInputStream(Base64.decode(keyStoreEncoded))) {

keyStore = KeyStore.getInstance(KEYSTORE_TYPE_PKCS12);

LOGGER.info("Loading a KeyStore object based on the decoded value.");

keyStore.load(keyStoreStream, serverSslKeyPassword.toCharArray());
}

....
trustStore.load(trustStoreStream, serverSslTrustStorePassword.toCharArray());
}

创建了 EmbeddedServletContainerCustomizer 的自定义实现并设置了 SSL Provider:

public void customize(final ConfigurableEmbeddedServletContainer configurableEmbeddedServletContainer) {
configurableEmbeddedServletContainer.setSslStoreProvider(awsSslStoreProvider);
}

由于以下错误,应用程序无法启动:

Caused by: java.lang.IllegalArgumentException: Private key must be accompanied by certificate chain
at java.security.KeyStore.setKeyEntry(KeyStore.java:1136)
at org.apache.tomcat.util.net.jsse.JSSEUtil.getKeyManagers(JSSEUtil.java:253)
at org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:114)
... 19 common frames omitted

最佳答案

直到今天我才发现这个问题,当 application.properties 文件中的安全配置配置不正确时会出现问题,这会导致证书链中断。

在我的例子中我使用了

 server.ssl.key-password=123456789

代替

server.ssl.key-store-password=123456789

像这样的小问题可能会导致问题。

关于java - KeyStore 和 TrustStore 加载失败 - 私钥必须附有证书链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50211719/

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