Site WWW de Laurent Bloch
Slogan du site

ISSN 2271-3905
Cliquez ici si vous voulez visiter mon autre site, orienté vers des sujets moins techniques.

Pour recevoir (au plus une fois par semaine) les nouveautés de ce site, indiquez ici votre adresse électronique :

Pour sécuriser un serveur Web et garantir que c’est bien lui :
Les certificats serveur
Article mis en ligne le 18 novembre 2009

par Laurent Bloch

Sommaire-

Si votre serveur Web ne se contente pas de publier des informations, mais que l’internaute est invité à lui en donner, par exemple son adresse, il est souhaitable de donner au visiteur une garantie que ce site est bien celui auquel il croit accéder, et pas celui d’un usurpateur. Cette garantie peut être procurée par l’installation sur le serveur d’un certificat électronique, et le recours, en lieu et place du protocole http, au protocole chiffré et donc plus sûr https.

Installer un certificat serveur reconnu des navigateurs

Si vous configurez un serveur Web avec un certificat auto-signé, c’est-à-dire signé par une autorité de certification (AC) locale, par exemple la vôtre, l’internaute qui accèdera à votre site recevra un message effrayant du genre :

Le certificat pour ce site web émane d’une autorité de certification inconnue. Vous vous connectez peut-être à un site web qui prétend être www.laurentbloch.org, ce qui peut éventuellement compromettre vos données confidentielles. Souhaitez-vous quand-même vous connecter à ce site ?

L’explication de ce message est la suivante : les navigateurs sont configurés avec les certificats d’un certain nombre d’AC bien connues, mais pas avec celui de la vôtre. Pour un site ouvert au public, il est souhaitable d’avoir un certificat serveur délivré par une AC enregistrée dans tous les navigateurs libres ou du commerce. Malheureusement, les seules AC connues des navigateurs sont celles d’entreprises commerciales dont les tarifs sont hors de portée d’un particulier ou d’un projet libre.

Il existe bien une AC à but non lucratif, CAcert, mais elle n’est pas enregistrée d’origine dans les navigateurs. Il est bien sûr loisible à l’utilisateur d’importer son certificat, mais cela demande une manœuvre, et de savoir de quoi il retourne.

Certifier un site Web par plusieurs autorités

Il peut être souhaitable de certifier un site avec plusieurs certificats. Si le serveur est Apache (logiciel le plus répandu),
c’est possible mais il y a un petit piège.

En regardant les fichiers de configuration du serveur Apache on ne voit pas de solution pour placer les certificats de deux AC. Plutôt que de partager le site en deux, un public et un privé, il y a plus simple ; le livre Apache de Ben et Peter Laurie chez O’Reilly (page 244 de mon édition, la 3ème) donne la solution : au lieu d’utiliser la directive SSLCACertificateFile employée habituellement pour indiquer l’emplacement du certificat de l’AC, il suffit d’utiliser SSLCACertificatePath, qui comme son nom l’indique désigne un répertoire où l’on met tous les certificats que l’on veut, le serveur reconnaîtra le bon.

Il y a quand même, sinon ce serait trop bête, une dernière chausse-trappe, à vrai dire indiquée par le livre cité : si l’on se contente de mettre les certificats dans le répertoire, cela ne marche pas. Il faut aussi créer des liens symboliques avec des noms bizarres qui pointent sur eux. Il suffit pour cela d’appliquer au répertoire concerné le script c_rehash, distribué en général avec OpenSSL, mais parfois (ultime trébuchement) avec openssl-perl. man c_rehash dit bien ce qu’il faut faire.