SSLHandshakeException 与 jlink 创建运行时

2023-12-19

我有一个 dropwizard 应用程序,它可以与标准 JRE 一起正常运行。

我尝试使用 jlink 创建一个运行时,它要小得多:

/Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home/bin/jlink --no-header-files --no-man-pages --compress=2 --strip-debug --add-modules java.base,java.compiler,java.desktop,java.instrument,java.logging,java.management,java.naming,java.scripting,java.security.jgss,java.sql,java.xml,jdk.attach,jdk.jdi,jdk.management,jdk.unsupported --output jre

如果我使用 jlink 创建的运行时运行它,它会在连接到 redis(前面有 stunnel)时抛出此错误。

ERROR [2019-03-31 09:12:20,080] com.company.project.core.WorkerThread: Failed to process message.
! javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
! at java.base/sun.security.ssl.Alert.createSSLException(Unknown Source)
! at java.base/sun.security.ssl.Alert.createSSLException(Unknown Source)
! at java.base/sun.security.ssl.TransportContext.fatal(Unknown Source)
! at java.base/sun.security.ssl.Alert$AlertConsumer.consume(Unknown Source)
! at java.base/sun.security.ssl.TransportContext.dispatch(Unknown Source)
! at java.base/sun.security.ssl.SSLTransport.decode(Unknown Source)
! at java.base/sun.security.ssl.SSLSocketImpl.decode(Unknown Source)
! at java.base/sun.security.ssl.SSLSocketImpl.readHandshakeRecord(Unknown Source)
! at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
! at java.base/sun.security.ssl.SSLSocketImpl.ensureNegotiated(Unknown Source)
! at java.base/sun.security.ssl.SSLSocketImpl$AppOutputStream.write(Unknown Source)
! at redis.clients.jedis.util.RedisOutputStream.flushBuffer(RedisOutputStream.java:52)
! at redis.clients.jedis.util.RedisOutputStream.flush(RedisOutputStream.java:133)
! at redis.clients.jedis.Connection.flush(Connection.java:300)
! ... 9 common frames omitted
! Causing: redis.clients.jedis.exceptions.JedisConnectionException: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
! at redis.clients.jedis.Connection.flush(Connection.java:303)
! at redis.clients.jedis.Connection.getStatusCodeReply(Connection.java:235)
! at redis.clients.jedis.BinaryJedis.auth(BinaryJedis.java:2225)
! at redis.clients.jedis.JedisFactory.makeObject(JedisFactory.java:119)
! at org.apache.commons.pool2.impl.GenericObjectPool.create(GenericObjectPool.java:888)
! at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:432)
! at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:361)
! at redis.clients.jedis.util.Pool.getResource(Pool.java:50)
! ... 2 common frames omitted
! Causing: redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool
! at redis.clients.jedis.util.Pool.getResource(Pool.java:59)
! at redis.clients.jedis.JedisPool.getResource(JedisPool.java:234)

stunnel 服务器日志显示:

redis_1  | 09:12:20 stunnel.1 | 2019.03.31 09:12:20 LOG7[23]: TLS alert (write): fatal: handshake failure
redis_1  | 09:12:20 stunnel.1 | 2019.03.31 09:12:20 LOG3[23]: SSL_accept: 141F7065: error:141F7065:SSL routines:final_key_share:no suitable key share
redis_1  | 09:12:20 stunnel.1 | 2019.03.31 09:12:20 LOG5[23]: Connection reset: 0 byte(s) sent to TLS, 0 byte(s) sent to socket

jlink 是否遗漏了一些加密算法?


正如 Rich 在一篇文章中提到的comment https://stackoverflow.com/questions/55439599/sslhandshakeexception-with-jlink-created-runtime/55517159#comment97595874_55439599

嗯。如果我添加 jdk.crypto.ec 它可以工作 - 为什么 jdeps 会遗漏这个,如果是那个,还会遗漏其他的吗?

将 jdk.crypto.ec 添加到模块列表中解决了问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SSLHandshakeException 与 jlink 创建运行时 的相关文章

