2014-05-21 13 views
3

Firefox에 갇혀 있습니다. Websocket을 작동시킬 수 없었습니다. 나는 토네이도 웹 소켓을 사용하고 내가 아래 코드를 초기화 :Firefox에서 Websocket 보안 연결을 설정할 수 없습니다.

app = Application([(r'/mypath/ws', WSHandler)]) 
http_server = HTTPServer(app, ssl_options={ 
       "certfile": "~/certs/websocket.crt", 
       "keyfile": "~/certs/websocket.key" 
      }) 
http_server.listen("443") 

그리고이 같은 자바 스크립트 측에 초기화 :

var WS = new WebSocket("wss://websocket.localhost/mypath/ws"); 

이 코드는 크롬에서 잘 작동, 그 사이에 나는 나 자신에 의해 인증서를 생성 HTTPS에서 페이지를 실행하십시오. 나 :(어떤 도움을 이해할 수있을 것이다

근무 조금은 저질렀 내가 구글하지 않고 너무 많은 생각을 찾았지만 아무도

Firefox can't establish a connection to the server at wss://websocket.localhost/mypath/ws. 

+0

직접 인증서를 만들었습니다 ... 브라우저의 신뢰할 수있는 인증서 목록에 추가 했습니까? – konghou

+0

클라이언트가 수동으로 브라우저에 인증서를 추가하면 안됩니다. 영구 솔루션을 찾아야합니다. –

+1

FatihKaratana konghou가 말한 것을 시도해보십시오. 작동하는 경우 신뢰할 수있는 발급 기관에서 인증서를 구입해야 할 수도 있습니다. –

답변

1

나는 ProxyP를 통해 내 문제를 해결했다. 나귀. 나는 토네이도와 안전하지 않은 웹 소켓 서버를 생성 및 3232 등의 특정 포트에서 실행 : mod_proxy_wstunnel

app = Application([(r'/ws/', WSHandler)]) 
ws_server = HTTPServer(app) 
ws_server.listen("3232") 

가 그럼 난 내 아파치의 conf에 PROXYPASS을 작성했습니다 및 사용

ProxyPass /ws/ ws://127.0.0.1:3232/ws/ 
ProxyPassReverse /ws/ ws://127.0.0.1:3232/ws/ 

var WS = new WebSocket("wss://websocket.localhost:81/ws/") 

이 경우 내가 HTTPS와의 보안 연결에 연결을 만들 수 있습니다 내 포트는 81이고 내 PROXYPASS는 Websoc 리디렉션 : 그리고이 같은 프론트 엔드에 웹 소켓 클라이언트를 만들 ket 요청을 로컬에서 수신 대기 포트 3232. 그것은 정확한 해결 방법과 거의 같은 정확한 해결책이 아닙니다. 그러나 그것은 나를 위해 잘 작동합니다.

2

그것은 자기의 경우 :하지만 파이어 폭스는 말하는 유지합니다. 브라우저는 인증서가 웹 소켓에서만 사용되는 경우 인증서를 수락 할 수있는 대화 상자를 표시하지 않습니다. 먼저 동일한 서버에서 일반 페이지를 방문하여 인증서 경고를보고 승인 한 다음 안전한 websocket을 만들 수 있습니다.

+0

연결하기 전에 호스트 (로컬 호스트)로 이동해도 여전히 작동하지 않습니다. https://bugzilla.mozilla.org/show_bug.cgi?id=1187666 –

0

Firefox의 고급 환경 설정에서 인증서 예외를 추가하여이 문제를 해결했습니다.

+0

그런 식으로 문제를 해결할 수도 있지만 강제로 내 사용자에게 그렇게 할 수는 없습니다. (이것이 바로 핵심 요소입니다. 그게 바로 제가 해결 방법을 찾은 이유입니다. –

0

을 firefox에서 열고 인증서를 먼저 수락하십시오.

관련 문제