java - SSL 身份验证问题

标签 java linux ssl tomcat7

当我尝试连接到支持 SSL 的 Web 服务时,出现 SSL 错误。当我尝试测试与 openSSL 的连接时,我得到了返回:

openssl s_client -debug -connect w.x.y.z:8443 连接(00000003) 写入 0x1e7ae00 [0x1e7b840](121 字节 => 121 (0x79)) 0000 - 80 77 01 03 01 00 4e 00-00 00 20 00 00 39 00 00 .w....N... ..9.. 0010 - 38 00 00 35 00 00 16 00-00 13 00 00 0a 07 00 c0 8..5 .................. 0020 - 00 00 33 00 00 32 00 00-2f 03 00 80 00 00 05 00 ..3..2../...... 0030 - 00 04 01 00 80 00 00 15-00 00 12 00 00 09 06 00 .................. 0040 - 40 00 00 14 00 00 11 00-00 08 00 00 06 04 00 80 @............ 0050 - 00 00 03 02 00 80 00 00-ff de aa 66 42 43 9f cf .....................fBC.. 0060 - e0 43 1b ec 72 9a 8b 24-9d 43 55 b0 d2 2f cf 1a .C..r..$.CU../.. 0070 - 22 01 aa be ec 11 4a a4-8c “.....J.. 从 0x1e7ae00 [0x1e80da0] 读取(7 字节 => 0 (0x0)) 17823:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:s23_lib.c:188:

看起来它试图与 SSLv2 或 SSLv3 连接,但它不能。可以使用 SSLv1 建立连接。我在 tomcat 实例中运行此 Web 服务,它可能未启用 SSLv2 或 SSLv3。如何在 tomcat 上启用 SSLv2 或 SSLv3?

最佳答案

  80 77 01 03 01...

...It looks like it tries to connect with SSLv2 or SSLv3, but it can't.

调试输出中的 03 01 表明它正在使用 TLS 1.0。前面的字节是长度(2 个字节)和类型 (ClientHello = 01),因此表示 SSL 2.0 compatible handshake .

The connection can be established with SSLv1.

没有 SSLv1。您可能是指 TLS 1.0 或更高版本(即 TLS 1.1 或 TLS 1.2)

17823:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:s23_lib.c:188:

这表示服务器只是关闭连接。这可能有很多原因,比如错误的协议(protocol)或没有通用的密码。在您使用 openssl 进行的测试中,它也可能缺少 SNI扩展名,因为一些服务器如果没有得到这个扩展名就会关闭连接或抛出一些错误。使用 -servername 选项指定预期的主机名。

除此之外,服务器只是简单地关闭了连接,并没有发送任何错误信息。因此,您需要查看服务器端以获得更详细的错误信息(日志文件等)。

How can I enable SSLv2 or SSLv3 on tomcat?

你最好不要。 SSL 2.0 (SSLv2) 绝对是不安全的,SSL 3.0 (SSLv3) 也被认为是不安全的(POODLE 攻击)。您不应该将其中任何一个用于生产系统。大多数客户端根本不支持 SSL 2.0,而且越来越多的客户端默认禁用对 SSL 3.0 的支持。而且我怀疑您的服务器问题是否可以通过这种方式解决。

关于java - SSL 身份验证问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31996705/

相关文章:

linux - 如何创建在开头添加父文件夹名称的子文件夹?

java - 拆分 Map 的键并使用新键和关联值创建一个新 Map

java - 在 Java 连接到主机后如何读取 SSH key 签名对横幅(用于生成 SSH 密码)?

javascript - 安装后 Moodle 3.7 无法正确加载

linux - 使用 bash 向不断增长的段落添加新行

azure - 在 Azure 网站上强制使用 https - web.config - Laravel 4

django - EOF 发生违反协议(protocol) (_ssl.c :1125) on python:3. 8-slim-buster

c++ - SSL 握手产生 BIO 错误

java - 在 ArrayList 中查找重复值

java - 使用camel-http 设置 HTTPS 身份验证?