Automatic translation

Archives

février 2012
L Ma Me J V S D
« jan    
 12345
6789101112
13141516171819
20212223242526
272829  

Contributeurs

Pourquoi Firefox ou Java ne reconnaissent pas ce certificat SSL si chèrement payé ?

Je suis récemment retombé sur un problème avec un certificat SSL que je n’avais pas eut le temps d’analyser assez profondemment la première fois mais dont l’explication parait pourtant évidente après coup …

Le Problème

Soit un site web exposé en HTTPS disons sur le nom de domaine mon.domaine.fr avec un certificat tout beau et tout . . . → Lire la suite: Pourquoi Firefox ou Java ne reconnaissent pas ce certificat SSL si chèrement payé ?

Certificats auto-signé et communication SSL en Java

Le développeur Java utilisant l’API java.net se retrouvera tôt ou tard confronté à un cas récurrent : l’accès à un service en SSL. Attention je ne parle pas uniquement de HTTPS mais de tous les protocoles ayant une déclinaison SSL : IMAPS, POP3S, SMTPS, LDAPS, … les cas ne manquent pas.

À partir de ce moment le développeur se trouve en face de 2 situations :

  • Le serveur dispose d’une certificat à jour et émis par une autorité de certification connue par la JVM. Tout se passe normalement en utilisant la SSLSocketFactory fournit en standard.
  • Le certificat du serveur distant ne répond pas à ces caractéristiques. Dans l’immense majorité des cas il s’agit de certificats auto-signés. À ce moment, l’API java.net vous refusera la connexion à ce serveur en lançant une SSLHandshakeException souvent noyée dans une pile d’exécution incompréhensible.

Pourquoi ce comportement? On touche là aux fondations de la signature numérique : la chaîne de confiance. Si un tiers n’est reconnu par aucun élément de la chaîne de confiance, l’identification est impossible. Dans notre cas d’utilisation cela se traduit par l’arrêt pur et simple des communications par l’API java.net.

Pourtant, le certificat auto-signé se justifie complètement dans certains cas d’utilisation, dans un environnement de développement par exemple. Pour faire face à ce problème, 2 méthodes s’offrent au développeur Java :

  • Faire reconnaître à la JVM notre tiers en tant que tiers de confiance.
  • Faire preuve de laxisme.

Mais si l’objectif recherché est le même, chacune des méthodes agit à des niveaux différents et présente à ce titre des caractérisques singulières qu’il faudra prendre en considération.

. . . → Lire la suite: Certificats auto-signé et communication SSL en Java