【问题标题】:Troubleshooting AS2 connection problems - TCP RST being sent after TLS handshake解决 AS2 连接问题 - TLS 握手后发送 TCP RST
【发布时间】:2019-04-04 01:22:57
【问题描述】:

我有一个在 Windows Server 2008 R2 上的 IIS 7.5 中运行的 AS2 服务器应用程序 (RSSBus)。我有一些可以通过 HTTP 正常工作的活动连接,但没有一个可以通过 HTTPS 工作的连接。我曾尝试在两个不同的贸易伙伴处建立 HTTPS 连接,但它们都失败了,而且我从他们那里收到的错误消息非常相似。请注意,我为我正在使用的域配置了一个有效的 SSL 证书,我相信它可以正常工作。

我从贸易伙伴那里收到的错误让我相信问题是我的配置错误,但我无法找出问题所在。

以下是其中一个错误(我已经编辑了一些识别信息):

2018/10/30 16:38:33 Run: type="API"
2018/10/30 16:38:35 Detail: "Using proxy http://xxxxxxxx:8080..." level=1
2018/10/30 16:38:35 Result: "Success" "Return status=0"
2018/10/30 16:38:35 Detail: "Connecting to https://www.yyyyyyyy.com:443..."
2018/10/30 16:38:35 File: source="/edi/mft/harmony/sendtest/sendTest_X12" direction="Local->Host" number=1 of 1 fileSize=529 fileTimeStamp=2018/10/30 16:38:35 transferID="AS2-20181030_163835722-J" docDBTransferID="37ede9ac-a23d-4ed6-85bc-879d4939a04f"
2018/10/30 16:38:35 HTTP: "POST /rssbus/pub/Receive.rsb"
2018/10/30 16:38:35 Detail: "AS2-From: SenderAS2Id, AS2-To: ReceiverAS2Id, Subject: EDIINTDATA, Content-Type: X12"
2018/10/30 16:38:35 Detail: "Sending signed and encrypted [TripleDES] message to ReceiverAS2Id..." level=1
2018/10/30 16:38:44 Exception: "java.io.EOFException: Connection closed by remote host. 
  at iaik.security.ssl.Utils.a(SourceFile:291) 
  at iaik.security.ssl.ab.b(SourceFile:452) 
  at iaik.security.ssl.ab.e(SourceFile:374) 
  at iaik.security.ssl.y.f(SourceFile:365) 
  at iaik.security.ssl.n.b(SourceFile:729) 
  at iaik.security.ssl.n.a(SourceFile:1509) 
  at iaik.security.ssl.y.d(SourceFile:784) 
  at iaik.security.ssl.SSLTransport.startHandshake(SourceFile:569) 
  at iaik.security.ssl.SSLSocket.startHandshake(SourceFile:386) 
  at HTTPClient.HTTPConnection.sendRequest(HTTPConnection.java:3094) 
  at HTTPClient.HTTPConnection.handleRequest(HTTPConnection.java:2910) 
  at HTTPClient.HTTPConnection.setupRequest(HTTPConnection.java:2702) 
  at HTTPClient.HTTPConnection.Post(HTTPConnection.java:1148) 
  at com.cleo.lexicom.protocols.http.HTTP.post(HTTP.java:750) 
  at com.cleo.lexicom.beans.as2bean.HttpSender.prepareToSend(HttpSender.java:206) 
  at com.cleo.lexicom.beans.as2bean.SMimeClient.sendSignedThenCompressedAndEncryptedMessage(SMimeClient.java:2163) 
  at com.cleo.lexicom.beans.as2bean.SMimeClient.sendMessage(SMimeClient.java:364) 
  at com.cleo.lexicom.beans.as2bean.AS2Action.post(AS2Action.java:398) 
  at com.cleo.lexicom.beans.httpbean.HttpAction.issue(HttpAction.java:2602) 
  at com.cleo.lexicom.beans.httpbean.HttpAction.put(HttpAction.java:1139) 
  at com.cleo.lexicom.beans.httpbean.HttpAction.put(HttpAction.java:890) 
  at com.cleo.lexicom.beans.httpbean.HttpAction.putFile(HttpAction.java:846) 
  at com.cleo.lexicom.beans.httpbean.HttpAction.putFile(HttpAction.java:800) 
  at com.cleo.lexicom.beans.httpbean.HttpAction.putFileLoop(HttpAction.java:704) 
  at com.cleo.lexicom.beans.httpbean.HttpAction.put(HttpAction.java:614) 
  at com.cleo.lexicom.beans.httpbean.HttpAction.macroCommand(HttpAction.java:461) 
  at com.cleo.lexicom.beans.LexActionBean.executeCommand(LexActionBean.java:4199) 
  at com.cleo.lexicom.beans.LexActionBean$LexBeanRunCommand.run(LexActionBean.java:4315) 
  at java.lang.Thread.run(Thread.java:748) "
2018/10/30 16:38:44 Hint: "Host did not send a complete response before closing connection."
2018/10/30 16:38:44 Result: "Exception" "java.io.EOFException: Connection closed by remote host."
2018/10/30 16:38:44 End

我在这个连接测试期间运行了wireshark,我看到它通过了正常的连接过程,但是在我看到从发送方到我的服务器的“客户端密钥交换、更改密码规范、加密的握手消息”之后,我的服务器发回[RST, ACK],如下图:

