A propos / How-To...

... WPA2 Entreprise (ou "WPA2 Enterprise"), avec authentification EAP-TLS, marche parfaitement chez moi sous Windows XP et GNU/Linux (distribution Gentoo) depuis aujourd’hui :)

Ma configuration :

  • portable HP-Compaq nw8000 avec double boot (Windows XP/Gentoo)
  • carte sans-fil : Intel Corporation PRO/Wireless 2200BG (rev 05)
  • point d’accès DLink DWL-3200AP, adresse IP : 10.0.0.40
  • serveur freeradius sous Debian, adresse IP : 10.0.0.1
  • SSID : pervasive-ssid

Ce tutorial / How-To va vous montrer comment configurer WPA2 Entreprise sous les systèmes d’exploitation WindowsXP et GNU/Linux (distribution Gentoo), avec un serveur FreeRADIUS et le mode d’authentification EAP-TLS (utilisation de certificats X.509). Le WPA2 rajoute entre autre le cryptage AES [1] par rapport au WPA (cryptage TKIP [2])

Configuration de FreeRADIUS en mode EAP-TLS avec l’autorité de certification TinyCA

cf. mes 2 articles précédents (Gestion d’une CA avec TinyCA et TinyCA et Freeradius en mode EAP-TLS) pour :

  • créer votre propre Autorité de Certification avec le logiciel TinyCA,
  • créer un certificat/clé serveur (pour le serveur radius),
  • créer un certificat/clé client (pour l’utilisateur "Thus0").
  • configurer le mode EAP-TLS dans FreeRADIUS.

WPA2 Entreprise sur la borne DLink DWL-3200AP

