Certificat SSL fourni par une CA

De wikiGite

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.