GNUTLS apache, penser à fournir le certificat intermédiaire

SSL-SSL_Logo__red.jpgIl 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

  1. 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
  1. /etc/init.d/apache2 restart

Maintenant, c'est bon, le navigateur peut suivre la chaîne de certification:

chaine-ssl-ff.jpeg

Page top