我查看了我的 AS2 服务器上的连接超时设置,它设置为 60 秒,我认为这已经足够长了,从上面的时间戳来看,重置几乎是立即发送的。

在我的服务器上,我使用应用程序 IIS Crypto 仅启用“最佳实践”协议(TLS 1.0、1.1、1.2)、密码(3DES 168、AES 128/128、AES 256/256)、哈希( MD5、SHA、SHA 256、SHA 384、SHA 512)和密钥交换(Diffie-Hellman、PKCS、ECDH)。有可能我禁用了我的贸易伙伴正在使用的某些东西,但我知道他们都在使用 TLS 1.2,而且我在 Wireshark 信息中看到了 Diffie-Hellman 密钥,所以我也不认为是这种情况。但是,我对此的了解非常有限,因此我可能会走得更远。

我真的只是想弄清楚下一步该往哪里看。 Wireshark 中有什么东西可以用来解决问题吗?我试过检查一些框架,但还没有看到任何对我有很大帮助的东西。

请注意,当我从 HTTPS 切换到 http 时,同样的连接测试也会成功。该成功测试可以在下面查看:

2018/10/30 16:28:37 Run: type="API"
2018/10/30 16:28:38 Detail: "Using proxy http://xxxxxx:8080..." level=1
2018/10/30 16:28:38 Result: "Success" "Return status=0"
2018/10/30 16:28:38 Detail: "Connecting to http://www.yyyyyyy.com:80..."
2018/10/30 16:28:38 File: source="/edi/mft/harmony/sendtest/sendTest_X12" direction="Local->Host" number=1 of 1 fileSize=529 fileTimeStamp=2018/10/30 16:28:38 transferID="AS2-20181030_162838070-J" docDBTransferID="d621b86f-0600-46bb-ac12-3cb5bb9e6203"
2018/10/30 16:28:38 HTTP: "POST /rssbus/pub/Receive.rsb"
2018/10/30 16:28:38 Detail: "AS2-From: SenderAS2Id, AS2-To: ReceiverAS2Id, Subject: EDIINTDATA, Content-Type: X12"
2018/10/30 16:28:38 Detail: "Sending signed and encrypted [TripleDES] message to ReceiverAS2Id..." level=1
2018/10/30 16:28:38 Detail: "Waiting for response..." level=1
2018/10/30 16:28:38 File: source="MDN" direction="Host->Local" destination="AS2/mdn/xxxxx/received/CLEO-20181030_212838173-44K62B@08925485US00_8436230-J_20181030-162838.mdn" number=1 of 1
2018/10/30 16:28:38 Response: "200 OK"
2018/10/30 16:28:38 Result: "Success" "Sent and Received Message Integrity Check codes match Source file copied to '/edi/mft/data/AS2/edi/xxxxx/sentbox/sendTest_X12_HY1139-MB8931_20181030-162838'."
2018/10/30 16:28:38 End

【问题讨论】:

    标签: https tcp iis-7.5 wireshark edi


    【解决方案1】:

    这个问题已经 16 天了,但我希望你还在,因为你找到了合适的人。我一直在处理这类事情,这可能是一件非常痛苦的事情。要记住的最重要的事情是,尽管 AS2 和 HTTPS 非常复杂,但您在 RSSBus 中必须使用的实际选项非常有限。是的,WireShark 可以帮助诊断一些棘手的问题,但是在您交叉手指深入 WireShark 之前,还有许多其他地方需要查看。

    所以让我们从头开始,您有有效的 HTTP 连接,并且您确信您遇到的问题与 SSL 有关。

    您到底想做什么?看起来您正在尝试将文件发送到您的合作伙伴的 HTTPS URL,并且您从两个合作伙伴那里获得了“远程主机关闭的连接”。你能收到他们的文件吗?

    我要在这里大胆猜测一下,并说问题可能是 SSL/TLS 不兼容。 RSSBus 实际上使用 Windows Schannel 进行 SSL,它没有内置在软件中(对于大多数 AS2 软件来说都是如此,他们不这样做是很愚蠢的)。因此,您的 SSL 功能受 Windows Server 2008 R2 的约束。所以让我们查一下:https://docs.microsoft.com/en-us/windows/desktop/secauthn/protocols-in-tls-ssl--schannel-ssp-

    2008 R2 的含义是什么?默认情况下仅启用 TLS 1.0。 TLS 1.1 和 1.2 被禁用。因此,除非您手动启用了这些,否则在 SSL 握手期间,您的贸易伙伴服务器会要求 TLS 1.2,并且您的 Windows Server 2008 R2 说不,谢谢,它已被禁用,再见,连接已关闭。您可能在想“但是 Tom,我可以看到 TLS 1.2 框在 RSSBus 中打勾!”。我的回答是“上当受骗的孩子”,因为这基本上是 RSSBus 告诉我的(尽管他们的支持团队确实知识渊博)。

    如何启用这些?我真的不知道,我从来没有成功过,因为当我遇到这个问题时,我使用的是更旧的操作系统。我最终迁移到 Windows 10 并收工(这导致另一个贸易伙伴的 SSLv2 出现问题,但这是另一回事)。不过应该不会太难,给它一个谷歌,让我知道你的进展。

    【讨论】:

      猜你喜欢
      • 2017-03-14
      • 2013-06-01
      • 1970-01-01
      • 2015-01-04
      • 2011-05-01
      • 2021-09-12
      • 1970-01-01
      • 2011-07-02
      • 1970-01-01
      相关资源
      最近更新 更多