2016-02-03 26 views
10

Próbuję uruchomić nagranie Przykład JavaScript rozwoju Kurento WebRTC jak widać w:Kurento - websocket Połączenie nieudane

http://doc-kurento.readthedocs.org/en/stable/tutorials/js/tutorial-recorder.html

mam setup Kurento na maszynie Ubuntu i działa OK. Usługa również się rozpoczęła. Ponadto przetestowałem przykład oparty na Javie i działał bez żadnych problemów.

JS przykład nagranie nie powiodło się z powodu następującego błędu:

Mixed Content: The page at ' https://ABCDEF ' was loaded over HTTPS, but attempted to connect to the insecure WebSocket endpoint 'ws://XYZ:8433/'. This request has been blocked; this endpoint must be available over WSS

Zmieniłem zmienną ws_uri do punktu do bezpiecznej websocket:

ws_uri: 'wss://XYZ:8433', 

Jednak pojawia się następujący błąd teraz:

WebSocket connection to 'wss://XYZ:8433/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED 

Serwer kurento jest zabezpieczony do uruchamiania przez HTTPS przy użyciu letsencrypt. Kiedyś następujące instrukcje, aby zabezpieczyć serwer:

https://doc-kurento.readthedocs.org/en/latest/mastering/securing-kurento-applications.html

jednak na powyższym przykładzie, że prosi, aby złączyć następujące pliki crt:

cat signing-ca.crt subordinate-ca.crt server.crt > server.pem 

Jestem mylić tutaj jednak, ponieważ mogłem nie znajdzie powyższych plików. Letsencrypt generuje następujące pliki .pem dla mnie:

cert.pem, chain.pem, fullchain.pem, privkey.pem

Jeżeli jedna z powyższych plikach być używane w pliku kurento.json.conf?

Odpowiedz

6

należy używać jednego z wymienionych plików .pem - Nie masz do łączenia dowolnych plików .crt, ponieważ używasz letsencrypt jako ośrodka certyfikacji. masz już certificate chain plików, jak i dokumentacji wspomina:

If this PEM certificate is a signed certificate (by a Certificate Authority such as Verisign), then you are done.

(Uwaga: nigdy nie korzystali z usług „letsencrypt”, więc mówię ogólnie)

Pliki generowane przez letsencrypt są dla -podstawny (jak podano w tym issue on GitHub), ale wygląda na to, że potrzebny jest plik fullchain.pem.

Konfiguracja Kurento używać fullchain.pem jak jego certificate:

"secure": { 
    "port": 8433, 
    "certificate": "fullchain.pem", 
    "password": "" 
} 

Dla przypomnienia, jeśli było sign your own certificate, byś stosowane cat w celu utworzenia łańcucha certyfikatów w następujący sposób:

root-ca ==> signing-ca ==> subordinate-ca ==> server

3

Twój plik kurento.json.conf jest prawdopodobnie w porządku.

Wpadłem na ten problem jakiś czas temu. Problem polega na tym, że java blokuje tunelowanie sieci Web dla celów bezpieczeństwa. Musisz dodać setAllowedOrigins (*) w ramach metody registerWebSocketHandlers. Uwaga: nie jest to bezpieczne i nie powinno być używane w środowisku produkcyjnym.

@Override 
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) { 
registry.addHandler(handler(), "/helloworld").setAllowedOrigins("*"); 
} 

Oto odpowiedź od zespołu Kurento, dlaczego to jest zakodowane w ten sposób ... https://groups.google.com/d/msg/kurento/Q5ODV7hkuOc/RnsZKBaXDQAJ

+0

Ponieważ używam javascript przykład jak w: http://doc-kurento.readthedocs.org/en/stable/tutorials/js/tutorial-recorder.html Nie sądzę, muszę zmienić wszystko w kodzie Java. Nie ma również kodu Java dołączonego do przykładu. – user496607

+0

Ah, przepraszam. Zakładałem, że używasz przykładów Java. –