Projet

Général

Profil

Certificats VPN et migration PNCN

But

  • Mise en conformité selon les préconisations de l'ANSSI
  • Utiliser des certificats sha2

Prérequis

  • Sphynx 2.4.2 (2.5.2 bientôt stable)
  • Amon 2.4.0 minimum (2.5 recommandé)

Paramétrage du serveur Sphynx

Le serveur doit être paramétré pour être conforme à l'IGC PNCN.
Lancer gen_config pour vérifier et adapter la configuration :
  • Onglet Vpn-pki
    • Utiliser la PKI PNCN à oui
    • Localité (L=) doit être renseigné avec une ville
    • Nom de l'organisation (O=) doit contenir Education Nationale
    • Nom de l'unité de l'organisation (OU=) doit contenir 0002 110043015 et Academie de ....
    • URL des listes de révocation de certificats (sinon rien) est optionnel, elles sont présentes dans chaque certificat

Lancer reconfigure pour prendre en compte ces modifications.

Cela permet de :
  • générer une configuration openssl conforme pour les requêtes de certificats auprès de la PNCN
  • configurer ARV pour forcer un suffixe DNS au CN du certificat lors de la génération d'une requête

Mise à niveau des versions des serveurs EOLE

Le serveur Sphynx doit être en version 2.4.2 minimum.
Les serveurs Amon doivent être en version 2.4.x minimum.

  • Vous disposez d'un Sphynx version 2.2 ou inférieur :
    • Réinstallation du serveur Sphynx
  • Vous disposez d'un Sphynx 2.3, 2.4.0 ou 2.4.1, 3 possibilités :
    • Réinstallation du serveur Sphynx
    • Migration du serveur existant
    • Sauvegarde + réinstallation + restauration
  • Vous disposez de serveurs Amon version 2.2 ou inférieur :
    • Réinstallation du serveur au moment du passage à la PNCN
  • Vous disposez de serveurs Amon 2.3, 2 possibilités :
    • Réinstallation du serveur, même avant le passage à la PNCN
    • Migration du serveur existant, même avant le passage à la PNCN
Durées des migrations (procédure Upgrade-Auto) :
  • Amon/Sphynx 2.3 vers Amon/Sphynx 2.4.2 : 1 heure
  • Amon/Sphynx 2.4.x vers Amon/Sphynx 2.4.2 : 5 à 10 minutes
Opérations post-migration :
  • reboot
  • gen_config avec connexion Zéphir (adapter la configuration sur Sphynx)
  • instance
  • Régénérer la configuration IPsec :
    • Pour Sphynx : se connecter sur ARV et cliquer sur Appliquer
    • Pour Amon : lancer active_rvp init (un redémarrage de bastion peut-être nécessaire la première fois)

Prise en compte de la PNCN

Dans ARV, un modèle de lien associé à l'autorité de certification AC EN Scolarite et Formation doit exister.

  • Sur une primo installation d'un serveur Sphynx 2.4.2 :
    • enregistrer le serveur sur Zéphir
    • lancer le script init_sphynx pour créer le modèle de lien
  • Sur un serveur Sphynx déjà en production, encore configuré pour RACINE AGRIATES (migration ou réinstallation) :
    • configurer le serveur pour utiliser la PNCN
    • lancer le script init_pncn pour :
      • cloner les modèles de liens existants associés à l'AC RACINE AGRIATES
      • associer AC EN Scolarite et Formation à ces modèles clonés
      • renommer les modèles de liens existants associés à l'AC RACINE AGRIATES en les préfixant par OLD_PKI_

On pourra ainsi utiliser les deux PKI simultanément et procéder à une migration progressive.
Sphynx peut avoir des connexions VPN basés sur RACINE AGRIATES et AC EN Scolarite et Formation.

Importer les certificats p12 fournis par la PNCN

L'importation de fichiers pkcs12 n'est pas prévue dans ARV. Ce format inclus la chaîne de certification jusqu'au certificat final ainsi que la clé privée.
ARV peut importer les certificats et les clés privées mais dans des fichiers séparés. Il va falloir transformer ce fichier pksc12 en deux fichiers que ARV pourra importer.
  • Script de conversion du fichier pkcs12
    #!/bin/bash
    
    # Extraction de la chaîne de certification dans un fichier PKCS7 PEM
    # Extraction et chiffrement de la clé privée dans un fichier RSA PEM
    
    if [[ $# -ne 3 ]]
    then
        echo "Génération d'un fichier pksc7 et d'un fichier rsa
        argument 1 : fichier pkcs12
        argument 2 : mot de passe du fichier pkcs12
        argument 3 : mot de passe pour chiffrer la clé privée
        " 
        exit 0
    fi
    
    if [ ! -f $1 ]
    then
        echo "fichier $1 inexistant !!!" 
        exit 1
    fi
    
    TMP_CERT_FILE="certs.tmp" 
    CERT_FILENAME=$(basename $1 | sed -e 's/\.p12$//')
    PKCS7_FILENAME="${CERT_FILENAME}.p7" 
    PRIVKEY_FILENAME="priv-${CERT_FILENAME}.pem" 
    
    # Extraction certificats + clé privée + chiffrement clé dans la foulée
    openssl pkcs12 -in $1 -passin pass:$2 -passout pass:$3 -out $TMP_CERT_FILE
    if [[ $? -ne 0 ]]
    then
       exit $?
    fi
    
    # On ne conserve que les lignes utiles
    sed -i '/-----BEGIN/,/-----END/!d' $TMP_CERT_FILE
    # Extraction de la clé privée chiffrée dans un fichier
    sed -e '/-----BEGIN ENCRYPTED PRIVATE KEY-----/,/-----END ENCRYPTED PRIVATE KEY-----/!d' $TMP_CERT_FILE > $PRIVKEY_FILENAME
    echo "Clé privée    : $PRIVKEY_FILENAME" 
    # On ne conserve que les certificats
    sed -i '/-----BEGIN ENCRYPTED PRIVATE KEY-----/,/-----END ENCRYPTED PRIVATE KEY-----/d' $TMP_CERT_FILE
    # Création d'un fichier pkcs7 contenant la chaîne de certification
    openssl crl2pkcs7 -nocrl -out $PKCS7_FILENAME -certfile $TMP_CERT_FILE
    if [[ $? -ne 0 ]]
    then
       exit $?
    fi
    echo "Fichier PKCS7 : $PKCS7_FILENAME" 
    
    rm -rf $TMP_CERT_FILE
    

Génération de la configuration IPsec pour la PNCN

Dans l'application ARV, il doit exister un modèle de lien basé sur AC EN Scolarite et Formation.
Les serveurs doivent disposer de certificats issus de AC EN Scolarite et Formation.

split_pkcs12 (1,48 ko) Fabrice Barconnière, 08/02/2016 14:55