Galère pour installer un certificat

Tags: #<Tag:0x00007f509f5c8950> #<Tag:0x00007f509f5c86f8>

Bonjour tout le monde,

J’ai beau parcourir de nombreux forum, je galère pour installer mes certificats.
Voici où j’en suis.
Je suis sous Buster à jour (Jeedom étant encore officiellement sous cette release).
Je possède certificat, certificat intermédiaire et clé privée que j’ai copiés dans le répertoire /etc/ssl/xxxxxx.family/
xxxxxx.family étant mon domaine.

J’ai modifié le virtualhost ainsi :
000-default-ssl2.conf.txt (1,4 Ko)

Bien sûr sans le suffixe txt.

Ensuite, j’essaie d’activer ce virtualhost et là ça plante.

Voici les messages d’erreur que j’obtiens :
Capture

Aussi, vous serait-il possible de me donner des pistes afin de pouvoir avancer dans cette installation ?

Par avance, merci

Michel

Bonjour,

Toutes les clauses relatives à ton virtual host doivent être entre les balises <VirtualHost *:443> et </VirtualHost>
Et je te conseille de mettre le nom de ton site avec un nom plus explicite du type monsite1.conf
Par ailleurs, dans ta configuration il manque le FQDN de ton site: ie.: la clause:
ServerName monsite1.domain.tld

Le fichier de conf étant mis bien sur dans /etc/apache2/sites-available activé avec a2ensite monsite1 et apache redémarré avec systemctl reload apache2.

j’ajouterais que pour plus de lisibilité de tes logs de change le nom du fichier de logs par access-monsite1.log et error-monsite1.log ou monsite1-access.log et monsite1-error.log

Merci beaucoup pour tes réponses.

Le problème est que je ne comprends pas tout à tes propos. Je te propose de détailler mon ignorance.

Veux-tu dire que la 1ère ligne du fichier doit être <VirtualHost *:443> et la dernière </VirtualHost>, ou seules certaines rubriques sont à encadrer ?

Mon domaine ne se dénomme pas xxxxxx.family mais mon_nom.family. Quand tu dis de changer le nom en monsite1.conf parles-tu du fichier virtualhost et donc de la dénommer mon_nom.family.conf ?

D’accord mais, pour être sûr de bien comprendre, veux-tu dire que je dois marquer
la clause :
ServerName mon_nom.family.domain.tld ?

Le fichier est bien dans le répertoire /etc/apache2/sites-available mais, justement, le a2ensite monsite1 génère le message d’erreur montré dans l’image de mon premier message. Du coup, je n’ai pas essayé de redémarrer apache.

Je ne savais même pas que l’on pouvait générer des logs. Donc je ne sais pas où se trouvent ces fichiers logs pour pouvoir les activer et les renommer.

Comme tu vois, cette partie certificat, ce n’est pas ce que je maitrise le mieux.

Ceci étant, je te renouvelle mes remerciements.

A bientôt

Oui

le nom doit etre parlant car une seule instance apache peut servir plusieurs site web site1.domaine.tld. etc…
Quelle est l’url avec laquelle tu te connecte? www.mon_nom.family?
<utilise le fichier par défaut c est toujours un peu risqué. En fait on le désactive, et tu met des fichiers de conf explicite en rapport avec ton site.

AH :slight_smile:
domain.tld c’est une façon théorique de parler d’un nom de domaine.
Si ton URL c’est www.mon_nom.family:
www: c’est le host
mon_nom: c’est le domaine
.family : c’est le TLD.

Ne connaissance par ton URL exate j’ai mis une URL théorique :slight_smile:

Ici monsite1 c’est le nom de ton fichier de configuration dans sites-available.

En fait c’est toute la configuration du site qui te pose problème :slight_smile:
A minima ton fichier devrait avoir:

<VirtualHost *:443>

    ServerAdmin <une adresse mail pour recevoir certaines notifs>
    ServerName www.mon_nom.family

    DocumentRoot  /var/www/html

    ErrorLog ${APACHE_LOG_DIR}/mon_nom-error.log
    CustomLog ${APACHE_LOG_DIR}/mon_nom-access.log combined

    SSLEngine on
    SSLCertificateFile      /chemin/vers/mon/certificat
    SSLCertificateKeyFile /chemin/vers/ma/clé/privée
    SSLCACertificateFile /chemin/vers/certificat/intermediaire

    <Directory "/var/www/html">
        AllowOverride None
        Options -FollowSymLinks
        allow from all
    </Directory>
