Génération de certificats SSL
#1
J'ai décidé d'utiliser des certificats SSL pour identifier mes eggdrops mais je me suis rendu compte que je ne pouvais pas utiliser le même certificat pour tous, car NickServ considère qu'un certificat n'appartient qu'à un seul utilisateur.
Autrement dit, si vous utilisez eggdrop.key et eggdrop.crt pour tous, ils seront reconnus comme le premier utilisateur ayant ajouté ce certificat.

J'ai donc décidé de créer un certificat par eggdrop. Et comme je suis fainéant, j'ai préféré automatiser ça.

Modification de eggdrop.conf
Chaque eggdrop a sa propre configuration (nom_d_eggdrop.conf) qui appelle eggdrop.conf qui est une légère modification du eggdrop.conf original. J'ai modifié deux lignes:
tcl
set ssl-privatekey "${username}.key"
set ssl-certificate "${username}.crt"



Script de génération
Code :
#!/bin/bash
HOMEDIR=/home/moi/
EGGVER=1.9.5
cd ${HOMEDIR}eggdrop/
for f in *.conf
do
   uname=${f%.conf}
   if [[ "$uname" != eggdrop* ]]; then
      /usr/bin/openssl req -new -x509 -nodes -days 365 -keyout ${HOMEDIR}eggdrop/${uname}.key -out ${HOMEDIR}eggdrop/${uname}.crt -config ${HOMEDIR}eggdrop-${EGGVER}/ssl.conf -subj "/O=Eggdrop.fr/OU=Eggdrop/CN=Self-generated Eggdrop Certificate"
   fi
done
Ce script, à exécuter depuis le répertoire où sont installés les eggdrops, va tout simplement lister les .conf disponibles (en écartant les deux fichiers eggdrop.conf et eggdrop-basic.conf) et générer de manière non-interactive les doublets crt/key en utilisant le nom_d_eggdrop pour les nommer.

Ceci implique que le $username de l'eggdrop doit être identique au nom de son fichier de configuration (en respectant la casse).

Comme les certificats ne sont valides qu'un an, il suffit de créer une entrée crontab pour le lancer tous les ans (ce qui explique tous les chemins complets dans le script).
Présent sur le Tchat francophone
Répondre
#2
J'ai légèrement modifié mon script pour pouvoir lui passer en paramètre un nom de fichier de configuration.

Maintenant, on peut soit lancer ./gencerts.sh et ça (re)créera tous les certificats, soit lancer ./gencerts.sh toto.conf et ça ne créera que les certificats pour toto, à condition que le fichier de configuration existe.
Notez que la seule chose à modifier maintenant est EGGVER et que le script doit être dans le répertoire où se trouvent les fichiers de configuration

Code :
#!/bin/bash
EGGVER="1.10.1"

### DO NOT EDIT BELOW ###
FL="*.conf"
CURDIR=$(pwd)

if [ $# -gt 0 ]
then
   if [ -f "$1" ]
   then
      FL=$1
   else
      echo "Cannot find ${1}, aborting..."
      exit
   fi
fi

for f in $FL
do
   uname=${f%.conf}
   if [[ "$uname" == eggdrop* ]]; then
      echo "do nothing for $uname"
   else
      openssl req -new -x509 -nodes -days 365 -keyout ${CURDIR}/${uname}.key -out ${CURDIR}/${uname}.crt -config ../eggdrop-${EGGVER}/ssl.conf -subj "/O=Eggdrop.fr/OU=Eggdrop/CN=Self-generated Eggdrop Certificate"
      echo "Generated ${CURDIR}/${uname}.crt for $uname"
   fi
done
Présent sur le Tchat francophone
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
Tchat 100% gratuit - Discutez en toute liberté - Transitionnez vers Linux - Discussions dans le Lauragais - Communauté LGBT respectueuse - soutien aux victimes de cybermalveillance - pour les filles par les filles