2014-09-15 4 views
0

PHP 웹 서버 서버 자바 스크립트 클라이언트를 만들어 연결했습니다. 그것은 SSL없이 잘 작동합니다. 다음 단계는 ws 대신 wss를 사용하여 보안을 강화하는 것입니다 (웹 사이트에서 https를 활성화 함).PHP websocket stunnel로 리디렉션

클라이언트 요청 :

내 의도는 들어오는 트래픽을 해독하고 CentOS는 6

첫 번째 단계는 단순히 서버에 클라이언트의 요청을 리디렉션하는 것입니다에되는 Stunnel을 사용하여 websocketserver로 리디렉션하는 것입니다 : ws://soundjack.eu:9030/wsServer2.php

서버 : 소켓되는 Stunnel 설정을 풀어서 php -q wsServer2.php

실행 144.76.81.210:9090에서 수신 만든 :

; Some security enhancements for UNIX systems - comment them out on Win32 
chroot = /var/run/stunnel/ 
;setuid = nobody 
;setgid = nobody 
; PID is created inside the chroot jail 
pid = /stunnel.pid 

; Some performance tunings 
socket = l:TCP_NODELAY=1 
socket = r:TCP_NODELAY=1 
;compression = zlib 

; Some debugging stuff useful for troubleshooting 
debug = 7 
output = /var/log/stunnel/stunnel.log 

; Use it for client mode 
client = yes 

; Service-level configuration 
[wsServer] 
accept = 127.0.0.1:9030 
connect = 127.0.0.1:9090 

되는 Stunnel 올바른 시작

포트 9030.에 클라이언트 gehts의 abortet (체크 불을 지르고 콘솔)에 의해 sendet 때마다 요청을 듣고있다. Chrome에서는 상태 : 완료라고 말하고 자세한 정보는 표시하지 않습니다.

나는 오류가 무엇인지 모르기 때문에 어떤 도움이 좋을 것이다. 감사!

+0

더 많은 정보가 필요하다면, 물론 그것을 추가 할 것입니다. – DrakeBlack

답변

0

마지막으로 작동합니다! SSL을 사용해도 효과가 좋습니다.

단서 (현재 SSL을 사용하여 업데이트)되는 Stunnel의 설정이 올바른 일을 할 수있는 기회를했다 :

/etc/stunnel/stunnel.conf :

; Certificate/key is needed in server mode and optional in client mode 
cert = /path/to/<myCert>.pem 
key = /path/to/<myKey>.key 

; Protocol version (all, SSLv2, SSLv3, TLSv1) 
sslVersion = all 

; Some security enhancements for UNIX systems - comment them out on Win32 
chroot = /var/run/stunnel/ 

; PID is created inside the chroot jail 
pid = /stunnel.pid 

; Some performance tunings 
socket = l:TCP_NODELAY=1 
socket = r:TCP_NODELAY=1 
;compression = zlib 

; Some debugging stuff useful for troubleshooting 
debug = 7 
output = /var/log/stunnel/stunnel.log 
;foreground = yes 

; Use it for client mode 
;client = yes      !! turn to server mode 

; Service-level configuration 
[wsServer] 
accept = 0.0.0.0:9030    !! listen to all addresses 
connect = 127.0.0.1:9090 

참고 :와 마크! 유효한 코멘트가 없습니다! 나는 단지 변화를 보여주기 위해 그것들을 삽입했다.

+0

나는 이것을 직접 시도했지만,이 오류로 인해 잔소리가 전혀 들지 않습니다. [Failed : /etc/stunnel/stunnel.conf] pid = in 구성 파일을 지정했는지 확인해야합니다 –

0

방금이 문제와 마주 쳤습니다. 나는이 문제를 해결하기 위해 다른 사람이 나를 괴롭 히고 있기 때문에이 답변에 덧붙이고 싶었습니다. 내 PHP에서 나는 laravel 장인의 명령으로 호출했다 래칫을 사용하여 websocket 썼습니다. 로컬에서 개발하는 경우 stunnel.pem과 CAFile을 키 체인에 추가 할 수 있다고 생각합니다 (Mac의 경우 ... 로컬에서 작업하는 경우 반드시 CAFile이 필요하다고 생각하지 않습니다). wss를 통해 stunnel로 websocket에 액세스 할 수 있어야합니다. 그러나 라이브 웹 서버에서 작업하는 경우 키를 인증 받아야합니다. 내 경우에는 stunnel.pem에 대한 stunnel 키를 openSSL을 사용하여 생성하고 양수 SSL을 사용하여 인증을 받았습니다. 그런 다음 CAFile 옵션을 추가하고 그들이 나에게 보낸 crt 파일을 연결했습니다. "stunnel vision"을 얻으려면 stunnel.conf에서 foreground = yes 옵션을 사용하고 DrakeBlack이 client = yes를 사용하지 말 것을 명심하십시오. 이 경우에는 클라이언트가 아닙니다. 서버입니다.