gpt4 book ai didi

java - 我放了 security.provider.1=org.bouncycaSTLe.jce.provider.BouncyCaSTLeProvider 但在 SSL 握手期间没有使用它

转载 作者:太空宇宙 更新时间:2023-11-03 14:05:04 26 4
gpt4 key购买 nike

这是我进程中其中一个连接的堆栈跟踪:

"ServerConnection on port 10000 Thread 27" #521 prio=5 os_prio=0 tid=0x0000000002db4800 nid=0x2d79 runnable [0x00007f0ababb1000] 
java.lang.Thread.State: RUNNABLE
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
at java.net.SocketInputStream.read(SocketInputStream.java:171)
at java.net.SocketInputStream.read(SocketInputStream.java:141)
at sun.security.ssl.InputRecord.readFully(InputRecord.java:465)
at sun.security.ssl.InputRecord.read(InputRecord.java:503)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:973)
- locked <0x00000006d63c51f0> (a java.lang.Object)
at sun.security.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:930)
at sun.security.ssl.AppInputStream.read(AppInputStream.java:105)
- locked <0x00000006d6405210> (a sun.security.ssl.AppInputStream)
at org.apache.geode.internal.cache.tier.sockets.Message.fetchHeader(Message.java:691)
at org.apache.geode.internal.cache.tier.sockets.Message.readHeaderAndPayload(Message.java:709)
at org.apache.geode.internal.cache.tier.sockets.Message.read(Message.java:657)
at org.apache.geode.internal.cache.tier.sockets.Message.recv(Message.java:1105)
- locked <0x00000006d6405288> (a java.nio.HeapByteBuffer)
at org.apache.geode.internal.cache.tier.sockets.Message.recv(Message.java:1118)
at org.apache.geode.internal.cache.tier.sockets.BaseCommand.readRequest(BaseCommand.java:869)
at org.apache.geode.internal.cache.tier.sockets.ServerConnection.doNormalMsg(ServerConnection.java:723)
at org.apache.geode.internal.cache.tier.sockets.ServerConnection.doOneMessage(ServerConnection.java:914)
at org.apache.geode.internal.cache.tier.sockets.ServerConnection.run(ServerConnection.java:1171)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.geode.internal.cache.tier.sockets.AcceptorImpl$1$1.run(AcceptorImpl.java:519)
at java.lang.Thread.run(Thread.java:745)

我想在这里我应该看到一些使用了充气城堡库的东西,而不是 sun.security.ssl。

最佳答案

一些事情:

1) 您要添加哪个充气城堡供应商? Bouncy caSTLe 将 JCE 提供程序和 JSSE 提供程序打包在单独的 jar 中,并且必须使用单独的提供程序类。 JSSE 提供者 类是 org.bouncycaSTLe.jsse.provider.BouncyCaSTLeJsseProvider 并且 JCE 提供者是 org.bouncycaSTLe.jce.provider.BouncyCaSTLeProvider

2) 是的,按优先级顺序查找提供者,但如上述响应中所述,返回哪个实现还取决于应用程序代码中请求算法/协议(protocol)的方式。首先,提供商应该实现您请求的算法/协议(protocol),并且必须使用您在请求时使用的名称/别名进行注册。

例如,如果代码请求 TLS 上下文作为 javax.net.ssl.SSLContext.getInstance("SSL"),BC 将不会返回任何上下文,因为它没有使用该别名注册任何实现。但是,SunJSSE 将返回一个上下文,因为它将“SSL”添加为“TLS”的别名

是的,您可以明确要求特定提供商的实现。所有 JCE/JSSE api 都有一个额外的重载方法,它采用提供者名称。例如,

javax.net.ssl.SSLContext.getInstance("TLS", "BCJSSE");

javax.net.ssl.KeyManagerFactory("PKIX", "BCJSSE");

关于java - 我放了 security.provider.1=org.bouncycaSTLe.jce.provider.BouncyCaSTLeProvider 但在 SSL 握手期间没有使用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43634605/

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