2014-06-23 1 views
1

저는 네트워킹 문제로 생각하고 많은 진전을 이루지 못했습니다. 누군가가 솔루션에 대한 아이디어를 갖고 있는지 또는 가능한 해결책을 찾기 위해 더 많은 정보를 얻을 수있는 가능한 단계가 있는지 알고 싶었습니다. 나는 모바일 웹 응용 프로그램 스프링 부팅 백엔드 (비 연결 바코드 스캐닝 건 (인터멕 ck71)에 HTML 5 브라우저 (전용 브라우저)에서 실행되는 (angular.js) 하나의 클러스터를 https를 통한 연결 문제 해결

환경 인스턴스 dev에 상자). 필자는 모바일 웹 응용 프로그램을 작성했지만 스프링 부트 백엔드의 소유권을 가정했습니다 (스프링 부트로 처음 작업하는 경우). 나는 네트워크를 소유하지 않은 법인 사무실에 있으므로 사물이 어떻게 배치되어 있는지 완전히 이해하지 못했습니다.

나는 단계가 이미 촬영

https로 사무실의 무선 우리 dev에 상자에 연결하는 모바일 웹 응용 프로그램을 얻을 수 문제 우리는 최근 HTTPS 지금 개발이 우리 팀 dev에 상자를 전환 끝마친. https가 시작되기 전에 모바일 애플리케이션이 제대로로드되었지만 이제는 모바일 브라우저에 회전 휠이 표시되고 약 1 분 후에 시간이 초과됩니다.

내가 수행 한 첫 번째 단계는 https를 로컬로 실행하는 서버를로드하고 스캔 총을 연결할 수 있는지 확인하는 것입니다.

다음 (내 작품도) dev 상자에서 모바일 웹 응용 프로그램을로드하는 내 데스크톱 컴퓨터를 시도했다.

그래서 문제는 https가있는 사무실의 무선 네트워크에있는 모바일 총에 격리 된 것처럼 보입니다. 나는 네트워킹 팀에게 포트 443과 포트 8443이 열려 있는지 확인했다. (그들은 보았고 나를 위해 열렸다.)

연결을 시도했지만 여전히 운이 없다. 나는이가 서버처럼 보인다 로그에서

enter image description here

실패 호출 (172.18.222.121) 패킷 (12)를 전송하여 연결을 종료한다 (FIN에 다음과 같은 로그를 서버에서 tcpdump를 달렸다 참조 ACK)

나는 서버의 바람둥이 인스턴스에 일부 로깅을 추가하고 다음

[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 버그와 관련이있는 것으로 나타났습니다. 버그의 원인이되는 올바른 버전 조합을 가진이 서버 인스턴스에 스캐너 총이 도달했을 때 서버에서 문제가있는 라이브러리로 인해 SSL 예외가 발생했습니다. 로깅이 구성된 방식 때문에 이러한 예외가 표시되지 않았습니다.

다음은 나에게 이것을 읽고 있을지도 모르는 사람들을위한 버그에 대한 링크입니다.

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

0

브라우저 또는 curl (예를 들어)로 연결할 수 있으면 문제가 클라이언트에 있다고 의심됩니다. 당신은 브라우저에서 인증서 위반을 무시해야만 냄새가 난다고 말했고 "새로운 SSL 인증서 생성"이라고 말했습니다. 필사자가 신뢰할 수있는 인증서를 만드는 것이 실제로 가능하지 않기 때문에 자체 서명 된 인증서 또는 불완전한 인증서를 설치했음을 의미하며 신뢰할 수없는 인증서가있는 연결을 통해 클라이언트가 액세스하지 못하도록하는 위험이 있습니다. 원인)?

+0

예. 나는 같은 생각을 가지고있었습니다. 내가 이것이 문제가 아니라고 믿게하는 원인은 내 로컬 인스턴스에서 동일한 방식으로 자체 서명 된 인증서를 사용하고 있다는 것입니다. 그리고 모바일 스캐너 총은 webapp의 해당 인스턴스를로드 할 수 있습니다. 어떤 추가 생각? 빠른 응답에 정말 감사드립니다. –

+0

또한 클라이언트가 아닌 서버에서 Fin을 보내고 있다는 것을 잊어 버렸습니다. 클라이언트가 보안상의 이유로 통신을 거부하면 FIN 패킷이 클라이언트에 의해 전송되지 않습니까? –