web-dev-qa-db-fra.com

Comment créer un serveur Websocket sécurisé (TLS / SSL)

J'utilise WS websocket bibliothèque de node.js. Actuellement, j'utilise un serveur WS. Maintenant, je veux sécuriser cette connexion en utilisant des connexions sécurisées, c'est-à-dire en implémentant le protocole wss et également le support de bibliothèque TLS. J'ai cherché un peu et j'ai trouvé ceci simple à sécuriser: wss et ceci wss avec certificat auto-signé .

Les deux ne sont pas très détaillés et l'article sur le deuxième lien décrit wss avec certificat auto-signé. Ce que je veux savoir, c'est s'il suffit de créer le certificat auto-signé et de le déployer dans mon environnement de production ou dois-je acheter un certificat comme nous devons le faire lors de la création de serveurs HTTPS?

36
sahil sethi

Votre question n ° 1

Comment créer un serveur Websocket sécurisé (TLS/SSL)?

J'ai trouvé votre question lors de la recherche en ligne d'un guide sur la façon de faire fonctionner les websockets via une connexion sécurisée. Étant donné que cela est apparu dans les résultats de recherche, il est possible que je ne sois pas le seul à être arrivé sur cette page. Pour faire gagner du temps à tout le monde (y compris moi à l'avenir), c'est parti.

Le problème

J'avais un simple serveur web node.js, alimenté par einaros/ws , écoutant sur le port 80 via une connexion non sécurisée. J'ai dû le changer pour sécuriser la connexion.

La solution

Fondamentalement, le deuxième lien que vous avez fourni couvre à peu près tout ce que je devais savoir. Voici quelques éléments qui m'ont pris du temps à comprendre:

  • J'avais besoin des fichiers .pem Pour cela, mais tout ce que j'ai obtenu du fournisseur de certificats était un simple fichier .crt/.cert, Et j'avais également un .key J'ai obtenu après avoir généré la demande initiale .csr. Donc voici comment convertir ( crédit en slf ):

    openssl rsa -in server.key -text > private.pem
    openssl x509 -inform PEM -in server.crt > public.pem
    
  • Je ne savais pas trop comment utiliser ws avec la connexion sécurisée. Puisque j'essayais d'ajouter SSL à une application existante, je voulais éviter d'avoir à refaire des choses. Il s'avère que tout ce que j'avais à faire était de remplacer le paramètre {port:80} Par une référence à l'instance https (voir les liens pour plus d'informations sur la façon de l'initialiser).

    var ws = require('ws').Server;
    var wss = new ws({
        server: httpsServer
    });
    

Les références

Votre question n ° 2

Ce que je veux savoir, c'est s'il suffit de créer le certificat auto-signé et de le déployer sur ma production environnement, ou dois-je acheter un certificat comme nous devons le faire lors de la création de serveurs HTTPS?

Je souligne. Oui, je vous conseillerais d'acheter un certificat auprès d'une autorité de confiance. Cela garantira que vos utilisateurs ne recevront aucun avertissement de sécurité du navigateur ou ne partiront pas sans même savoir ce qui s'est mal passé.

53
aexl