2017-08-08 9 views
0

https://www.hi-todd.com/websocket/Websocket ne fonctionne pas avec SSL

J'ai créé une démo avec le protocole MQTT et il fonctionne très bien avec une connexion HTTP. Mais quand j'ai essayé de changer HTTP en https alors il obtient une erreur de connexion.

J'ai ajouté le chemin du certificat dans le fichier mosquitto.conf. Permettez-moi de partager avec vous le chemin de configuration de Mosquitto.

# WebSockets over TLS/SSL 
listener 8083 
protocol websockets 
cafile /etc/mosquitto/ca_certificates/ca.crt 
certfile /etc/mosquitto/ca_certificates/hi-todd_com.crt 
keyfile /etc/mosquitto/ca_certificates/hi-todd_com.p7b 

J'ai utilisé ci-dessous le code de la bibliothèque.

https://www.cloudmqtt.com/docs-websocket.html 
+0

Veuillez lire [Dans quelles circonstances puis-je ajouter "urgent" ou d'autres expressions similaires à ma question, afin d'obtenir des réponses plus rapides?] (// meta.stackoverflow.com/q/326569) - le résumé est que cette Ce n'est pas un moyen idéal de s'adresser aux bénévoles, et il est probablement contreproductif d'obtenir des réponses. Merci de ne pas ajouter ceci à vos questions. – halfer

+0

Avez-vous généré vos propres certificats ou utilisez-vous une autorité de certification publique pour le courtier? Aussi avez-vous ouvert le port 8083 dans ce que le pare-feu est sur le service d'hébergement car je ne peux pas me connecter au port pour l'adresse IP dans 'config.js' – hardillb

+0

@hardillb J'utilise Public CA. Oui, mon port est ouvert. J'ai testé avec http avec le même port et cela fonctionnait bien. Actuellement, j'ai changé de port et de modifier la bibliothèque pour mosquitto websocket emqtt. https://github.com/emqtt/emqttd/wiki/WebSocket Mais obtenir le même problème dans cette bibliothèque aussi. Travailler en http avec ws seulement. –

Répondre

1

Maintenant, nous avons résolu tous les autres problèmes.

Le certificat que vous utilisez a une CN de hi-todd.com et a CNs autre de

DNS:hi-todd.com, DNS:www.hi-todd.com 

Cela signifie qu'il est uniquement valable pour les hôtes. Dans votre config.js, vous référencez l'hôte par son adresse IP, de sorte qu'il ne correspondra pas au certificat. Cela entraînera le navigateur à rejeter la connexion comme non sécurisé.

Pour résoudre ce problème, utilisez le nom d'hôte et non l'adresse IP pour votre config.js.

+0

Merci beaucoup pour cette aide. –