I develop stuff and have opinions on things -
About me/Contact

Articles:

Il faut changer la façon de gérer les certificats SSL

Ce billet part d’un constat : la manière actuelle dont sont gérés les certificats est pourrie.

Pourquoi ?

Je ne vais pas ici parler du problème de l’argent nécessaire à l’achat de certificats, puisque cacert ou startssl permettent à n’importe qui de générer des certificats valides sans payer un centime.

Non, le problème, c’est que les certificats sont gérés n’importe comment.

Le cas des certificats signés par des CA

Les CA s’occupent par définition de signer les certificats, pour que les gens qui ont indiqué dans leur navigateur « ce CA est gentil, donc les certificats qu’il signe sont valides » puissent aller sur les sites HTTPS en toute confiance.

Sur le principe, on peut se dire « ok », sauf qu’à l’heure actuelle, c’est une vaste supercherie.

En effet, on a bien pu le voir avec Diginotar, la confiance est une denrée rare, et il n’y plus, aujourd’hui, de raison pour faire particulièrement confiance à l’une ou l’autre autorité de certification. Par exemple, Verisign, qui est quand même un gros poisson dans le monde des CA, peut, sous l’emprise de l’une ou l’autre loi obscure étasunienne, fournir des certificats falsifiés valides au gouvernement, ce qui lui permettrait, moyennant quelques bricolages techniques, d’intercepter n’importe quelle requête prétendument sécurisée.

Le cas des certificats auto-signés

À en croire la plupart des navigateurs web, les certificats auto-signés sont le mal absolu, et il faut faire très attention avant de les accepter.

Exemple dans firefox :

Normally, when you try to connect securely, sites will present trusted identification to prove that you are going to the right place. However, this site's identity can't be verified.

Ou encore dans chromium :

You attempted to reach truc, but the server presented a certificate issued by an entity that is not trusted by your computer's operating system. This may mean that the server has generated its own security credentials, which Chromium cannot rely on for identity information, or an attacker may be trying to intercept your communications. You should not proceed, especially if you have never seen this warning before for this site.

Le mieux avec chromium, c’est que même en acceptant le certificat, le petit cadenas affiché à côté du « https » et le « https » seront barrés en rouge, histoire de dire « ATTENTION, NE FAIS PAS CONFIANCE À CE SITE, JAMAIS ».

image0

En soi, si on considère que le système de confiance absolue envers les CA est fiable, c’est une démarche logique. Le seul problème, c’est que ça discrédite à coup sûr tous les sites qui refusent d’utiliser cette confiance aveugle, auprès des gens qui ne comprennent pas exactement ce que le navigateur leur raconte.

À l’heure actuelle, qu’on ait un certificat auto-signé ou non, si un intermédiaire disposant d’une autorité de certification veut espionner le trafic HTTPS d’un site, elle peut tout à fait, puisque le navigateur n’affichera jamais d’avertissement, étant donné que le certificat sera signé par une autorité de Confiance.

Et c’est bien là le problème, il n’existe aucun navigateur qui permette de gestion fine des certificats. Par exemple, si on passe d’un certificat auto-signé à un certificat signé par un CA, ça ne posera jamais de problème, un changement de certificat six mois ou un an avant sa date d’expiration ne posera pas de difficulté, etc…

Solution

J’avoue ne pas en avoir d’immédiate, vu que c’est toute la gestion de la confiance qui est à changer. Le mieux serait d’avoir le même système que GPG, puisqu’il permettrait de gérer la révocation, la publication, etc des certificats de façon transparente. Si je signe un certificat avec ma clef privée GPG, en théorie, on peut avoir confiance, puisque c’est mon site et ma signature. Alors que je ne vois pas pourquoi Verisign signerait mon certificat.

Cependant, ce système ne pourrait pas marcher niveau « grand public », car contraignant, c’est pour ça que je n’ai pas de solution.

Je pense faire un plugin firefox, un jour, quand j’aurais le courage de me plonger dans l’API des plugins (une interface en xul cool pour déterminer le niveau d’avertissement, mieux gérer les certificats que dans le truc brouillon actuel, etc).

Si vous avez des remarques ou commentaires à propos de cet article, n’hésitez pas à me contacter.