HTTPS : sécuriser le Web

protocole https

 

L’affaire Snowden

Edward Joseph Snowden, né le 21 juin 1983, est un informaticien américain, ancien employé de la Central Intelligence Agency (CIA) et de la National Security Agency (NSA), qui a révélé les détails de plusieurs programmes de surveillance de masse américains et britanniques.

À partir du 6 juin 2013, Snowden rend publiques par l’intermédiaire des médias, notamment The Guardian et The Washington Post, des informations classées top-secrètes de la NSA concernant la captation des métadonnées des appels téléphoniques aux États-Unis, ainsi que les systèmes d’écoute sur internet des programmes de surveillance PRISM, XKeyscore, Boundless Informant et Bullrun du gouvernement américain et les programmes de surveillance Tempora, Muscular et Optic Nerve du gouvernement britannique. Pour justifier ses révélations, il a indiqué que son « seul objectif est de dire au public ce qui est fait en son nom et ce qui est fait contre lui ».

Edward Snowden sur Wikipedia

HTTPS ET NSA

En septembre 2013, plusieurs journaux révèlent, grâce aux documents fournis par Edward Snowden, que la NSA, via son programme Bullrun, cherche à casser ou affaiblir le protocole HTTPS ou ses mises en œuvre par les constructeurs de matériel et de logiciel, rendant accessible en clair aux services américains de nombreuses communications pourtant chiffrées.

HTTPS – HyperText Transfer Protocol Secure

L’HyperText Transfer Protocol Secure, plus connu sous l’abréviation HTTPS — littéralement « protocole de transfert hypertexte sécurisé » — est la combinaison du HTTP avec une couche de chiffrement comme SSL ou TLS.

HTTPS permet au visiteur de vérifier l’identité du site web auquel il accède, grâce à un certificat d’authentification émis par une autorité tierce, réputée fiable (et faisant généralement partie de la liste blanche des navigateurs internet). Il garantit théoriquement la confidentialité et l’intégrité des données envoyées par l’utilisateur (notamment des informations entrées dans les formulaires) et reçues du serveur. Il peut permettre de valider l’identité du visiteur, si celui-ci utilise également un certificat d’authentification client.

HTTPS est généralement utilisé pour les transactions financières en ligne : commerce électronique, banque en ligne, courtage en ligne, etc. Il est aussi utilisé pour la consultation de données privées, comme les courriers électroniques, par exemple.

Depuis le début des années 2010, le HTTPS s’est également généralisé sur les réseaux sociaux.

Note

Il est maintenant recommandé d’utiliser HTTPS sur tous les sites Web.

Par défaut, le protocole HTTPS fonctionne sur le port TCP 443

Source : Wikipedia

TLS et SSL

Transport Layer Security (TLS), et son prédécesseur Secure Sockets Layer (SSL), sont des protocoles de sécurisation des échanges sur Internet. Le protocole SSL a été développé à l’origine par Netscape. L’IETF, en a poursuivi le développement en le rebaptisant Transport Layer Security (TLS). On parle parfois de SSL/TLS pour désigner indifféremment SSL ou TLS.

TLS (ou SSL) fonctionne suivant un mode client-serveur. Il permet de satisfaire aux objectifs de sécurité suivants :

  • l’authentification du serveur ;
  • la confidentialité des données échangées (ou session chiffrée) ;
  • l’intégrité des données échangées ;
  • de manière optionnelle, l’authentification du client (mais dans la réalité celle-ci est souvent assurée par le serveur).

Implémentations TLS

Plusieurs implémentations de l’algorithme TLS sont disponibles dans plusieurs langages avec différentes licences. On pense à OpenSSL, LibreSSL, Mozilla NSS et GnuTLS :

 

Un aperçu de OpenSSL

OpenSSL sur GitHub :

Le bogue Heartbleed affecte OpenSSL

http://heartbleed.com/

 

Attaque de l’homme du milieu

Un chercheur en sécurité informatique, connu sous le pseudonyme de Moxie Marlinspike, a développé une attaque du type Attaque de l’homme du milieu (« Man in the middle » en anglais), afin de contourner le chiffrement de HTTPS.

Le pirate se positionne entre le client et le serveur et change les liens https: en http:, ainsi le client envoie ses informations en clair via le protocole HTTP et non HTTPS. Ce type d’attaque a été présenté par Marlinspike à la Blackhat Conference 2009.

 

Certificats gratuits

L’industrie entière reconnaît l’important de sécuriser les communications entre clients et serveurs. Des options gratuites sont maintenant disponibles, le propriétaire d’un site web n’a donc plus de raison valable d’échanger des données en clair (sans encryptage).

StartSSL par StartCOM inc.

StarSSL offre des certificats gratuits pour tous les développeurs web. Le contrat est simple, vous fournissez vos informations de contact, un courriel de vérification est envoyé à l’administrateur du domaine et un certificat est délivré. Ce certificat est complètement gratuit et est valide pour 1 an. Suite à l’expiration du certificat, il est possible de renouveler gratuitement.

StartSSL™ Certificates; Public Key Infrastructure