</VirtualHost>

pour les parties traitant des Cipher, et des protocoles SSL il faut aller dans /etc/apache2/mods-available/ssl.conf. Ce n’est usuellement pas à mettre dans les fichiers de conf des sites car tu ne peux pas avoir des confs différentes sur ces options en fonction des sites. C’est géré au niveau du module SSL de l’instance.

Pour faire simple, si tes sites hébergés sur un même serveur apache et doit répondre à une ou plusieurs URL :

Tu dois utiliser des Virtual Host dans sites-avalaible avec un fichier de conf par site
Si tu veux avoir :

  • monserveur.domain.tld/site1
  • monserveur.domain.tld/site2
  • monserveur.domain.tld/site2

Tu dois utiliser des configurations dans confs-available avec un fichier de conf par site.

Utiliser un fichier de conf par site c’est beaucoup plus propre.

Si tu veux mettre des options particulières d’un module Apache comme le module SSL, alors tu doit le faire dans le fichier de conf correspondant au module dans mods-available.

Et enfin, pour activer les uns et les autres:
a2ensite pour les site, a2enconf pour les confs, a2enmod pour les modules.
l’inverse c’est a2dissite, a2disconf, et a2dismod.

et tu relances apache avec systemctl reload apache2 pour prendre en compte les modifications de configuration.

et enfin pour terminer, les certificats sont gérés dans l’arb orescence /etc/ssl.
Mais les certificats vont dans /etc/ssl/certs, et les clefs dans /etc/ssl/private.
Ce sont souvent les arborescences par defaut de nombreux logiciels utilisants les certificats. donc il vbaut mieux la respecter. Après tu peux effectivement créer des sous répertoires dedans, mais les partie racine doivent rester celles par defaut.

Donc utilises plutôt:
/etc/ssl/certs/xxxxxx.family/...
et
/etc/ssl/private/xxxxxx.family/...

…Bon courage :slight_smile:

Décidément, ce n’est pas gagné.
Alors, j’ai transféré les certificats et la clé dans les fichiers que tu m’as indiqué (certs et private).
J’ai modifié le vhost selon tes reco (enfin, j’espère), résultat, apache ne démarre plus.
Petite précision qui a peut-être son importance, le domaine vers lequel je souhaite que mon certificat agisse est un sous-domaine donc le host devrait être mon_sous-domaine. Enfin, c’est ce que je crois comprendre.

Voici les vhost et les erreurs relevées après reload.

Je ne sais plus où j’habite. Pourrais-tu y jeter un oeil ?

mon_nom.family.conf.txt (1,5 Ko)

Logs.txt (3,9 Ko)

regarde dans le fichier error dans les logs apaches, mais rtegardes aussi dans les logs du systèm /var/log/syslog.

Les options suivante n’ont rien à faire dans le virtualhost:

 # On active tous les protocoles (TLS v1.0, TLS v1.1 et TLS v1.2), mais on désactive SSL v2 et v3 (obsolètes et rempl$
 SSLProtocol All -SSLv3 -SSLv2
 
 # On active les méthodes de chiffrement, et on désactive les méthodes de chiffrement non sécurisés (par la présente $
 SSLCipherSuite HIGH:!aNULL:!MD5:!ADH:!RC4:!DH
 
 # On demande au navigateur de sélectionner une méthode de chiffrement en respectant l'ordre envoyée par le serveur ($
 SSLHonorCipherOrder on

Elles doivent être dans le fichier /etc/apache2/mods-available/ssl.conf

Ton option ErrorLog ne peux pas etre dans /var/www/html, mais dans :

ErrorLog ${APACHE_LOG_DIR}/mon_nom-error.log

Et il te manque la directive Directory :

    <Directory "/var/www/html">
        AllowOverride None
        Options -FollowSymLinks
        allow from all
    </Directory>

Votre schmilblick doit ressembler à ça +/- (avec toutes les autres infos bien entendu mais pour la partie ssl ca doit ressembler à ca)

/etc/apache2/sites-available/mon_site.com

<VirtualHost *:443>
ServerName mon_site.com
SSLEngine on
SSLCertificateFile /etc/ssl/certs/mon_site.crt
SSLCertificateKeyFile /etc/ssl/keys/mon_site.com.key
</VirtualHost>

apachectl configtest

systemctl restart apache2

C’est encore moi. J’essaie de réfléchir (je sais, cela ne se voit pas :innocent:) avant de revenir.

