bonjour à toutes et à tous,
voici un retour sur un problème qui nous a fait galérer quelques heures...
l'erreur visible par l'utilisateur était la suivante : erreur 500 avec handshake failure.
rien de bien convaincant dans les logs... par exemple, voici un extrait de /var/lib/tomcat-proxycas/logs/catalina.out :
http-8443-1, handling exception: javax.net.ssl.SSLHandshakeException: no cipher suites in common
plus intéressant, la commande "openssl s_client" aboutissait sur le port 443 alors qu'elle échouait sur le port 8443,
indiquant que tout se passait bien pour apache et que tout allait mal pour tomcat.
# openssl s_client -connect georchestra.umrthema.univ-fcomte.fr:443 CONNECTED(00000003)
depth=0 C = FR, ST = Franche-Comte, L = Besancon, O = CNRS-UFC, OU = THEMA, CN =
georchestra.umrthema.univ-fcomte.frverify error:num=18:self signed certificate
...
# openssl s_client -connect georchestra.umrthema.univ-fcomte.fr:8443 CONNECTED(00000003)
139862893123240:error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure:s23_clnt.c:749:
...
après analyse, nous avons compris que le fichier keystore avait été mal traité, expliquant les échecs sur le port 443.en effet, la création du keystore contient deux étapes en une seule : la création d'un magasin (le keystore), ET la création d'une première clé au sein de ce magasin.
# keytool -genkey \
-alias georchestra \
-keystore /etc/tomcat6/keystore \
-storepass mdpstore \
-keypass mdpstore \
-keyalg RSA \
-keysize 2048 \
-dname "CN=georchestra.umrthema.univ-fcomte.fr, OU=THEMA, O=CNRS-UFC, L=Besancon, ST=Franche-Comte, C=FR"
pour s'en convaincre, il suffit d'afficher le contenu du magasin :
# keytool -keystore /etc/tomcat6/keystore -storepass mdpstore -list
georchestra, 9 mars 2015, PrivateKeyEntry,
Empreinte du certificat (MD5) : 43:EB:97:3F:DF:59:AD:51:64:A6:DB:13:20:C9:D1:31
ensuite, on peut effectivement rajouter à ce magasin le certificat généré par openssl :
# keytool -import -alias georchestra_ssl_cert -file /var/www/georchestra/ssl/auto/georchestra.umrthema.univ-fcomte.fr.crt -keystore /etc/tomcat6/keystorele magasin contient alors deux clés pour notre serveur georchestra, avec des noms différents (alias) :
# keytool -keystore /etc/tomcat6/keystore -storepass mdpstore -listgeorchestra, 9 mars 2015, PrivateKeyEntry, Empreinte du certificat (MD5) : 43:EB:97:3F:DF:59:AD:51:64:A6:DB:13:20:C9:D1:31
georchestra_ssl_cert, 9 mars 2015, trustedCertEntry,Empreinte du certificat (MD5) : 3C:34:CA:09:9A:D3:40:F0:3A:25:54:99:FE:F1:E4:87
on remarque que l'une est PrivateKeyEntry alors que l'autre est trustedCertEntry.
information importante, à l'origine de ce post : il ne faut surtout pas supprimer la première clé (PrivateKeyEntry) créée en même temps que le magasin, car c'est celle qui est utilisée pour le chiffrement or, c'est ce qui a été fait par erreur... et tomcat a généré des échecs de liaison (handshake failures).
et au final, on remarque même que l'import du certificat openssl n'est pas nécessaire... car ça marche comme ça, avec cette seule clé générée à la création du magasin et sans lien avec le certificat openssl.
si, un lien : elles ont toutes les deux le même CN :
georchestra.umrthema.univ-fcomte.fr.
plus intéressant : le certificat openssl était un certificat autosigné, comme le préconise la doc lors d'une première installation.
nous avons donc remplacé dans apache le certificat autosigné par un serveur Terena, sans l'importer dans le magasin... et ça marche encore !
d'où finalement un gros doute sur l'obligation d'importer ou non un certificat openssl dans ce magasin...
mais une certitude : la première clé, créée en même temps que le magasin, est indispensable.
merci d'avance à tous pour vos retours,
et merci à tous les participants du canal IRC pour leur patience.
amicalement,
Ernest.