Let’s Encrypt

Let’s Encrypt est une initiative qui vise aussi à sécuriser le Web en fournissant des certificats gratuits utilisés afin d’offrir le HTTPS.

Voici quelques principes clés de Let’s Encrypt :

Gratuit : Tous les propriétaires de domaine peuvent utiliser Let’s Encrypt afin d’obtenir un certificat fiable à 0$.

Automatique: Votre serveur web peut interagir avec Let’s Encrypt afin d’obtenir un certificat de façon sécuritaire et le configurer facilement. Un script peut procéder au renouvellement automatique du certificat.

Sécuritaire : Let’s Encrypt offre un service, en tant que plate-forme, qui respecte les meilleures pratiques TLS et aide les opérateurs à sécuriser leur site.

Transparent : Tous les certificat fournis ou retirés (revoked) sont enregistrés et disponibles pour inspection par tous.

Démo Let’s Encrypt sur Youtube

 

Extension HTTPS Everywhere

HTTPS Everywhere est une extension pour navigateur web qui permet d’étendre l’usage du SSL/TLS sur certains sites. Elle active le SSL sur les pages où ce protocole est normalement désactivé. Ceci ne peut évidemment fonctionner que si le site en question supporte déjà le SSL. L’extension est maintenue conjointement par le projet Tor et l’EFF depuis 2010.

 

Classes de validation

Afin d’augmenter la confiance d’un internaute, un propriétaire de site web peut acheter et installer un certificat ayant un plus haut niveau de validation, on parle de classe de validation. Les sections suivantes présentent 3 classes de validation : DV, OV et EV.

Validation de domaine (DV)

Une autorité de certification délivre un certificat digital X.509 de classe DV (Domaine Validation) à un acheteur si cet acheteur peut répondre à un critère :

  • Démontrer qu’il est en mesure d’administrer le domaine pour lequel le certificat est demandé.

https://en.wikipedia.org/wiki/Domain-validated_certificate

Validation de l’organisation (OV)

Une autorité de certification délivre un certificat digital X.509 de classe OV (Organization Validation) à l’acheteur s’il peut répondre à deux critères :

  • Démontrer qu’il est en mesure d’administrer le domaine pour lequel le certificat est demandé.
  • Démontrer que l’organisation a une existence légale.

Validation étendue (EV)

Afin d’obtenir un certificat EV (Extended validation), l’acheteur doit persuader le fournisseur qu’il peut répondre à ce critère :

  • Démontrer que l’organisation a une existence légale.

Cette validation n’est pas automatisée, elle demande les services d’une personne, d’un vérificateur.

Lorsqu’un navigateur charge une URL d’un domaine ayant un certificat de type EV, le nom de l’entreprise sera affiché dans la barre URL en vert.

 

 

Entrust offre plusieurs autres forfaits et types de certificats.

 

https://www.entrust.com/ssl-certificate-comparison/

 

Migrer vers HTTPS

Voici quelques conseils afin de migrer votre application vers HTTPS.

Pour un environnement de développement local

  1. Éviter les liens absolus.
  2. Mettre en place le protocole HTTPS sur votre poste local.
  3. Assurez-vous que toutes les ressources de votre page (images, js, css, CDN et ressources externes) sont disponibles en HTTPS.
  4. Tester sur tous les navigateurs, puisqu’il réagissent différemment et possèdent des règles différentes en ce qui concerne le HTTPS.
  5. Vérifier la console du développeur, vous pourriez y retrouver des erreurs et des avertissements.
  6. Mettre en place une suite de tests fonctionnels automatisés.

Pour un environnement de production

  1. Magasiner un certificat avec le niveau de validation qui vous convient.
  2. Mettre en place le certificat sur votre serveur web en production.
  3. Tester le nouveau site HTTPS.
  4. Finalement, définir une règle afin de rediriger tous les utilisateurs du site vers le HTTPS automatiquement. Cette règle est configurée dans le code de votre app web ou comme une directive pour votre serveur web (Apache, NginX, IIS, …).

Likes Facebook

Note

Lors de cette opération, vos LIKE et SHARE Facebook pourraient être perdus. Puisqu’un like a été appliqué à une adresse unique http://monsite.ca/mapagecool.php et non à un ensemble d’adresses.

La solution est d’utiliser la balise og:url, afn de spécifier l’URL à utiliser pour le compte des Likes.

https://developers.facebook.com/docs/plugins/faqs#moving-urls

Il est aussi possible d’utiliser le code HTTP 301, 302 (redirect) afin d’indiquer que l’URL a été déplacé.

Si vous désirez une application fonctionnelle sur HTTP et HTTPS, il est fortement recommandé d’utiliser les liens absolus débutant par // monServeur.com/monImage.jpg

Conclusion

Soyez un bon développeur consciencieux, pensez à vos utilisateurs et à la protection de leur vie privée. De plus, en mettant en place un accès HTTPS, Google vous récompensera en augmentant votre positionnement dans le Page Rank.

Références

 

 

Comments

comments

0 réponses

Répondre

Want to join the discussion?
Feel free to contribute!

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *