Faut-il généraliser le HTTPS ?
J’ai vu ces derniers jours un blog passer à TLS par défaut, et je me demandais justement s’il n’était pas possible maintenant de le faire sur tous les sites nécessitant un minimum de confidentialité, notamment la plupart des sites e-commerce.
Pourquoi voudrait-on le faire ?
Déjà, sur tous les sites permettant de s’authentifier, la procédure devrait être systématiquement sécurisée avec TLS1, mais ce n’est malheureusement pas toujours le cas. Quand on parle de saisie de données personnelles, éventuellement confidentielles, voir sensibles —système de paiement par exemple—, il devrait de toute façon être interdit de passer outre.
Ce que l’on fait couramment
La pratique la plus courante reste de ne sécuriser que le strict nécessaire, ce qui conduit à avoir certaines pages en HTTP et d’autres en HTTPS. Cela peut conduire —si l’on n’est pas suffisamment prudent— à des pages en HTTPS qui tentent de charger des ressources en HTTP. Jusqu’à présent, seul Internet Explorer se plaignait avec une popup incompréhensible pour le commun des mortels, mais bientôt Firefox 23 refusera tout simplement de charger la ressource. Ce qui nous poussait initialement à rester en HTTP tant que possible était si je ne m’abuse l’impact en termes de performance de TLS, tant côté serveur que client. Cet impact est à priori aujourd’hui négligeable, y compris sur la plupart des smartphones qui débordent de puissance de calcul.
Pourquoi ne pas tout mettre en HTTPS dans ce cas, être certains ainsi que tout est sécurisé, et ne plus risquer de faire des mélanges HTTPS/HTTP ?
Pourquoi ne pas le faire ?
En discutant du sujet autour de moi, j’ai eu les alertes suivantes2 :
Les performances
Les performances de ton HTTPS vont beaucoup dépendre des performances de ton fournisseur de certificat SSL et en particulier de ses fichiers de liste de révocation.
Côté performances, il y a https://revocation-report.x509labs.com qui permet déjà de ce faire une idée. Mais ça ne prends en compte que les contrats de SLA publics non négociés, et s’il existe d’autres comparateurs du même type ce sera souvent la même chose.
En tout cas le mois dernier StartSSL (qui est sûrement le fournisseur SSL le moins cher du marché) se targuait d’être en pôle position : https://twitter.com/startssl/status/324975028712116225
Le lien entre certificat(s) et adresse(s) IP du(des) serveur(s)
Côté hébergement on est toujours bloqué à 1 certificat SSL par IP à cause des vieux OS, en particulier Windows XP qui ne supportent pas le SNI (pour Server Name Indication, sorte de vhost SSL pour résumer). La seule vraie solution de contournement qui fonctionne partout c’est le SAN (Subject Alternative Names) qui consiste à embed plusieurs certificats SSL en un seul, mais alors ça implique que tous tes certificats soient chez le même presta SSL.
Les coûts
Il y a également le coût de la requête quand on utilise des CDN. L’écart de prix est en général de 30%, comme chez CloudFront.
Autre impact sur l’usage d’un CDN
Concernant le CDN attention : ton fournisseur ne te laissera peut être pas la possibilité d’utiliser ton propre certificat, […] nous sommes obligés de charger tout le contenu CDN depuis le domaine *.cloudfront.net sous peine d’avoir une erreur de chargement SSL
L’impact sur les choix d’architecture
Varnish ne gère pas le HTTPS. Donc en fonction de tes moyens, si tu ne peux pas te payer un load balancer HTTPS, tu risques de devoir rajouter de la complexité dans ton architecture avec un reverse proxy SSL comme Pound ou Nginx devant Varnish et perdre la capacité de Varnish à gérer très rapidement les ouvertures de connexions.
Commentaire auquel un autre répond :
Les différentes mesures que j’avais effectuées avec Pound sur une archi FreeBSD il y a 2 ans (déjà) montraient que les différences de temps de réponse entre HTTP et HTTPS devant un varnish voire un nginx ou un apache étaient négligeables.
Mais ça ajoute la complexité de maintenir une archi un peu spécifique (en même temps, quand on commence à monter du varnish, c’est qu’on sait qu’on part dans des archis aux petits oignons)
Et vous, qu’est-ce que vous en pensez ?
Finalement, il semble qu’il y ai effectivement des impacts non négligeables, mais pas insurmontables tout de même.
Qu’en dites-vous, des retours d’expérience à partager ?
Notes
1Même un mécanisme super évolué comme celui de SPIP, avec chiffrement côté client et sel à usage unique, n’est plus suffisant si JavaScript vient à manquer, ce qui arrive plus souvent qu’on ne le croit. Il a néanmoins l’avantage de fournir une bonne sécurité dans la plupart des cas, beaucoup des utilisateurs de SPIP ne pouvant mettre en œuvre TLS.
2Je ne nomme pas les personnes, elles se reconnaîtront et participeront à la discussion si elles le souhaitent…
Vos commentaires
1. Le 2 mai 2013 à 17:55, par Eric En réponse à : Faut-il généraliser le HTTPS ?
* Performance : Il y a des options pour corriger le problème de performance. Voir par exemple http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_stapling pour Nginx. En pratique ça ne semble pas si important que ça.
* Lien certificat - IP : Pour moi c’est la vraie question. Pour des pro qui utilisent quelques domaines par machine, le SAN est tout à fait fonctionnel. La limitation d’avoir le même CA ne me semble pas importante (ça n’empêche pas d’acheter un autre certificat par ailleurs sur un autre CA pour le même domaine mais pour une autre machine si on le souhaite). Même le wildcard n’est pas si utilisé que ça.
Reste les petits sites.
Le SNI est la solution mais on se coltine les IE et Chrome sous Windows XP. Chez moi c’est 5%, je suppose que ça peut monter à 10% sur des sites plus génériques.
* Complexité d’archi : Mettre un relai SSL me semble une bonne solution, je n’ai pas l’impression que ça soit vraiment une étape significative.
Même chose pour les CDN. OK, le domaine va changer, et alors ? À vrai dire c’est même plutôt logique : Si c’est le CDN qui gère les serveurs et le service, c’est plutôt à eux d’assurer la chaîne de confiance. Je suis convaincu qu’il doit y avoir des cas où c’est gênant, mais dans l’ensemble je n’en ai pas l’impression.
Ce n’est pas magique, mais je reviens sur ton début : "sur tous les sites nécessitant un minimum de confidentialité". L’enjeu c’est justement de réaliser que l’auteur du site ne peut pas faire d’affirmation sur son propre contenu. La notion de confidentialité est propre à chaque individu et à son contexte.
Il y a des entreprises où les salariés auraient plutôt envie de garder leur visite chez toi semi confidentielle. Un site perso qui parle politique est-il confidentiel ? dans quel mesure ? Et un site qui propose de tout passer en SSL ne risque-t-il pas de poser problème dans certains contextes d’oppression ? Et même un blog anodin, ne souhaite-t-on pas éviter que quelqu’un voit passer les commentaires ?
Pire, si on ne chiffre que les sites sensibles, ça revient à dire à attirer l’attention.
Trop complexes : le résultat c’est qu’il faut tout chiffrer, et que seul windows XP (pour ceux qui ne sont pas sous Firefox) nous retient encore.
2. Le 6 mai 2013 à 10:58, par poulpita En réponse à : Faut-il généraliser le HTTPS ?
Faire du TLS systématiquement, pourquoi pas. Mais faites le bien. L’ OWASP peut se révéler être une bonne référence en la matière https://www.owasp.org/index.php/Transport_Layer_Protection_Cheat_Sheet
3. Le 22 mai 2013 à 10:43, par Nico En réponse à : Faut-il généraliser le HTTPS ?
Je me demandais si le fait de tout mettre en HTTPS ne posait pas des problèmes question référencement et referers ? Des infos sur le sujet ?
4. Le 22 mai 2013 à 17:11, par Nicolas Hoizey En réponse à : Faut-il généraliser le HTTPS ?
À priori aucun soucis à ce niveau, mais si tu as des infos contradictoires, je suis preneur.
5. Le 22 mai 2013 à 17:12, par Nicolas Hoizey En réponse à : Faut-il généraliser le HTTPS ?
@poulpita merci pour ce lien !
6. Le 23 mai 2013 à 13:03, par Christophe En réponse à : Faut-il généraliser le HTTPS ?
Non aucun souci en terme de référencement.
J’aurai même tendance à dire qu’un site qui utilise un certificat SSL devrait rassurer davantage Google sur le sérieux du site... Peut-être un des critères pris en compte pour le trustrank ? Mais bon, à confirmer...
7. Le 17 décembre 2013 à 19:51, par Boris En réponse à : Faut-il généraliser le HTTPS ?
Concernant les performances, le problème que je croise souvent, c’est le mauvais paramétrage des connexions qui ne sont du coup pas en Keep Alive.
Du coup, la bascule en HTTPS entraîne un surcoût lié à la renégociation SSL pour chaque nouvelle connexion TCP. L’effet peut être dramatique.
8. Le 18 décembre 2013 à 10:54, par Nicolas Hoizey En réponse à : Faut-il généraliser le HTTPS ?
@Boris très bonne remarque !