2009-11-20 2 views
12

내가 인증서를 사용하고, 개인 키stream_socket_client 수없는

$ctx = stream_context_create(); 
stream_context_set_option($ctx, 'ssl', 'local_cert', $certfile); 
stream_context_set_option($ctx, 'ssl', 'passphrase', $pass); 
$fp = stream_socket_client('ssl://gateway.xyz.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx); 

그것의 내 로컬 XAMPP 서버에서 실행 있지만 외부 서버에서 작동하지 않는 (연결 시간이 초과되었습니다) :

경고 : stream_socket_client() [function.stream-socket-client] :/home/biranchi/public_html/push에서 ssl : //gateway.sandbox.push.apple.com : 2195 (연결 시간이 초과되었습니다)에 연결할 수 없습니다. .php on line 42

Faile d 연결 110

무엇이 오류입니까? 서버의 일부 설정을 변경해야합니까?

답변

18

프로덕션 서버에서 포트 2195를 열어서 문제를 해결했습니다. 당신은 명령 $ 텔넷 gateway.push.apple.com에 따라 확인할 수 2195

당신은 모든 17.0.0.0/8 블록을 허용하도록 방화벽 설정해야
-bash-3.2# telnet gateway.push.apple.com 2195 

Trying 17.149.38.141... 
Connected to gateway.push.apple.com (17.149.38.141). 
Escape character is '^]'. 
Connection closed by foreign host. 
+0

안녕하세요 @palaniraja, 내가 Mac에서 LittleSnitch를 사용하고 포트 2195 모두 수신 및 발신을 활성화했습니다. 잠시 후 아직도 닫히고 있습니다 ........ 어떤 제안이 있습니까? –

+0

컴퓨터에서 스크립트를 테스트하고 있습니까? 서버로? 얼마 동안 littlesnitch를 사용 중지 해보십시오. 나는 당신이 어떤 데이터 (유휴)를 밀지 않고 열린 연결을 가지고 있다면 애플이 스로틀을 추측한다. – palaniraja

+1

localhost에서 테스트 중입니다 ....... 약간의 스 니치에서 SILENT MODE> Allow Connection Attempts를 활성화했습니다 ............ 아직 운이 없음 ....... 정확히 무엇입니까? 그것이 포트와 연결되어 있지 않다면 telnet으로 표시하겠습니까? 제 경우에는 '이스케이프 문자가'^] '라고 표시됩니다. 잠시 동안 거기에 머물러 있습니다 ... 약 1-2 분 후에'외국 호스트에 의해 연결이 끊어졌습니다. '라는 메시지가 나타납니다. 정상입니까? –

4

개인 방화벽 설정을 확인하고 차단하지 않는지 확인하십시오. 방화벽을 비활성화하십시오.

또한 일부 API는 데스크톱이 아닌 실제 도메인에서 온 요청을 좋아합니다. 나는 애플이 이런 식으로 일한다고 믿을만한 이유가 없다.

또한 gateway.sandbox.push.apple.com을 ping하고 ping을 잘 연결했는지 확인하십시오.

1

(모든 애플에 속하는를!). THIS ANSWER

그리고 Apple에 따라 확인 :

있는 APN 서버는 그래서 당신의 장치가 항상 알림 같은 공용 IP 주소로 연결되지 않습니다,로드 밸런싱을 사용합니다. Apple에 할당 된 전체 17.0.0.0/8 주소 블록에서 이러한 포트에 대한 액세스를 허용하는 것이 가장 좋습니다. 이 대신 "17.0.0.0/의 사용

tcp|out|d=2195|d=17.0.0.0/8

: 당신이 (나 같은) CSF 방화벽을 사용하는 경우

, 나는 파일을 csf.allow이 줄을 추가하는 것이 좋습니다 것 8 "은 애플과 특히 2195 포트에 아웃 본드 연결 만 허용합니다. NSA는 그것을 좋아하지 않지만 훨씬 더 정확하고 안전합니다! ;)