Donc, j’ai fait en partie ce que tu m’as dit, j’ai besoin de précisions pour tout faire.

Tout d’abord voici les fichiers error et syslog :
error.log (11,1 Ko)

syslog.txt (529,5 Ko)

Ensuite, concernant les options ne devant pas figurer dans le vhost, je ne vois pas comment les insérer dans le ssl.conf sans tout casser. Voici mon ssl.conf :
ssl.conf.txt (3,0 Ko)

Enfin mon vhost sans le déplacement des options :
mon_nom.family.conf.txt (1,7 Ko)

Je ne sais pas si j’avance ou pas mais je fais de mon mieux. Désolé si ce n’est pas brillant :rofl:

Bien évidemment le service ne redémarre toujours pas mais compte tenu du fait que le vhost n’est pas encore d’équerre, cela devrait être normal.

A bientôt

On dirait que tu utilises aussi Fail2ban, désactive le tant que ton site n’est pas fonctionnel de base.
Les Cipher tu les enlèves, ça ne sert à rien de s’en préoccuper tant que le site ne fonctionne pas de base. Hidem les header que tu as mis.
As-tu essayé de faire fonctionner ton site en HTTP avant de passer en HTTPS?

Tu fais tourner un jeedom visiblement.

Quelle documentation as-tu suivi? (donnes les liens le cas échéant.

Je n’utilise pas fail2ban du moins à ma connaissance (peut-être Jeedom de base mais pas que je sache).

J’ai suivi ce tuto pourbtenter d’installer le certificat : https://www.google.com/url?sa=t&source=web&rct=j&opi=89978449&url=https://syskb.com/installer-certificat-ssl-apache-2-debian-ubuntu/&ved=2ahUKEwjh5NrVjLqCAxVfV6QEHSbLAEAQFnoECCcQAQ&usg=AOvVaw0-VwNoq9599CBwmb2dOHvZ

Mon site fonctionnait très bien en HTTP et HTTPS.
Ayant dû renouveler mon certificat devenu obsolète et ne me rappelant pas comment j’avais fait l’année dernière, j’ai cherché des tutos et je suis tombé sur celui-ci qui me semblait bien fait.
Pas sûr d’avoir fait le bon choix.

Petite question.
J’ai conservé le fichier vhost par défaut, de mémoire 000-default.conf
Si je veux revenir en arrière et que je supprime le vhost véreux que j’ai créé, quelles commandes dois-je saisir pour effectuer un roll-back ?
Je suppose que je pourrais laisser certificats et clé dans leurs répertoires sans que cela pose problème ?

vous supprimez le repertoire de votre site, je n’ai pas regardé vos fichiers mais c’est en general ce que je fais.
De plus je fais tjs des back-up des fichiers de conf, par ex j’aurais une apache.conf.back ou apache.conf.old

Petit commentaire sur le tuto suivi: il est pas mal mais faites gaffe avec winscp une cagade est vide arrivée

Supprimer quels répertoires ?
J’ai bien des sauvegardes mais uniquement de Jeedom.
Il faudrait que je fasse une réinstallation complète suivie d’une restauration Jeedom mais c’est plus long.

vous avez un repertoire pour votre site normalement dans deux endroits /var/www et /etc/apache2/sites-available/ et accessoirement /etc/apache2/sites-enabled/

ou faites:
sudo a2dissite xxxx.conf

Je n’ai même pas pu en faire, les fichiers sont en su et avec winscp je sais me loguer mais je ne crois pas qu’on puisse passer en su une fois loguer.

Mais une fois supprimés, comment vont-ils se régénérés ?

Faites sudo a2dissite mon_site.conf

Ca désactive votre site mais je ne sais pas si ca supprime dans site available, je pense que ca desactive que dans « enabled »

Et je répète « Faites tjs des backup de tous vos fichiers de conf »

Voula ce que ça donne :

sudo a2dissite mon_nom.family.conf
Site mon_nom.family disabled.
To activate the new configuration, you need to run:  systemctl reload apache2
sudo systemctl reload apache2
sudo a2ensite mon_nom.family
Enabling site mon_nom.family.
To activate the new configuration, you need to run:  systemctl reload apache2
sudo systemctl reload apache2

Et après ça ne marche toujours pas.

Plutôt que de faire des sauvegardes des fichiers conf (il doit y en avoir un bon paquet), je ferais un rpi-clone une fois tout remis d’aplomb.