Guide pratique des certificats SSL: Version française du SSL Certificates HOWTO | ||
---|---|---|
Précédent | Chapitre 3. Emploi des certificats avec les applications | Suivant |
IPSec est un nouveau protocole basé sur IP qui autorise les liens chiffrés à la demande entre deux machines. La mise en œuvre d'IPSec est obligatoire dans le cadre d'IPv6 et peut être incorporée dans IPv4. Qu'IPSec soit obligatoire pour IPv6 ne signifie pas pour autant qu'il est systématiquement déployé par les administrateurs réseau. IPSec n'est pas facile à mettre en œuvre à cause des mécanismes de déploiement automatiques des clefs. Le DNS peut aider mais cette méthode n'est pas encore courante. En outre, les autorités de certification ne proposent pas d'outils pour un déploiement à grande échelle en entreprise.
FreeS/WAN est une souche IPSec renommée pour GNU/Linux. La version actuelle (1.9.7) doit être patchée pour gérer les certificats X.509v3. Une telle version modifiée est disponible sur ce site. Certaines distributions l'incluent en standard, il est donc conseillé de commencer par vérifier si c'est le cas pour celle qu'on utilise. Cette version présente l'intérêt de permettre l'usage d'OpenSSL pour la création des certificats de FreeS/WAN et des enregistrements CERT du DNS. En outre, l'interaction avec la souche IPSec de Microsoft est réalisable. On se reportera à la page de Nate's pour davantage d'informations.
On crée un certificat dont le CN correspond au nom de domaine complètement qualifié de la passerelle IPSec, par exemple host.example.com. Ne pas oublier de signer le certificat. On dispose des deux fichiers newcert.pem et newreq.pem. Le fichier newreq.pem doit être édité pour ne plus contenir que la clef privée : on supprime tout ce qui n'est pas compris entre les balises --BEGIN RSA PRIVATE KEY-- et --END RSA PRIVATE KEY--. Il faut ensuite copier ces fichiers sur la passerelle en faisant attention à ce que le transfert soit sécurisé. Les fichiers de configuration de FreeS/WAN se trouvent dans le répertoire /etc/freeswan pour ma distribution. À ajuster suivant les cas.
mv newreq.pem /etc/freeswan/ipsec.d/private/host.example.com.key mv newcert.pem /etc/freeswan/ipsec.d/host.example.com.pem |
On copie le certificat racine dans le répertoire de configuration de FreeS/WAN. Il ne faut copier que le certificat, pas la clef.
mv cacert.pem /etc/freeswan/ipsec.d/cacerts |
On génère une liste de révocation ou on copie l'existante à l'emplacement adéquat :
openssl ca -genrcl -out /etc/freeswan/ipsec.d/crls/crl.pem |
Toujours sur la passerelle, on inclut dans le fichier ipsec.secrets la ligne ci-dessous :
: RSA host.example.com.key "password" |
Le mot de passe est celui qui a servi à créer la paire de clef. On configure le fichier ipsec.conf comme suit :
config setup interfaces=%defaultroute klipsdebug=none plutodebug=none plutoload=%search plutostart=%search uniqueids=yes conn %default keyingtries=1 compress=yes disablearrivalcheck=no authby=rsasig leftrsasigkey=%cert rightrsasigkey=%cert conn roadwarrior-net leftsubnet=<sous_reseau>/<masque_de_sous_reseau> also=roadwarrior conn roadwarrior right=%any left%defaultroute leftcert=host.example.com.pem auto=add pfs=yes |
Comme on peut le voir, deux liens sont établis, l'un avec la passerelle, l'autre avec le réseau situé derrière la passerelle. Ceci s'avère très pratique si un pare-feu ou un traducteur d'adresses est actif sur la passerelle. La configuration autorise tout propriétaire d'un certificat valide à se connecter à la passerelle.
La procédure est semblable. Il faut créer un certificat dont le CN correspond au nom de domaine complètement qualifié de l'hôte, par exemple clienthost.example.com. Le certificat doit être signé par la même autorité de certification que la passerelle. Le lien est alors autorisé.
Comme pour la passerelle, on copie de façon sécurisée les fichiers suivants dans les répertoires de configuration :
mv newreq.pem /etc/freeswan/ipsec.d/private/clienthost.example.com.key mv newcert.pem /etc/freeswan/ipsec.d/clienthost.example.com.pem |
On copie le certificat racine dans le répertoire de configuration de FreeS/WAN. Il ne faut copier que le certificat, pas la clef.
mv cacert.pem /etc/freeswan/ipsec.d/cacerts |
On génère une liste de révocation ou on copie l'existante à l'emplacement adéquat :
openssl ca -genrcl -out /etc/freeswan/ipsec.d/crls/crl.pem |
Enfin, on copie le certificat (mais pas la clef privée) de la passerelle :
mv host.example.com.pem /etc/fresswan/ipsec.d/host.example.com.pem |
Le fichier ipsec.secrets est édité de la même façon pour charger la clef privée :
: RSA clienthost.example.com.key "password" |
On édite le fichier ipsec.conf pour activer la connexion :
config setup interfaces=%defaultroute klipsdebug=none plutodebug=none plutoload=%search plutostart=%search uniqueids=yes conn %default keyingtries=0 compress=yes disablearrivalcheck=no authby=rsasig leftrsasigkey=%cert rightrsasigkey=%cert conn roadwarrior-net left=(ip of host) leftsubnet=(gateway_host_subnet)/(gateway_host_netmask) also=roadwarrior conn roadwarrior left=(ip of host) leftcert=host.example.com.pem right=%defaultroute rightcert=clienthost.example.com.pem auto=add pfs=yes |
On met ensuite le VPN en action :
ipsec auto --up roadwarrior ipsec auto --up roadwarrior-net |
Afin que le lien s'établisse automatiquement, on remplace dans le fichier de configuration la directive « auto=add » par « auto=start ».
La procédure est identique à celle du client FreeS/WAN. On crée un certificat, par exemple pour winhost.example.com, qui doit à présent être converti au format pkcs12. On se reportera à la section « MS Outlook et les certificats » pour le détail de la marche à suivre. On s'assure de ce que le fichier .p12 est attaché au certificat de l'autorité de certification racine.
On note le résultat de la commande :
openssl x509 -in cacert.pem -noout -subject |
Ce fichier doit être copié de façon sécurisée sur la machine MS Windows.
On installe à présent l'utilitaire ipsec.exe de Marcus Muller, par exemple dans le répertoire c:\ipsec.
On ouvre la console de gestion Microsoft (Microsoft Management Console/MMC) puis on clique sur « Add/Remove Snap-in », « Add », « Certificates », « Add », « Computer Account » et « Next ». On choisit alors « Local computer » et « Finish ». Dans « IP Security Policy Management », choisir « Add », « Local Computer » puis « Finish », « Close » et enfin « OK ».
On peut à présent ajouter le certificat .p12.
On clique sur la flèche d'ajout pour « Certificates (Local Computer) » puis avec le bouton droit sur « Personal » avant de cliquer sur « All Tasks », « Import » et « Next ». On renseigne ensuite le chemin d'accès au fichier .p12 (ou on navigue pour atteindre le fichier) et on clique sur « Next ». On rentre alors le mot de passe de protection du fichier puis on clique sur « Next ». On choisit « Automatically select the certificate store based on the type of certificate », « Next », « Finish » et on répond positivement à toutes les questions qui se présentent. On sort de la console et on enregistre la séquence correspondante dans un fichier pour ne pas avoir à se la farcir à chaque fois.
On installe ipsecpol.exe (Windows 2000) ou ipseccmd.exe (Windows XP) comme indiqué dans la documentation de l'utilitaire ipsec. On édite le fichier ipsec.conf de la machine MS Windows en remplaçant "RightCA" par la sortie de la commande « openssl x509 -in cacert.pem -noout -subject »; mise en forme comme indiqué ci dessous (il faut remplacer les / par des virgules et changer le nom de quelques champs comme indiqué dans l'exemple) :
conn roadwarrior left=%any right=(ip_du_systeme_distant) rightca="C=FJ, ST=Fiji, L=Suva, O=SOPAC, OU=ICT, CN=SOPAC Root" network=auto auto=start pfs=yes conn roadwarrior-net left=%any right=(ip_du_systeme_distant) rightsubnet=(sous_reseau)/(masque_de_sous_reseau) rightca="C=FJ, ST=Fiji, L=Suva, O=SOPAC, OU=ICT, CN=SOPAC Root" network=auto auto=start pfs=yes |
On démarre à présent le lien.
Pour cela on invoque la commande « ipsec.exe ». Voici un exemple de sortie de cette commande :
C:\ipsec>ipsec IPSec Version 2.1.4 (c) 2001,2002 Marcus Mueller Getting running Config ... Microsoft's Windows XP identified Host name is: (local_hostname) No RAS connections found. LAN IP address: (local_ip_address) Setting up IPSec ... Deactivating old policy... Removing old policy... Connection roadwarrior: MyTunnel : (local_ip_address) MyNet : (local_ip_address)/255.255.255.255 PartnerTunnel: (ip_of_remote_system) PartnerNet : (ip_of_remote_system)/255.255.255.255 CA (ID) : C=FJ, ST=Fiji, L=Suva, O=SOPAC, OU=ICT, CN=SOPAC Root... PFS : y Auto : start Auth.Mode : MD5 Rekeying : 3600S/50000K Activating policy... Connection roadwarrior-net: MyTunnel : (local_ip_address) MyNet : (local_ip_address)/255.255.255.255 PartnerTunnel: (ip_of_remote_system) PartnerNet : (remote_subnet)/(remote_netmask) CA (ID) : C=FJ, ST=Fiji, L=Suva, O=SOPAC, OU=ICT, CN=SOPAC Root... PFS : y Auto : start Auth.Mode : MD5 Rekeying : 3600S/50000K Activating policy... C:\ipsec> |
On émet un ping vers la passerelle qui devrait afficher « Negotiating IP Security » pendant quelques instants avant de répondre au ping. Pour une T1 qui attaque un VPN derrière un modem cable, il s'écoule typiquement de trois à quatre pings. Une fois la même chose faite depuis le réseau interne à l'autre extrémité du lien, ce dernier devrait être opérationnel.
Précédent | Sommaire | Suivant |
Sécurisation des programmes | Niveau supérieur | PKI Globale |