Mettre les paramètres suivant (cf. capture d’écran ci-dessous) :

  • Mode : Access Point
  • SSID : pervasive-ssid
  • SSID Broadcast : Enable
  • Authentication : WPA2-EAP
  • Radius Server : 10.0.0.1 (adresse IP de votre serveur freeradius)
  • Radius Port : 1812
  • Radius Secret : secretradius123 (mettre le même secret partagé que dans le fichier /etc/freeradius/clients.conf
PNG - 150.6 ko
Home | Wireless

WPA2 Entreprise sous Windows XP

J’ai utilisé le logiciel intégré à Windows XP pour gérer le WPA2

  • Importer les certificats

Copier les 2 certificats thus0@pervasive-network.org-cert.p12 et cacert.der sur le poste sous Windows XP.

Double-cliquer sur le certificat client thus0@pervasive-network.org-cert.p12, puis rentrer le mot de passe de la clé privée (toto123) dans la fenêtre qui apparaît

Assistant d'importation de certificats (.p12)

De même, double-cliquer sur le certificat de la CA : cacert.der

Pour vérifier que l’importation des 2 certificats s’est correctement passée, lancer le logiciel Internet Explorer, ouvrir le menu Options Internet et cliquer sur l’onglet Contenu, puis sur le bouton [Certificats...].

PNG - 20.4 ko
Options Internet | onglet Contenu

Dans les différents onglets, vous devriez obtenir des écrans similaires à ceux ci-dessous :

PNG - 24.9 ko
Certificats | onglet Personnel
PNG - 11.5 ko
Certificat Thus0 | Chemin d’accès de certification
PNG - 23.8 ko
Certificats | Autorités principales de confiance
  • Configuration du réseau sans-fil pervasive-ssid
PNG - 15.5 ko
pervasive-ssid | propriétés | onglet Association
Choisir comme : Authentification réseau : WPA2, et Cryptage réseau : AES
PNG - 15.2 ko
pervasive-ssid | propriétés | onglet Authentification
Choisir comme Type EAP : Carte àpuce ou autre certificat, puis cliquer sur le bouton [Propriétés]
PNG - 18.1 ko
pervasive-ssid | propriétés | Propriétés des cartes àpuce ou des autres certificats
Choisir l’autorité de certification précédemment importée : Pervasive Network CA

WPA2 Entreprise sous GNU/Linux (distribution Gentoo

- Versions des logiciels utilisés :

  • ipw2200-1.0.6-r2
  • ieee80211-1.0.3-r1
  • wpa-supplicant-0.4.4

- Configuration de WPA2 Entreprise

  • Importation des certificats

Créer un répertoire /etc/wpa_cert


# mkdir /etc/wpa_cert

Copier les fichiers thus0@pervasive-network.org-cert.p12 et cacert.pem dans le répertoire créé /etc/wpa_cert

  • Fichier /etc/wpa_supplicant.conf

ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
eapol_version=1
ap_scan=1
fast_reauth=1

opensc_engine_path=/usr/lib/opensc/engine_opensc.so
pkcs11_engine_path=/usr/lib/opensc/engine_pkcs11.so
pkcs11_module_path=/usr/lib/pkcs11/opensc-pkcs11.so

network={
       disabled=0
       ssid="pervasive-ssid"
       scan_ssid=0
       mode=0
       proto=RSN
       key_mgmt=WPA-EAP
       pairwise=CCMP
       auth_alg=OPEN
       group=CCMP
       proactive_key_caching=0
       eap=TLS
       identity="Thus0"
       ca_cert="/etc/wpa_cert/cacert.pem"
       private_key="/etc/wpa_cert/thus0@pervasive-network.org-cert.p12"
       private_key_passwd="toto123"
}
  • Fichier /etc/conf.d/wireless

J’ai utilisé le fichier d’exemple par défaut /etc/conf.d/wireless.example.


# cp /etc/conf.d/wireless.example /etc/conf.d/wireless
  • Fichier /etc/conf.d/net

##############################################################################
# QUICK-START
#
# The quickest start is if you want to use DHCP.
# In that case, everything should work out of the box, no configuration
# necessary, though the startup script will warn you that you haven't
# specified anything.
#
# If you want to use a static address or use DHCP explicitly, jump
# down to the section labelled INTERFACE HANDLERS.
#
# If you want to do anything more fancy, you should take the time to
# read through the rest of this file.


##############################################################################
# MODULES
#
# We now support modular networking scripts which means we can easily
# add support for new interface types and modules while keeping
# compatability with existing ones.
#
# Modules load by default if the package they need is installed.  If
# you specify a module here that doesn't have it's package installed
# then you get an error stating which package you need to install.
# Ideally, you only use the modules setting when you have two or more
# packages installed that supply the same service.
#
# In other words, you probably should DO NOTHING HERE...

# Prefer iproute2 over ifconfig
#modules=( "iproute2" )

# You can also specify other modules for an interface
# In this case we prefer udhcpc over dhcpcd
#modules_eth0=( "udhcpc" )

# You can also specify which modules not to use - for example you may be
# using a supplicant or linux-wlan-ng to control wireless configuration but
# you still want to configure network settings per ESSID associated with.
modules=( "!iwconfig" )

[...]

##############################################################################
# OPTIONAL MODULES

#-----------------------------------------------------------------------------
# WIRELESS (802.11 support)
# Wireless can be provided by iwconfig or wpa_supplicant

# iwconfig
# emerge net-wireless/wireless-tools
# Wireless options are held in /etc/conf.d/wireless - but could be here too
# Consult the sample file /etc/conf.d/wireless.example for instructions
# iwconfig is the default

# wpa_supplicant
# emerge net-wireless/wpa-supplicant
# Wireless options are held in /etc/wpa_supplicant.conf
# Consult the sample file /etc/wpa_supplicant.conf.example for instructions
# To choose wpa_supplicant over iwconfig
modules=( "wpa_supplicant" )
# To configure wpa_supplicant
#wpa_supplicant_eth0="-Dprism54" # For Prism54 based cards
#wpa_supplicant_ath0="-Dmadwifi" # For Atheros based cards
wpa_supplicant_eth1="-Dipw"
# Consult wpa_supplicant for more drivers
# By default we give wpa_suppliant 60 seconds to associate and authenticate
#wpa_timeout_eth0=60

[...]
#-----------------------------------------------------------------------------
# DHCP
# DHCP can be provided by dhcpcd, dhclient, udhcpc or pump
#
# dhcpcd:   emerge net-misc/dhcpcd
# dhclient: emerge net-misc/dhcp
# udhcpc:   emerge net-misc/udhcp
# pump:     emerge net-misc/pump

# If you have more than one DHCP client installed, you need to specify which
# one to use - otherwise we default to dhcpcd if available
#modules=( "udhcpc" ) # to select udhcpc over dhcpcd
#
# Notes:
# - dhcpcd, udhcpc and pump send the current hostname
#   to the DHCP server by default
# - dhcpcd does not daemonize when the lease time is infinite
# - udhcp-0.9.3-r3 and earlier does not support getting NTP servers
# - dhclient does not support getting NTP servers
# - pump does not support getting NIS servers
# - DHCP tends to erase any existing device information - so add
#   static addresses after dhcp if you need them

# Regardless of which DHCP client you prefer, you configure them the
# same way using one of following depending on which interface modules
# you're using.
config_eth1=( "dhcp" )

[...]

  • Créer le script de démarrage

# cd /etc/init.d
# ln -s net.lo net.eth1

Vérification que tout fonctionne

- ... La preuve en image sur le portable sous GNU/Linux :


# /etc/init.d/net.eth1 start
* Starting eth1
*   Starting wpa_supplicant on eth1 ...
ioctl[SIOCSIWPMKSA]: Operation not supported                                             [ ok ]
*     eth1 connected to "pervasive-ssid" at 00:11:95:F3:79:DB
*   Bringing up eth1
*     dhcp
*       Running dhcpcd ...                                                              [ ok ]
*       eth1 received address 10.0.0.7

# wpa_cli -ieth1 status
bssid=00:11:95:f3:79:db
ssid=pervasive-ssid
pairwise_cipher=CCMP
group_cipher=CCMP
key_mgmt=WPA2/IEEE 802.1X/EAP
wpa_state=COMPLETED
ip_address=10.0.0.7
Supplicant PAE state=AUTHENTICATED
suppPortStatus=Authorized
EAP state=SUCCESS
PNG - 9.8 ko
wpa_gui

- ... La preuve en image sur le portable sous WindowsXP :

PNG - 15.9 ko
Etat de la connexion sans-fil
PNG - 65.9 ko
Choisir un réseau sans-fil

- ... La preuve en image sur la borne DLink DWL-3200 :

PNG - 141 ko
Status | Device info
PNG - 166.5 ko
Status | Stats
PNG - 125.5 ko
Status | Client info

[1] Advance Encryption Standard

[2] Temporal Key Integrity Protocol