gpt4 book ai didi

java - 在 Wildfly 16 的应用程序中加载 pk12 文件

转载 作者:太空宇宙 更新时间:2023-11-04 09:17:29 33 4
gpt4 key购买 nike

我有一个代码,它调用受证书保护的其余 api,并且该代码可以正常工作一段时间,没有出现任何问题,直到我将应用程序从 Wildfly 10 迁移到 Wildfly 16。

代码本身很简单,它创建 http 请求并设置自定义套接字工厂:`

 private SSLSocketFactory getSSLSocketFactory() {
char[] certPassword = {}; // password hidden from you
try {
final KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
final SSLContext sslContext = SSLContext.getInstance("TLS");
final KeyStore keyStore = KeyStore.getInstance("PKCS12");
try (FileInputStream fileInputStream = new FileInputStream(new File("cert.pk12"))) {
keyStore.load(fileInputStream, certPassword);
} catch (final Exception e) {
logger.error("....", e);
}

this.readLoadCertificateFile(keyStore);
kmf.init(keyStore, certPassword);
sslContext.init(kmf.getKeyManagers(), new TrustManager[]{new AnyTrust()}, null);
return sslContext.getSocketFactory();
} catch (Exception e) {
logger.error(".....", e);
}
throw new IllegalStateException("....");
}


HTTPRequest req = ....
req.setSSLSocketFactory(getSSLSocketFactory());
tokenHttpResp = req.send();`

`

一切看起来都不错,但是当我从 WF16 中运行此代码时,它会抛出

IOException: Failed to load .p12 keystore:C:\Cert\cert.p12; error constructing MAC: java.lang.SecurityException: JCE cannot authenticate the provider BC; org.bouncycastle.jcajce.provider.keystore.pkcs12.PKCS12KeyStoreSpi.engineLoad::-1 java.security.KeyStore.load in KeyStore.java::1445

我检查了充气城堡库,但应用程序本身没有它......如果有人知道问题可能是什么,我将不胜感激。

或者,我希望将这个套接字工厂创建移到容器本身中,似乎 Wildfly Elytron 子系统专门为此设计,这是一个好主意吗?

最佳答案

回答我自己的问题。像“JCE无法验证提供程序BC”这样的错误消息表明加载安全提供程序的jar文件无法被JVM验证。 jar 未签名或签名无法验证。就我而言,较新的 Wildfly 版本有较新版本的 bouncy caSTLe 库,由于某种原因,Java 8 无法验证该库。有趣的是,Java 10 没问题。网上有人说这个问题只出现在 Oracle 的 JVM 中,Open JDK 不存在,我没有测试过,只是认为值得一提。

要解决这个问题,您需要告诉 JVM 信任安全提供程序,为此,请确保您要使用的安全提供程序/JVM 决定使用,在 jre/lib/security/java.security 文件中提到,它应该具有如下行:

security.provider.11=org.bouncycaSTLe.jce.provider.BouncyCaSTLeProvider

然后将带有安全提供程序的 Jars 复制到 /jre/lib/ext 文件夹

关于java - 在 Wildfly 16 的应用程序中加载 pk12 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58795938/

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