SSL을 사용하는 WebSocket


115

HTTPS로 WebSocket을 사용할 수 있습니까?

HTTPS로 전환 할 때 내 WebSocket은 보안 오류를 반환하고 일반 HTTP와 완벽하게 작동합니다.

아래는 스 니펫입니다.

socket = new WebSocket("ws://my_www:1235"); 

내 잘못은 내가 사용하고있는 AIR 소켓 서버가 안전하지 않다는 것을 깨달았습니다. flash.net.SecureSocket을 사용하려면 다시 작성해야합니다.
— Eric

답변:


170

WebSocket 연결은 HTTP 또는 HTTPS 핸드 셰이크로 시작됩니다. HTTP를 통해 페이지에 액세스 할 때 WS 또는 WSS (WebSocket 보안 : WS over TLS)를 사용할 수 있습니다. 그러나 페이지가 HTTPS를 통해로드되면 WSS 만 사용할 수 있습니다. 브라우저는 보안을 "다운 그레이드"할 수 없습니다.


그게 내가 가진 것이지만 내가 사용하는 AIR 소켓 서버가 안전하지 않다는 것을 깨달았습니다. flash.net.SecureSocket을 사용하도록 다시 작성해야합니다 ...
— Eric

Flash에도 심각한 문제가 있습니다. WebSocket 서버를 구축하고 있습니까 (만약 그렇다면 이유), 아니면 앱을 구축하고 있습니까?
— Peter Moskovits 2012 년

1
예를 실행하는 AIR 소켓 서버가 있습니다.
— 에릭

그렇다면 페이지가 HTTP로로드되지 않은 경우 WSS를 선택하는 방법은 무엇입니까?
— anatoly techtonik

29

HTTPS를 통해 WebSocket을 사용할 수 없지만 TLS를 통해 WebSocket을 사용할 수 있습니다 (HTTPS는 TLS를 통한 HTTP). URI에서 "wss : //"를 사용하십시오.

최신 버전의 Firefox는 HTTPS 페이지에서 TLS가 아닌 WebSocket을 사용하도록 허용하지 않지만 그 반대는 문제가되지 않습니다.


그렇다면 해결책은 무엇입니까? http를 통해 실행되는 WS 서버가 있습니다. 이제 SSL을 구입했고 브라우저는 더 이상 WS에 연결할 수 없습니다. 나는 WS를 WSS : //로 바꾸었고 이제 WebSocket과 연결되지 않았습니다
— muaaz

@muaaz WebSocket 서버는 WSS 모드에서 실행되어야하며 웹 소켓 서버에 연결하려는 원본 웹 페이지를 제공하는 웹 서버와 동일한 SSL 인증서 / 키로로드하는 것이 좋습니다.
— kanaka

4
감사합니다. BTW, 난 그냥 프록시 (사용 아파치)의 요청에 의해 그것을 해결했습니다 wss://에 ws://. 그래서 나는 사용 wss://ws.domain.com하고 아파치는 그것에 프록시를 적용하고 WS 서버가 실행되는 요청을 리디렉션합니다. 예 : ws://10.12.23.45:5641/server.php. 그리고 나는 그것이 매우 나쁜 해결책이라는 것을 알고 있습니다. 아파치 구성을 안내해 주시면 도움을 주시면 감사하겠습니다. 예 : .cert등 을 넣을 곳 감사합니다!
— muaaz

@muaaz 죄송합니다, 인터넷 검색을 제외하고 아파치 구성을 알지 못합니다.
— kanaka

21

1 추가주의 사항 (kanaka / peter의 답변 외에) : WSS를 사용하고 서버 인증서가 브라우저에서 허용되지 않는 경우 브라우저 렌더링 대화 상자 가 표시되지 않을 수 있습니다 (웹 페이지에서 발생하는 것과 같은). 이는 WebSocket이 소위 "하위 리소스"로 취급되고 인증서 수락 / 보안 예외 / 하위 리소스에 대해 렌더링되지 않는 대화 상자가 있기 때문입니다.


HTTPS에 사용되는 인증서와 동일한 인증서 인 경우에도?
— vekah

1
"브라우저 렌더링 대화 상자"란 무엇을 의미합니까? 처럼 alert()?
— Ivan Perevezentsev

2
기본적으로 브라우저 내에서 시작되는 대화 상자 (페이지가 아님). "이 인증서가 유효하지 않습니다. 계속 하시겠습니까?"
— oberstet

이를 극복 할 방법이 있습니까? 자체 서명 된 인증서를 사용하는 경우에도 websocket을 사용할 수 있습니까?
— OhadR
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.