随机推荐

  • 在纯 NumPy 中重写 for 循环以减少执行时间

    I 最近询问有关尝试优化科学应用程序的 Python 循环的问题 https stackoverflow com questions 2586749 what is the most platform and python version
  • 现场(“点击”)和表演

    我有一个网格 有一列包含 a 带有一些附加信息的锚标记 a
  • 如何在内存中创建文件供用户下载,而不是通过服务器?

    有没有办法在客户端创建一个文本文件并提示用户下载它而无需与服务器进行任何交互 我知道我不能直接写入他们的机器 安全性和所有 但我可以创建文件并提示他们保存它吗 适用于 HTML5 浏览器的简单解决方案 function download f
  • PowerMock 何时新替代方案

    我不想再使用 powermock 了 因为junit5开始模拟静态类 所以我试图摆脱 powermock 方法 如您所知 您可以使用whenNew关键字创建类的实例 Junit5中对于whenNew有什么替代方案吗 这是我的代码的一部分 w
  • 在 PowerShell 中创建临时目录?

    PowerShell 5 引入了New TemporaryFile cmdlet https learn microsoft com en us powershell module microsoft powershell utility
  • 多态性的真正意义(用途)是什么

    我是面向对象编程的新手 虽然我明白什么是多态 但我无法得到它的真正用途 我可以有不同名称的函数 为什么我应该尝试在我的应用程序中实现多态性 经典答案 想象一个基类Shape 它暴露了一个GetArea方法 想象一个Square类和一个Rec
  • 安装 Android Wear 示例应用时失败 [INSTALL_FAILED_OLDER_SDK]

    我按照以下说明进行操作这个链接 http developer android com training wearables apps creating html在 Android Studio 中创建一个简单的移动 可穿戴应用程序 但是 在
  • 斐波那契数的迭代算法

    我对斐波那契数的迭代算法感兴趣 所以我在 wiki 上找到了这个公式 它看起来很简单 所以我在 Python 中尝试了它 它没有编译问题 公式看起来正确 不是确定为什么它给出错误的输出 我没有正确实施它吗 def fib n if n 0
  • 如何在pythonplot_surface中设置Z轴的比例等于X轴和Y轴

    我尝试使用 matplotlib 中的plot surface 来绘制 3D 曲面 我的代码是 fig plt figure ax fig gca projection 3d ax set aspect equal ax plot surf
  • 如何在 TensorFlow 中构建一个带有循环的简单 RNN?

    我刚刚开始使用 TensorFlow 正在尝试实现一个非常简单的 RNN RNN 有x作为输入 y作为输出 仅由一个层组成 该层需要x并将之前的输出作为输入 这是我想到的事情的图片 问题是 我看不到任何通过 TensorFlow API 构
  • 尝试在 Eclipse 中安装 apache tomcat 时出现“HTTP Status 404 - /”(localhost:8080)

    我已经在 Windows Vista 上安装了 eclipse 并且添加了新的 Apache Tomcat 服务器 Apache Tomcat 7 0 27 在 eclipse 中启动 Apache 后 我在 url 中输入以下地址 本地主
  • 如何查找程序使用哪种类型的系统调用

    我正在 x86 64 机器上工作 我的linux内核也是64位内核 由于实现系统调用有不同的方法 int 80 syscall sysenter 我想知道我的机器正在使用什么类型的系统调用 我是linux新手 我写了一个演示程序 inclu
  • X - 可编辑输入可在单击其他元素时进行编辑

    我有一个 x editable 输入 我用它来编辑用户名 元素的默认操作是当您单击其自身时 您可以编辑值 但我想启用单击元素的 editable 并能够编辑输入中的值 缩短这里的内容是小提琴 http jsfiddle net jjdJX
  • 如何在jquery中使用substr()函数? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 如何在我需要的脚本中使用 substr 函数substr 0 25 a class dep buttons href something t
  • 通过安装 Meteor 将 Meteor 部署到虚拟机

    我想知道 如果我将 Meteor 应用程序部署到虚拟机 为什么我不能在虚拟机上安装 Meteor 然后使用 Meteor run 命令运行我的应用程序 文档的部署部分说创建一个 tarball 包并将其部署到具有 Node 和 MongoD
  • 如何使用 svg 矩阵函数通过正确的变换数学来缩放 svg

    如果你看下面的代码片段 我想在 svg 图像上实现缩放 我希望它能够优雅地放大和缩小 我正在使用矩阵函数 我知道我可以通过更改第一个和第四个或矩阵或a and d 以编程方式 我将更改变换矩阵 但我想将 svg 保持在中心 并且在放大和缩小
  • 多线程时出现意外结果[重复]

    这个问题在这里已经有答案了 我有一个函数 由使用开始和结束参数启动的线程调用 该函数在单个主线程上运行时工作正常 然而 当我尝试多线程时 代码崩溃了 函数如下 static void processThread long startLimi
  • 在每个项目上创建一个带有 onClick 侦听器的列表

    我有一个SQLitedb 我想在 ListView 中查看所有元素 但我想让每一行都可以点击 这个怎么做 这是代码 然后 另一个问题 我有一个可以通过选项菜单启动的活动 它可以从数据库中添加或删除数据 我想在返回此活动时自动更新列表 我如何
  • JS 检查日期格式是否有效

    我有一个文本字段 用户可以在其中输入以下格式的日期时间 dd mm YYYY hh ii 我想使用 javascript 检查这是否是有效的日期时间 这应该包括 2 月 29 日以及所有事情 我怎样才能做到这一点 由于特殊月份 正则表达式不
  • SSLHandshakeException 与 jlink 创建运行时

    我有一个 dropwizard 应用程序 它可以与标准 JRE 一起正常运行 我尝试使用 jlink 创建一个运行时 它要小得多 Library Java JavaVirtualMachines jdk 11 jdk Contents Ho