gpt4 book ai didi

在 Linux 上使用 OpenJDK 13 + 14 调用时 Java SSLContext.init() 挂起

转载 作者:行者123 更新时间:2023-12-02 08:46:46 33 4
gpt4 key购买 nike

我有一小段代码,它是我当前正在开发的更大应用程序的一部分。当在 Windows 10 上使用 OpenJDK 13 和 14 执行时,它工作得很好。但是,当在使用 OpenJDK 13 或 14 的 Linux 上执行时,SSLContext.init() 方法就会挂起。它永远不会结束。没有异常,没有错误消息。有谁有解决方案,或者知道可能出现什么问题?

// SSSLContext for enabling Undertow server HTTPS
SSLContext context;
try{
System.out.println("Keystore loading");
var keyStore = KeyStore.getInstance(new File("./bin/keystore.pkcs12"), "123456".toCharArray());
System.out.println("Keystore loaded");

System.out.println("Creating KeyManagerFactory");
KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
keyManagerFactory.init(keyStore, "123456".toCharArray());
KeyManager[] keyManagers = keyManagerFactory.getKeyManagers();
System.out.println("KeyManagerFactory created");

System.out.println("Initializing SSLContext");
System.out.println("Creating SecureRandom");
SecureRandom instanceStrong = SecureRandom.getInstanceStrong();
System.out.println("SecureRandom created");
System.out.println("Creating SSLContext");
context = SSLContext.getInstance("TLS");
System.out.println("SSLContext created");
**context.init(keyManagers, null, instanceStrong);**
System.out.println("SSLContext KeyManagers set");
System.out.println("SSLContext initialized");
} catch (Exception e) {
System.out.println("Error initializing SSLContext: " + e.getMessage());
e.printStackTrace();
return;
}

最佳答案

我切换了这一行(在上面的代码示例中):

SecureRandom instanceStrong = SecureRandom.getInstanceStrong();

到这一行

SecureRandom instanceStrong = SecureRandom.getInstance("NativePRNGNonBlocking");

现在我也可以在 Linux 上启动并运行 Undertow!似乎是 SecureRandom.getInstanceStrong() 的阻塞性质导致了问题。

非常感谢@andrewjames 建议去哪里看!!

关于在 Linux 上使用 OpenJDK 13 + 14 调用时 Java SSLContext.init() 挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61027546/

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