Configurer apache pour mettre en place une authentification CAE sur certains sous-réseaux
Cette documentation explique comment configurer un reverse proxy apache pour mettre en place une couche d'authentification CAE sur des sous-réseaux (en l'occurence les sous-réseaux VPN : 10.234/16 à 10.239/16).
Les étapes sont :
- ajout des certificats ANTS
- ajout des listes de révocations
- configuration du serveur apache
ajout des certificats ANTS et personnes.
Ces certificats vont permettrent d'authentifier les CAE.
Le script certificates.sh
ci-dessous télécharge les certificats racine IGC/A et les AC personne et les converti en PEM si besoin.
Pour installer les certificats :
- Copiez le script sur le serveur (pas besoin d'être root)
wget https://gitlab-forge.din.developpement-durable.gouv.fr/-/snippets/67/raw/main/certificates.sh?inline=false -O certificates.sh
- et lancez le
bash certificates.sh
Les certificats sont dans votre répertoire courant et ont des noms de la forme *-gen.crt
- copiez tous les fichiers
*-gen.crt
dans/etc/ssl/ac_personnes_aae/crt
sudo mkdir -p /etc/ssl/ac_personnes_aae/crt
sudo cp *-gen.crt /etc/ssl/ac_personnes_aae/crt
- mettez à jour les hash des certificats :
sudo c_rehash /etc/ssl/ac_personnes_aae/crt
Vos certificats sont maintenant disponible dans /etc/ssl/ac_personnes_aae/crt pour les utiliser dans votre configuration apache. Cette opération n'est à faire qu'une seule fois (enfin jusqu'à ce qu'un nouveau certificat sorte).
ajout des listes de révocations
Les listes de révocation permettent de bloquer les utilisateurs dont la CAE a été révoquée. Elles doivent être mises à jour.
- Téléchargez le script
telecharge_liste_revocation.sh
. Celui-ci télécharge les certificats dans /etc/ssl/ac_personnes_aae/crl/ par défaut et mets à jour les hash
wget https://gitlab-forge.din.developpement-durable.gouv.fr/-/snippets/67/raw/main/telecharge_liste_revocation.sh?inline=false -O telecharge_liste_revocation.sh
- tester qu'il fonctionne en le lançant (en root ou en changeant la variable CERT_DIR). Vous devez obtenir un répertoire avec des fichiers *.crl et des liens de la forme :
$ ls /etc/ssl/ac_personnes_aae/crl/
194486b9.r0 41558b84.r0 5d950467.r0 88b9a685.r0 920b2d8d.r0 ac_personnes_aae_2.crl ac_personnes_aae_4.crl ac_racine_antsav3_2.crl bcf3121f.r0
300e8fd3.r0 5630168a.r0 70f754d6.r0 8a394128.r0 ac_personnes_aae_1.crl ac_personnes_aae_3.crl ac_racine_antsav3_1.crl ba433d6a.r0 d3b1163d.r0
- s'il fonctionne, ajoutez le dans cron.daily pour qu'il soit lancé tous les jours
configurer le apache
Tous les certificats sont disponibles. Vous pouvez maintenant configurer apache en vous basant sur le fichier serveur.conf ci-dessous. attention, j'ai dramatiquement simplifié l'original, vous aurez peut-être un peu de débuggage à faire.
#!/bin/bash
# script pour récupérer les certificats ANTS
# et les convertir au format PEM si besoin
# Nicolas Chuche
# 2024/02/27 - changement des URL de l'AC racine
set -e -u -o pipefail
# récupération des certificats
# on se pose pas de question, on récupère tout même les anciens
for URL in https://cyber.gouv.fr/sites/default/files/document/certificat.crt \
https://sp.ants.gouv.fr/antsav3/ca_racine_antsav3_1_igca.cer \
https://sp.ants.gouv.fr/antsav3/ca_racine_antsav3_2_igca.cer \
https://sp.ants.gouv.fr/antsav3/ac_personnes_aae_1.cer \
https://sp.ants.gouv.fr/antsav3/ac_personnes_aae_2.cer \
https://sp.ants.gouv.fr/antsav3/ac_personnes_aae_3.cer \
https://sp.ants.gouv.fr/antsav3/ac_personnes_aae_4.cer; do
wget $URL > /dev/null 2>&1
SRC_NAME=$(basename $URL)
# on change l'extension
DEST_NAME=`echo $SRC_NAME | sed -e 's/\.[^.]*$/-gen.crt/'`
echo $SRC_NAME
# on convertit les certificats pas au bon format
# on renomme les autres
if file $SRC_NAME | grep 'PEM' > /dev/null 2>&1 ; then
mv $SRC_NAME $DEST_NAME
else
openssl x509 -inform DER -in $SRC_NAME -out $DEST_NAME && rm $SRC_NAME
fi
done