GNUTLS apache, penser à fournir le certificat intermédiaire
Il y avait un piège lors d'installation d'un certificat SSL émis par "RapidSSL CA". Je suis tombé dedans, et je ne l'ai vu que le lendemain, car le problème ne s'était pas révélé sur tous les ordinateurs.
Dans la configuration d'apache, avec mod-GNUTLS (et pas lib-ssl), j'avais configuré le vhost de cette manière:
<VirtualHost *:443> ServerName le.serveur.fr DocumentRoot /var/www/le.serveur.fr-https ServerAdmin gnieark@serveur.fr ErrorLog /var/log/apache2/error.log LogLevel warn CustomLog /var/log/apache2/access.log combined ServerSignature On GnuTLSEnable on GnuTLSPriorities NORMAL GnuTLSCertificateFile /etc/apache2/ssl/fr/le.serveur.fr-crt.pem GnuTLSKeyFile /etc/apache2/ssl/le.serveur.fr-key.pem </VirtualHost>
où:
- le.serveur.fr-crt.pem est mon certificat public
- le.serveur.fr-crt.key est la clé privée
Et certains navigateurs (android browser, certains firefox) ont mis l'avertissement du genre, "le certificat provient d'une autorité de confiance non approuvée." Je me suis dit roh, lors de la commande du certificat, ils avaient écrit que c'était reconnu par 99% des navigateurs. mah non, c'est moi qui avait louppé une étape:
Le certificat de mon serveur est émis par une autorité intermédiaire. Celle ci n'est pas dans les autorités approuvées des navigateurs, seule l'autorité racine l'est.
Il faut donc, en plus du certificat du serveur, présenter au navigateur présent celui de l'autorité intermédiaire, puisqu'il ne le possède pas.
La solution est de concaténer le certificat autorité intermédiaire (rapidSSL.cert.pem) avec notre certificat le.serveur.fr-crt.pem
cat le.serveur.fr-crt.pem rapidSSL.cert.pem > serveur-crt-avec-auth-intermediaire.crt
et dans la configuration du vhost, on change le parametre GnuTLSCertificateFile par le bon fichier:
GnuTLSCertificateFile /etc/apache2/ssl/fr/serveur-crt-avec-auth-intermediaire.crt
/etc/init.d/apache2 restart
Maintenant, c'est bon, le navigateur peut suivre la chaîne de certification: