Certificat multidomaines

Je cherchais à mettre en place une connexion sécurisée sur un serveur Apache, grâce à un certificat perso. Ce serveur était accessible via deux noms de domaines différents. Voici donc ce qu’il faut faire, ici sous ScientificLinux 6).

Premièrement, on modifie le fichier de configuration d’openssl (/etc/pki/tls/openssl.conf) pour lui indiquer qu’il doit utiliser des noms alternatifs:
[ v3_req ]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names

[ alt_names ]
DNS.1 = serveur.test.lan
DNS.2 = serveur

On peut ensuite créer une clé privée:
~# openssl genrsa -out /etc/pki/tls/private/serveur.key 2048

Et une clé publique:
~# openssl req -new -x509 -key /etc/pki/tls/serveur.key -out /etc/pki/tls/certs/serveur.pem -days 365 -extensions v3_req

On peut vérifier grâce à la commande:
~# openssl x509 -text -noout -in lapp-ldg.pem
...
X509v3 extensions:
    X509v3 Basic Constraints:
        CA:FALSE
    X509v3 Key Usage:
        Digital Signature, Non Repudiation, Key Encipherment
    X509v3 Subject Alternative Name:
        DNS:serveur.test.lan, DNS:serveur
...

Voila. Les clés peuvent être utilisées dans Apache, de la manière la plus conventionnelle qu’il soit. Il faut bien sûr sécuriser un peu tout ça pour limiter l’accès à la clé privée.