当前位置: 首页 > 知识库问答 >
问题:

TLS1.3的Java 11 SSLHandshakeException:如何恢复到TLS1.2?

巢海
2023-03-14

我的应用程序是“web scraper”的一种形式,它使用JavaJSoup库从所需的输入页面加载HTML。我最近将我的应用程序平台从Java8升级到Java11。通过这次升级,我从我的客户那里收到了一些报告,说他们在尝试加载某些网页的HTML内容时收到SSLHandshakeExceptions。这些网页出现在不同的设备上,并且在某些设备上,我的客户端根本无法加载任何网页(既不是http://也不是https://网页)。

我尝试了几种方法来解决这个问题,但都无济于事:

  1. 用Java运行时的CACERT文件替换Java11运行时的CACERT文件
  2. 创建一个自定义SSL证书接受器,该接受器接受所有SSL证书,无论其有效性如何(我知道这对生产代码不好,但这只是为了测试目的)-请参阅通过HTTPS使用HttpClient信任所有证书

在这一点上,我不确定应该采取什么样的选择,因为我对SSL、TLS和HTTPS的了解有限。这些错误在Java8中从未发生过,在升级到Java11之前,一切正常。

据我所知,Java11对SSL唯一的改变是升级到TLS 1.3,而以前的Java版本依赖于使用TLS 1.2。

因此,我想强制Java11使用TLS1.2而不是TLS1.3,因为我认为这是SSLhandshakeException的原因。我该怎么做呢?

共有3个答案

尤钱明
2023-03-14

仅供参考:本TLS1。3错误是11.0之前JDK11中的一个已知错误。2.https://bugs.openjdk.java.net/browse/JDK-8211806

贲高寒
2023-03-14

您还可以定义jdk。tls。客户协议=TLSv1。2在Java客户端的命令行:

java -Djdk.tls.client.protocols=TLSv1.2 -jar ... <rest of command line here>

它将使您的客户端仅公布TLS版本1.2,并使用该版本,即使您连接的服务器支持TLS 1.3

仲孙向明
2023-03-14

使用Jsoup时,Neardupe Java 11 HTTPS连接因SSL握手异常而失败,但我还有一些需要补充的地方。

使用连接。带有合适参数的sslSocketFactory(factory)。假设使用标准/默认提供程序,则可以使用从SSLContext创建的工厂。getInstance(“TLSv1.2”)可能使用默认的trustmanager和keymanager,即。init(null,null,null)

或者设置jdk。tls。客户协议https。按照JSSE文档中的表8-3制定协议。注意,这可能会影响任何其他SSL/TLS连接,或从同一JVM创建的其他HTTPS URL连接。

不过,如果这能解决你的问题,我会很惊讶。TLS1。因为他们的遗留系统被延迟了2年,部分原因是他们的遗留系统没有出现故障。

 类似资料:
  • 问题内容: 如果我做 我可以看到所有可用的软件包。 我今天早上将其更新为最新版本,但是现在我需要恢复到以前的版本。我试过了 但这没用。如何指定要使用的版本? 问题答案: 我不得不改用该函数:

  • 问题内容: 我正在研究6B小文档的ES群集,这些文档以6.5K索引进行组织,总共6TB。索引在7台服务器之间复制和分片。索引占用量从几KB到几百GB不等。 在使用ES之前,我将Lucene与相同的文档组织一起使用。 基于Lucene的应用程序 的恢复 非常迅速 。实际上,当查询到达时,索引是延迟加载的,然后将IndexReader缓存起来,以加快以后的回复速度。 现在, 使用Elasticsear

  • 我正在为一个Cassandra数据库构建一个备份和恢复过程,以便在我需要的时候做好准备,这样我就可以理解细节,以便构建适合生产的东西。我在这里遵循Datastax的说明: http://www.datastax.com/documentation/cassandra/2.0/cassandra/operations/ops_backup_restore_c.html。 首先,我将数据库放置在一个d

  • 所以我有一个我似乎无法解决的问题。我有一个ViewPager在我的一个活动中,比如MainActivity。我正在实现所有必要的方法,以保存和检索实例状态时,活动被取消在后台。但是当活动试图恢复它的状态时,片断会被恢复,但它们并没有附加到viewpager,所以我得到的只是一个白色屏幕。 下面是相关代码: mainactivity.java ViewPagerAdapter.java 因此,如果我

  • 问题内容: 我正在尝试从Yahoo!下载大文件!如果没有在100秒之内完成下载,显然是由(不是我)设置的网站服务器断开下载。该文件足够小,通常可以成功传输。在数据速率很慢并且下载被断开的情况下,是否有办法在断开连接发生的文件偏移处恢复URLConnection?这是代码: 问题答案: 尝试使用“范围”请求标头: 完成此操作后,您可以在给定的位置(例如,在下载数据的长度之前)开始在此处写入新下载的数

  • 问题内容: 我在viewDidAppear中有一个图像,并用以下代码对其进行了动画处理: 我想在点击时暂停动画,如果再次点击它则继续播放动画。 问题答案: 暂停和恢复动画的2个功能,我从这里开始转换为Swift。 我有一个按钮可以暂停或恢复在中初始化的动画: