Parfait, normalement tu as même pas de prochaine fois si tu as mis la cmd ds la table cron
Bonjour
Je suis en train d’étudier la mise en place du renouvellement automatique du certificat avec le tuto. Mon nom de domaine est chez OVH.
Après lecture si j’ai bien compris, il y a 3 possibilités :
1- Port 80 toujours ouvert → installation du scénario de ngrataloup, le certificat est renouvelé + notification Jeedom
2- Nom de domaine chez OVH → installation seul du challenge DNS OVH, le certificat est renouvelé mais pas de notification sur Jeedom donc il y a une incertitude sur le renouvellement.
3- Non de domaine chez OVH + notification sur Jeedom → installation du scénario de ngrataloup + installation du challenge DNS OVH. Le certificat est renouvelé soit par le crontab( étape 6 du tuto "Challenge DNS) soit par le scénario.
Question:
Si je ne me trompe pas, le crontab n’est pas indispensable puisque le le renouvellement est réalisé par le scénario.
Merci à @ngrataloup pour son tuto.
Cordialement
Pour le point 2, j’ai un scénario qui me remonte la date d’expiration du certificat.
$monDomain = 'ton.domaine.toto';
$apiCertspotter = 'https://api.certspotter.com/v1/issuances?domain=';
$api = $apiCertspotter . $monDomain;
$json = file_get_contents($api);
if ($json=="") {
$date = 'Site injoignable';
} else {
$scenario->setLog($json);
$jsonData = json_decode($json,true);
$c = count($jsonData);
$scenario->setLog('Nb de certificat : ' . $c);
if ($c>0) {
$dateAfter = $jsonData[$c-1]["not_after"];
$date = date('d/m/Y à H:i:s',strtotime($dateAfter));
} else {
$date = 'Pas de certificat';
}
}
$scenario->setLog('Résultat : ' . $date);
cmd::byString("#[ta][commande][info]#")->event($date);
Bonjour @echo
Oui, c’est bien ca !
pour le point 2, tu peux aussi utiliser le scenario du point 1 plutot qu’une entrée dans le cron. c’est la meme commande qui est utilisée (sudo certbot renew ) et tu seras alors notifié du renouvellement
EDIT : En fait, c’est ton point 3, mais il faut bien supprimer le renew via le cron
Norbert
Je vous remercie beaucoup pour vos éclaircissements à tous les 2.
Je vais mettre cela en place.
Cordialement
Bonjour
Je reviens sur l’installation du Challenge DNS chez OVH.
Initialement j’avais installé Certbot sur Jeedom avec la commande :apt install certbot , j’ouvrais le port 80 sur ma box et je faisais un renouvellement manuel et fermeture du port 80.
Je désire appliquer le tuto de ngrataloup parce que c’est l’installation recommandée de certbot par le site officiel.
Dans le tuto au point 1 :
Si vous avez déja installé certbot sur l’OS directement comme moi, la commande suivante:
sudo snap set certbot trust-plugin-with-root=ok
sortira une erreur :
root@jeedom:~# snap set certbot trust-plugin-with-root=ok
error: snap "certbot" not found
Ce qui est normal puisque certbot n’a pas été installé en mode snap.
Certainement que snapd n’est pas installé sur votre Jeedom.
Pour désinstaller certbot, installer snapd et le snap certbot suivre la procédure officielle qui est bien expliquée:
https://certbot.eff.org/instructions?ws=apache&os=debianbuster&tab=wildcard
La procédure est pour Debian 10, elle est valable aussi pour Debian 11.
Reprendre au point 1 le tuto de ngrataloup
Tout est installé scénario + Challenge DNS. A surveillé dans 3 mois.
Cordialement
Bonjour
En complément au vu des commentaires pour les notifications :
J’ai réaliser les tests avec :
- Le plugin mail
- Free SMS
- Le plugin Notification Manager
- Jeedom Connect
Le scénario de ngrataloup est fonctionnel en changeant seulement les commandes dans les 2 Tags de notifications.
Cordialement
J’ai une question concernant le sudo, comment est géré le mot de passe ? Car sur une commande en sudo le mot de passe va être demandé non ?
Ca dépend de ton paramètrage.
Si le user est juste dans le groupe sudo, un pwd est demandé.
Mais si tu rajoutes l’utilisateur dans le fichier /etc/sudoers en spécifiant de ne pas demander de mot de passe, ben tu n’auras pas de mot de passe à saisir avec sudo
Cette ligne rajoutée dans le fichier sudoers permet de lancer n’importe quelle commande sans mot de passe en tant que Root via l’utilisateur nomutilisateur
nomutilisateur ALL=(ALL) NOPASSWD:ALL
Donc :
1 - rajouter monutilisateur au groupe sudoku
2 - rajouter la ligne dans sudoers
Norbert
dans le même genre certbot fait le boulot
en jouant avec ssh en localhost on peut obtenir
sudo certbot certificates | grep 'Expiry'
certificates Saving debug log to /var/log/letsencrypt/letsencrypt.log
Expiry Date: 2025-04-19 14:45:36+00:00 (VALID: 28 days)
(pas réussi a enlever la première ligne.) mais le « valid 28 jrs » me parle bien
et merci ChatGPT ainsi que JEANDHOM :
$monDomain = 'TonDOMAIN_ICI';
$apiCertspotter = 'https://api.certspotter.com/v1/issuances?domain=';
$api = $apiCertspotter . $monDomain;
$json = file_get_contents($api);
if ($json=="") {
$date = 'Site injoignable';
} else {
$scenario->setLog($json);
$jsonData = json_decode($json,true);
$c = count($jsonData);
$scenario->setLog('Nb de certificat : ' . $c);
if ($c>0) {
$dateAfter = $jsonData[$c-1]["not_after"];
$dateObj = new DateTime($dateAfter);
$now = new DateTime();
// Calcul de la différence en jours
$interval = $now->diff($dateObj);
$daysDiff = $interval->days;
$date = date('d/m/Y à H:i:s',strtotime($dateAfter));
} else {
$date = 'Pas de certificat';
}
}
$scenario->setLog('Résultat : ' . $date);
if ($daysDiff !== null) {
$scenario->setLog('Nombre de jours restants : ' . $daysDiff);
}
cmd::byString("#[Reseau][Localhost][date_cert]#")->event($date);
cmd::byString("#[Reseau][Localhost][jours_restant]#")->event($daysDiff);
t’as un générateur de sudoku sur ton jeedom? ca va intéresser certains
C’est du plagiat
Personnellement, je n’utilise plus mon script depuis que l’API me demande de m’enregistrer pour pouvoir continuer à l’utiliser.
EDIT : En regardant de plus près, je faisais une requête par jour et à priori, c’était trop. J’ai mis une requête par semaine et je réduirai après.
La meilleure piste est celle de certbot si on utilise Let’s Encrypt.
Certbot n’est pas sur ma machine Jeedom, mais grâce au plugin-sshmanager (merci aux développeurs), j’entrevois une solution.
EDIT 001
Avec le plugin-sshmanager, je n’ai pas réussi à faire mieux que deux commandes infos.
certbot certificates -d mon.nom.de.domaine.toto | grep Expiry | awk {'print $6'} > expiryNbDay.txt
cat expiryNbDay.txt
EDIT 002
Après une bonne nuit de sommeil, avec une seule commande info.
certbot certificates -d mon.nom.de.domaine.toto | grep Expiry | awk {'print $6'} > expiryNbDay.txt | cat expiryNbDay.txt
A voir, si on peut se débarrasser de l’écriture et de la lecture du fichier.
ah ben en effet j’ai ré inventé l’eau chaude.
Merci pour ton scénario qui est encore plus utile maintenant qu’on ne va plus recevoir les mails comme quoi il est temps de renouveler les certificats. J’ai cependant une petite question au niveau des notifications Jeedom Connect :
Je n’ai pas de difficulté pour trouver l’équivalent de [Norbert][JC-Norbert][Notification] dans mon équipement JC, par contre pour [Norbert][JC-Norbert][Notif_Erreur], je ne trouve nulle part l’équivalent, j’ai surement loupé un truc …
Je pense que @ngrataloup utilise la fonctionnalité de Jeedom Connect qui permet de créer si besoin des notifications customs.
Par exemple une qui sera systématiquement en silencieux sur ton tel et une qui sonnera y compris si ton téléphone est en vibreur (c’est par exemple ce que j’ai fait en cas de déclenchement d’une alarme chez moi).
Si tu n’en à qu’une seule tu peux mettre la même commande de notif pour les deux.
C’est bien ce qu’explique @Aurel.
Dans JC tu peux te créer autant de notifs que tu souhaites, avec un visuel, une couleur ou un type différent.
Voir la doc JC si nécessaire
Norbert
D’accord c’est beaucoup plus clair maintenant, merci pour vos explications, jusque là j’utilisais plus tôt Telegram, mais quand je vois les possibilités de Jeedom Connect …
Jeedom Connect vs Telegram: « Petit tu es doué, très doué ; Mais tant que je serais dans le métier tu ne seras jamais que le second ! »
Rho la réplique culte !