2017-08-09 2 views
0

Voici le scénario:Comment faire en sorte qu'un navigateur fasse confiance à un certificat auto-signé avec une invite conviviale?

  1. Site Web A est servi à partir d'un domaine public example.com via HTTPS.
  2. Site Web A doit accéder à un service B via WebSocket. Ainsi, le websocket doit également être sécurisé, c'est-à-dire wss://.
  3. Le service B n'est actuellement pas sécurisé. J'essaie de le sécuriser et j'ai besoin de générer un certificat pour cela.
  4. Le service B est uniquement disponible depuis l'intranet. L'URL WSS commence par wss://192.168.x.x (connexion par IP et derrière un NAT). Oui, cela signifie également que A peut être utilisé uniquement à partir de l'intranet, bien que des fonctionnalités limitées soient disponibles sur Internet. Le cas typique est cependant l'utilisation intranet.
  5. Les ordinateurs qui se connectent au site Web A ne se trouvent pas dans un domaine Windows et ne font actuellement confiance à aucune autorité de certification pouvant être contrôlée par nous. En d'autres termes, nous ne pouvons pas créer un certificat que tous ces ordinateurs approuveront par défaut. Pour cela, nous aurions besoin de travailler avec l'une des grandes autorités communes que tout le monde fait confiance, mais je doute qu'ils délivreraient un certificat pour une adresse IP NAT.

Le problème:

Puisque je ne peux pas créer un certificat que tous les ordinateurs de confiance par défaut, je pourrais aussi bien créer un certificat auto-signé et l'utiliser pour sécuriser le websocket. Cependant ... je ne suis pas vraiment sûr de ce qui va arriver. Je pense que l'utilisateur sera invité chaque fois qu'ils se connectent, ou la connexion échouera silencieusement quand même.

Je peux installer manuellement le certificat sur chaque machine, mais cela nécessite de les visiter séparément, et si une nouvelle personne veut accéder au site Web, je dois me rappeler de le faire sur leur machine aussi. Pas gentil.

Y at-il une bonne solution à cela? Pouvez-vous demander à un site Web de faire confiance de façon permanente au certificat ou à quelque chose?

Répondre

0

La plupart des navigateurs ont une fonction intégrée pour faire confiance en permanence à des certificats inconnus, et, pour être franc, je ne ferais confiance à aucun site Web qui tenterait de contourner ces mécanismes, même s'il s'agissait de sites intranet. Si quelque chose comme cela est apparu lors de la visite d'un site intranet, je serais plus enclin à appeler le support informatique et demander si le site a été falsifié.

Je voudrais distribuer des instructions sur la façon d'ajouter le certificat (peut-être en notant que faire cela aveuglément sur d'autres sites que le vôtre peut être problématique) et traiter les cas qui ne peuvent pas suivre ces instructions.

Une alternative (bien que je n'ai aucune expérience personnelle avec cela) pourrait obtenir un certificat sans https://letsencrypt.org/ qui, autant que je sache, sera accepté dans la plupart des navigateurs.

Firefox:

https://support.cdn.mozilla.net/media/uploads/images/2015-10-19-09-47-54-63d2a6.png

Chrome:

https://www.accuweaver.com/2014/09/19/make-chrome-accept-a-self-signed-certificate-on-osx/

+0

Le problème est que le site Web lui-même est déjà en cours d'exécution avec un certificat de confiance, mais ce websocket utilisera un certificat non approuvé. Le navigateur émettra-t-il des invites? Je vais essayer de le tester dans les prochains jours, mais je soupçonne qu'il va tout simplement échouer silencieusement (bien, "silencieusement" avec une exception Javascript, mais pour l'utilisateur qui reste silencieux). –

0

En ce moment je suis en cours d'exécution vers le même problème que la solution que je peux penser et ce que je suis en train est que je demande à l'utilisateur de cliquer sur un bouton (qui crée une fenêtre pop-up) avec le serveur web avec le certificat qui doit être accepté. Puis ils acceptent le certificat et je leur demande de recharger (ou de redémarrer le code en cliquant sur le même bouton) alors il devrait pouvoir fonctionner. Mais vous aurez besoin d'une page sur le w