gpt4 book ai didi

java - 如何定义(在 Java 中)服务器使用哪种加密协议(protocol)(SSL 或 TLS)?

转载 作者:太空宇宙 更新时间:2023-11-03 13:41:43 24 4
gpt4 key购买 nike

我有客户端应用程序,它使用我需要连接到不同服务器的 apache-commons-httpclient 2.0。作为我使用的加密协议(protocol):

protocols = new String[]{"SSLv3", "SSLv2Hello", "TLSv1"};
((SSLSocket) socket).setEnabledProtocols(protocols);

一般情况下,它工作正常,但在某些服务器上会发生以下情况:

main, handling exception: java.net.SocketException: Software caused connection abort: recv failed
main, SEND SSLv3 ALERT: fatal, description = unexpected_message
Padded plaintext before ENCRYPTION: len = 22
0000: 02 0A 7B FA 57 7E 6E B7 56 4C 8A 2F 7F 1F BC 9F ....W.n.VL./....
0010: A6 80 57 12 0B EE ..W...
main, WRITE: SSLv3 Alert, length = 22
main, Exception sending alert: java.net.SocketException: Software caused connection abort: socket write error

如果我从协议(protocol)列表中删除 TLSv1,它将在该服务器上正常工作,并且我将获得预期的 200 状态。因此,我有这个问题 - 如何预先定义服务器支持哪种协议(protocol)(SSL 或 TLS)和协议(protocol)版本?

或者也许有其他方法可以解决这个问题?

最佳答案

好的,我已经找到了如何启用服务器协议(protocol):

Socket socket = sSLSocketFactory.createSocket(host, port);
((SSLSocket) socket).getEnabledProtocols();

但这并没有帮助,因为它给了我:

SSLv2Hello
SSLv3
TLSv1

这意味着服务器应该支持TLSv1。所以问题出在其他地方。

关于java - 如何定义(在 Java 中)服务器使用哪种加密协议(protocol)(SSL 或 TLS)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19053335/

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