gpt4 book ai didi

scala - Akka Stream TLS 服务器日志记录和故障排除

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

我正在使用 Akka Streams 创建一个使用 akka.stream.scaladsl.TLS 和客户端证书身份验证的 TCP 服务器。我正在努力创建一个回声服务器作为第一个概念证明。

与此同时,我是 Scala/Akka/Akka Streams 的新手,因此我在 Python 中创建了一个类似的服务器和 TCP 客户端,以提供工具来测试我在 Scala 中的工作。 Python 服务器/客户端使用客户端证书身份验证功能。当连接到服务器时,客户端执行以下步骤:

  • 创建和配置 SSLContext
  • 使用 socket.create_connection() 创建套接字
  • 使用 SSLContext.wrap_socket() 使用 SSLContext 包装套接字。这将创建对等连接
  • 连接后,打印服务器证书
  • 无限循环请求输入并将每个输入发送到服务器

我相信我已经使用 Akka Streams 和 akka.stream.scaladsl.TLS 完成了服务器,但是当我尝试使用我的 Python 客户端进行连接时,客户端永远不会通过使用 context.wrap_socket(sock , server_hostname=host)。服务器成功绑定(bind) TCP 连接并创建相应的 IncomingConnection 对象。客户端/服务器也永远不会超时(客户端只是坐着等待握手?)。

我最大的问题是我看不到来 self 的 TLS BidiFlow akka.stream.scaladsl.TLS 的任何信息。我不知道我卡在了握手的哪一步,这使得故障排除非常困难。

有什么办法可以在整个TLS握手过程中输出一些信息吗?好像所有的功能都被封装了,不知道有没有办法解决。

否则,我将尝试使用 openssl 进行故障排除并获得以下信息:

bash$ openssl s_client -connect myserver.com:443 -state -debug
CONNECTED(00000003)
SSL_connect:before/connect initialization
write to 0x7fd914100080 [0x7fd915001000] (318 bytes => 318 (0x13E))
0000 - 16 03 01 01 39 01 00 01-35 03 03 e3 ff 5d fb 26 ....9...5....].&
0010 - 15 e3 32 89 37 e2 cb 95-f5 00 bd df 13 3d ae a6 ..2.7........=..
0020 - d7 37 db 4e 80 19 63 ad-d6 6c f1 00 00 98 cc 14 .7.N..c..l......
0030 - cc 13 cc 15 c0 30 c0 2c-c0 28 c0 24 c0 14 c0 0a .....0.,.(.$....
0040 - 00 a3 00 9f 00 6b 00 6a-00 39 00 38 ff 85 00 c4 .....k.j.9.8....
0050 - 00 c3 00 88 00 87 00 81-c0 32 c0 2e c0 2a c0 26 .........2...*.&
0060 - c0 0f c0 05 00 9d 00 3d-00 35 00 c0 00 84 c0 2f .......=.5...../
0070 - c0 2b c0 27 c0 23 c0 13-c0 09 00 a2 00 9e 00 67 .+.'.#.........g
0080 - 00 40 00 33 00 32 00 be-00 bd 00 45 00 44 c0 31 .@.3.2.....E.D.1
0090 - c0 2d c0 29 c0 25 c0 0e-c0 04 00 9c 00 3c 00 2f .-.).%.......<./
00a0 - 00 ba 00 41 c0 11 c0 07-c0 0c c0 02 00 05 00 04 ...A............
00b0 - c0 12 c0 08 00 16 00 13-c0 0d c0 03 00 0a 00 15 ................
00c0 - 00 12 00 09 00 ff 01 00-00 74 00 0b 00 04 03 00 .........t......
00d0 - 01 02 00 0a 00 3a 00 38-00 0e 00 0d 00 19 00 1c .....:.8........
00e0 - 00 0b 00 0c 00 1b 00 18-00 09 00 0a 00 1a 00 16 ................
00f0 - 00 17 00 08 00 06 00 07-00 14 00 15 00 04 00 05 ................
0100 - 00 12 00 13 00 01 00 02-00 03 00 0f 00 10 00 11 ................
0110 - 00 23 00 00 00 0d 00 26-00 24 06 01 06 02 06 03 .#.....&.$......
0120 - ef ef 05 01 05 02 05 03-04 01 04 02 04 03 ee ee ................
0130 - ed ed 03 01 03 02 03 03-02 01 02 02 02 03 ..............
SSL_connect:unknown state

此时 openssl 挂起。

最佳答案

Akka TLS 支持在幕后使用内置的 Java TLS 支持,因此要获得 TLS 的调试输出,您必须为其启用调试。这可以通过在启动时将系统属性传递给 JVM 来完成,就像这样 -Djavax.net.debug=all

关于scala - Akka Stream TLS 服务器日志记录和故障排除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51997978/

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