我一直在努力解决我认为的网络问题,并且取得了很大进展。我想看看是否有人对解决方案或可能的步骤提出了一些想法,这些步骤可以为我提供更多信息以便找到解决方案。
环境 我有一个移动Web应用程序(angular.js),它运行在条形码扫描枪(intermec ck71)上的html 5浏览器(专有浏览器)上,连接到弹簧引导后端(非群集单实例开发盒)。我编写了移动网络应用程序,但已经承担了春季启动后端的所有权(第一次使用springboot)。我在公司办公室,我没有网络,所以我不完全了解事情的布局。
问题 我无法通过https
将移动网络应用程序连接到办公室无线上的开发箱已采取的措施 我们最近将我们的团队开发框改为https,现在开发已经完成。在https移动应用程序正确加载之前,现在只是在移动浏览器上显示一个旋转轮,然后在大约一分钟后超时。
我做的第一步是在本地加载运行https的服务器并检查是否可以让扫描枪连接(它做了)。
然后我尝试从桌面计算机加载移动网络应用程序(也可以使用)。
因此似乎问题是通过https与办公室无线网络上的移动枪隔离。我让网络团队确保端口443和端口8443是打开的(他们看到它被阻止并为我打开)。
我重复连接但仍然没有运气。我在服务器上运行了一个tcpdump,并在失败的调用上看到以下日志
从这个日志看起来服务器(172.18.222.121)通过发送数据包12(FIN,ACK)来关闭连接
我在服务器的tomcat实例中添加了一些日志记录,并参见以下内容
[pid 22505] accept(41, {sa_family=AF_INET, sin_port=htons(1037), sin_addr=inet_addr("172.31.12.157")}, [16]) = 46
[pid 22505] setsockopt(46, SOL_SOCKET, SO_LINGER, {onoff=0, linger=0}, 8) = 0
[pid 22505] setsockopt(46, SOL_TCP, TCP_NODELAY, [1], 4) = 0
但我仍然没有看到任何关于积极告诉关闭的意见。我的下一个想法是该盒子可能有ip范围列入白名单/黑名单,但根据维护服务器的团队,没有ip规则,防火墙或任何会干扰盒子上网络流量的东西。
所以我把它带到网络团队来显示流量,他们告诉我这不是网络问题,因为初始流量正在通过,真正的问题是FIN数据包。我把这些信息提供给服务器团队,后者告诉我他们没有任何东西可以导致发送FIN数据包并且很可能是网络问题。我认为它很可能是一个服务器问题,因为这是我可以访问的,其他人都认为部分功能正常。我决定创建一个新的SSL证书,因为我在连接时在桌面浏览器上收到不受信任的消息。我创建了这个新证书,然后将其添加到移动扫描枪的受信任根目录中。我试图再次连接枪没有效果。
接下来,我联系了移动枪供应商,看看枪上是否有任何可用信息对其进行故障排除。在与他们进行一些故障排除之后,他们说他们无法在他们身边重现,并且因为它在我这边工作,除了在那个网络上连接它可能是一个网络问题。
我回到了服务器并在tomcat阀门上添加了日志记录,看看能否看到我是否可以获得任何其他信息。当我查看阀门产生的日志时,我会获得任何成功连接的条目,但是当我无法连接时,没有任何显示。我的连接器看起来只是为了完整性。
连接器代码:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreType="PKCS12"
keystoreFile="/home/devadmin/.ssh/keystore.p12"
keystorePass="password" />
阀门:
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%a %H %p %U %h %l %u %t "%r" %s %b %{xxx}i" />
结论 所以基本上我可以让应用程序加载到任何地方,除了这一个网络,这让我相信它是网络相关的。然而,网络团队表示它不能与网络相关,因为初始数据包正在传输,而问题在于服务器发送的FIN数据包。我已经厌倦了我对环境的了解......毕竟我是移动开发人员:)我仍然觉得它与网络有关,但是没有任何东西可以说明发送FIN数据包的原因。关于要检查的事情或可能导致问题的任何想法?
答案 0 :(得分:0)
如果您可以使用浏览器或curl(例如)连接,那么我怀疑问题出在客户端。你说你必须忽略浏览器中的证书违规,这样才有气味,然后你说你创建了一个新的SSL证书&#34;。由于凡人真的无法创建可信证书,这意味着您安装了自签名证书或其他不完整证书,我猜测客户端不允许通过不受信任证书的连接进行访问(有充分的理由)?
答案 1 :(得分:0)
这结果与redhat / java bug有关。当扫描枪到达具有正确版本组合的服务器实例导致错误时,服务器抛出了由具有该问题的库引起的SSL异常。由于日志记录的配置方式,我没有看到这些异常。
以下是可能在我之后阅读此内容的人的错误链接。