首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >排除AS2连接故障- TCP在TLS握手后发送

排除AS2连接故障- TCP在TLS握手后发送
EN

Stack Overflow用户
提问于 2018-10-31 06:34:22
回答 1查看 752关注 0票数 1

我有一个运行在Windows Server2008 R2上的IIS7.5的AS2服务器应用程序(RSSBus)。我有一些活动的连接在HTTP上工作得很好,但没有一个是在HTTPS上工作的。有两个不同的贸易伙伴,我曾尝试建立HTTPS连接,但他们都失败了,我从他们那里收到的错误消息非常相似。注意,我已经为我正在使用的域配置了一个有效的SSL证书,并且我相信它工作得很好。

我从我的交易伙伴那里收到的错误使我相信问题是我这一端的配置错误,但我一直无法找出问题所在。

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

代码语言:javascript
复制
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,我看到它经过了正常的连接过程,但是在我看到从发送者到我的服务器的"Client Key Exchange,Change Cipher Spec,Encrypted Handshake“之后,我的服务器发回了RST,ACK,如下所示:

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

在我的服务器上,我使用应用程序IIS Crypto只启用了“最佳实践”协议(TLS1.0、1.1、1.2)、密码(3DES168、AES128/128、AES256/ 256 )、散列(MD5、SHA256、SHA384、SHA512)和密钥交换(Diffie-Hellman、PKCS、ECDH)。可能是我禁用了我的贸易伙伴正在使用的某些东西,但我知道他们都在使用TLS 1.2,并且我在Wireshark信息中看到了Diffie-Hellman密钥,所以我也不认为是这种情况。然而,我对此的了解非常有限,所以我可能会走错路。

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

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

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2018-11-16 11:22:49

这个问题已经提出16天了,但我希望你还在,因为你已经找到了合适的人。我一直都在和这种东西打交道,这真的很让人头疼。最重要的是要记住,尽管AS2和HTTPS非常复杂,但在RSSBus中实际使用的选项是相当有限的。是的,WireShark可以帮助诊断一些复杂的问题,但在您祈祷进入WireShark之前,还有许多其他地方可以查看。

因此,让我们从顶部开始,您已经有了可用的HTTP连接,并且您确信您遇到的问题与SSL有关。

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

我将在这里进行一个疯狂的Hail Mary猜测,并说问题可能是SSL/TLS不兼容。RSSBus实际上使用的是Windows Schannel for SSL,它不是内置在软件中的(对于大多数AS2软件来说这是真的,他们不这样做是愚蠢的)。所以你的安全套接层协议能力是由Windows Server2008 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握手期间,你的贸易伙伴服务器要求TLS1.2,而你的Windows Server2008 R2说不,谢谢,它被禁用了,再见,连接关闭。你可能会想“但是汤姆,我可以看到TLS1.2在RSSBus中打勾了!”。我的回答是“得到诱饵的孩子”,因为这基本上是RSSBus告诉我的(尽管他们的支持团队真的很有见识)。

您如何启用这些功能?我真的不知道,我从来没有成功过,因为当我遇到这个问题时,我使用的是更旧的操作系统。我最终换到了Windows10,结束了这一天(这导致了另一个贸易伙伴的SSLv2出现问题,但那是另一回事)。这应该不是太难,不过,给它一个谷歌,让我知道你怎么走。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53073837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档