Certificat SSL fourni par une CA
De wikiGite
Sommaire
Apache
On ne peux avoir qu'un seul virtualhost par adresse IP en SSL avec Apache, car le cryptage du flux HTTP (=HTTPS) supprime la possibilité pour Apache de décoder l'URL, et par voie de conséquence d'en extraire le nom du virtualhost demandé. Il ne se fie donc qu'à l'IP, et renvoie sur le premier site qui correspond au tuple IP:443.
Cependant,
Le seul moyen pour avoir plusieurs virtualhosts en SSL sur un même serveur est donc de déclarer plusieurs alias IP sur ce serveur et d'attribuer une IP par virtualhost.
Création de certificat
Procédure réalisée avec Gandi. A tester avec d'autres registrars.
Certificat mono-domaine
- CSR
La doc de Gandi indique qu'on peut générer le certificat manuellement par
openssl req -nodes -newkey rsa:2048 -keyout monserveur.key -out serveur.csr
Dans BlueOnyx, générer une demande de certificat (Certificat Signing Request, "CSR"). Onglet "Site Management", en modification du virtualhost, menu SSL.
BlueOnyx propose automatiquement le téléchargement de la requête en TXT.
De plus, si "Enable SSL" n'a pas été coché à la création du virtualhost, on peut le cocher dans le récapitulatif qui s'affiche dans la page.
- CRT
Lorsqu'on demande l'activation du certificat, le registrar demande alors une copie du CSR. Il génère un certificat à partir de ces informations, avec sa signature, et renvoie un fichier xxxx.crt.
- CA-CERT / PEM
Il faut aussi charger sur le site de l'autorité son certificat CA. Pour Gandi c'est un fichier GandiStandardSSLCA.pem disponible sur le site.
Certificat Wildcard (multi-domaine)
La génération est la même mais :
Sur BlueOnyx : uniquement avec des sous-domaines (sinon la configuration dynamique de BlueOnyx renvoie par ReWrite sur le site SSL par défaut). En sous-domaine avec un certificat wildard, chaque sous-domaine est bien indépendant et utilise le certificat posé dans le répertoire "certs" du virtualhost principal.
A tester avec une installation Apache "from scratch" sur Debian ou CentOS, et configuration manuelle des virtualhosts.
Note : Malgrès des warnings au démarrage d'Apache indiquant qu'il y a conflit entre plusieurs sous-domaines déclarés sur le port 443, le serveur réussit à diriger les requêtes vers le bon sous-domaine.
Installation du certificat
Chemin des certificats dans la BlueOnyx :
/home/sites/<nom_du_virtualhost>/certs
- Méthode manuelle :
- Copier le fichier xxx.crt dans le répertoire du virtualhost, dans "certs", sous le nom "certificate".
- Copier le fichier monserveur.key généré plus haut dans "certs" sous le nom "key".
- Copier le fichier CA (ex. GandiStandardSSLCA.pem) dans "certs" sous le nom "ca-certs"
- Par l'interface graphique :
- Si le demande a été générée via le menu SSL du virtualhost, le fichier "key" de clé privé est déjà en place.
- Importer le certificat renvoyé par l'autorité par le bouton "import", menu SSL du virtualhost.
- Importer le fichier CA (ex. GandiStandardSSLCA.pem) par le bouton "Manage Certificate Authority" / "Add" dans l'interface, menu SSL du virtualhost.
Renouvellement certificat Gandi
Dans l'interface Gandi, dans l'onglet SSL, cliquer sur l'icône de renouvellement du certificat.
Regénérer les fichiers key et csr avec la commande openssl indiquée plus haut (dans un répertoire temporaire pour l'instant).
Sur la nouvelle ligne créée sur Gandi, cliquer sur "Activer ce certificat". Dans la page qui s'affiche, donner le contenu du fichier CSR regénéré et valider.
Au bout d'un certain temps, comme fût du canon, Gandi valide la commande et le certificat affiche sa nouvelle date d'expiration. Cliquer sur l'icône en forme de loupe puis sur "récupérer mon certificat". Le certificat CA de Gandi n'est pas nécessaire, c'est le même que celui déjà en place dans le répertoire "certs".
Coller ce que Gandi envoi dans un fichier "certificate" dans le répertoire temporaire. Renommer également "monserveur.key" en "key", et recopier le fichier "ca-certs" de l'ancien répertoire vers ce répertoire temporaire.
Enfin, renommer l'ancien répertoire en .old (au cas où...), et renommer le répertoire temporaire en "certs". Recharger Apache, vérifier dans un navigateur que le site fonctionne et qu'il utilise le nouveau certificat.