2014-06-23 105 views
1

我一直在苦苦挣扎什么,我认为是一个网络问题,并没有取得很大进展。我想看看是否有人对解决方案有一些想法或可能的步骤,可以为我提供更多信息来达成解决方案。解决连接通过https

环境 我有一个移动Web应用程序,是在上的条形码扫描枪(Intermec的ck71)一个HTML 5的浏览器(专有的浏览器)运行(angular.js)连接到春季启动后端(非簇单实例开发框)。我编写了移动Web应用程序,但已经承担了春季启动后端(第一次使用springboot)的所有权。我在一家公司办公室,我并不拥有这些网络,所以我没有完全理解事情的布局。

问题 我不能移动web应用程序以https

步骤已经采取连接到我们开发框上办公无线 我们最近更换了我们的团队开发框到https现在发展完了。在https正确加载移动应用程序之前,现在只在移动浏览器上显示一个旋转轮,然后在大约一分钟后超时。

第一步我所做的是在本地加载服务器上运行HTTPS和检查,看看如果我能得到的扫描枪连接(它没有)。

我又试图我的台式电脑加载从dev的框移动网络应用程序(也工作)。

所以好像问题是独立于移动枪以https办公室的无线网络上。我有网络团队确保443端口和8443端口是打开的(他们看到它被阻塞并为我打开)。

我重试连接,仍然没有运气。我跑在服务器上tcpdump和看到下面的日志,对未

enter image description here

从此日志,它看起来像服务器调用(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 

,但我仍然没有看到关于积极告诉conncetion收什么。我的下一个想法是,该框可能会将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 &quot;%r&quot; %s %b %{xxx}i" />

结论 所以基本上我可以得到应用无处不在加载,除了这一个网络,这使我相信,这是网络有关。然而网络团队说,它不能与网络相关,因为最初的数据包正在传输,问题在于服务器发送FIN数据包。我已经用尽了我对环境的了解......毕竟我是一名移动开发人员:)我仍然觉得它是与网络相关的,但没有任何内容可以说明FIN数据包发送的原因。任何想要检查的东西或可能导致问题的原因?

回答

0

原来这与redhat/java bug有关。当扫描枪接近具有正确组合版本的服务器的这个实例时,服务器正在抛出由存在问题的库引起的SSL异常。由于日志配置的方式,我没有看到这些异常。

这里是一个错误的链接,可能是我后面读到的人的错误。

https://bugzilla.redhat.com/show_bug.cgi?id=1022017

0

如果你可以连接你的浏览器或curl(例如),那么我怀疑这个问题是在客户端。你说你必须忽略浏览器中的证书违规行为,这是一种气味,然后你说你“创建了一个新的SSL证书”。由于凡人不可能创建可信任的证书,这意味着您安装了自签名证书或其他不完整的证书,并且我猜测客户端将不允许通过与不可信证书的连接来访问(为了好原因)?

+0

是的,我有同样的想法。什么使我相信这不是问题,我正在使用在本地实例上以相同方式创建的自签名证书。手机扫描枪可以加载该webapp的实例。任何额外的想法?我真的很感激快速的回应。 –

+0

此外我忘了补充说Fin是由服务器而不是客户端发送的。如果客户因安全原因拒绝了通信,FIN客户端不会发送FIN数据包吗? –