1WPA_SUPPLICANT(8) WPA_SUPPLICANT(8)
2
3
4
6 wpa_supplicant - Wi-Fi Protected Access client and IEEE 802.1X suppli‐
7 cant
8
10 wpa_supplicant [ -BddfhKLqqtuvW ] [ -iifname ] [ -cconfig file ] [
11 -Ddriver ] [ -PPID_file ] [ -foutput file ]
12
13
15 Wireless networks do not require physical access to the network equip‐
16 ment in the same way as wired networks. This makes it easier for unau‐
17 thorized users to passively monitor a network and capture all transmit‐
18 ted frames. In addition, unauthorized use of the network is much eas‐
19 ier. In many cases, this can happen even without user's explicit knowl‐
20 edge since the wireless LAN adapter may have been configured to auto‐
21 matically join any available network.
22
23 Link-layer encryption can be used to provide a layer of security for
24 wireless networks. The original wireless LAN standard, IEEE 802.11,
25 included a simple encryption mechanism, WEP. However, that proved to be
26 flawed in many areas and network protected with WEP cannot be consider
27 secure. IEEE 802.1X authentication and frequently changed dynamic WEP
28 keys can be used to improve the network security, but even that has
29 inherited security issues due to the use of WEP for encryption. Wi-Fi
30 Protected Access and IEEE 802.11i amendment to the wireless LAN stan‐
31 dard introduce a much improvement mechanism for securing wireless net‐
32 works. IEEE 802.11i enabled networks that are using CCMP (encryption
33 mechanism based on strong cryptographic algorithm AES) can finally be
34 called secure used for applications which require efficient protection
35 against unauthorized access.
36
37 wpa_supplicant is an implementation of the WPA Supplicant component,
38 i.e., the part that runs in the client stations. It implements WPA key
39 negotiation with a WPA Authenticator and EAP authentication with
40 Authentication Server. In addition, it controls the roaming and IEEE
41 802.11 authentication/association of the wireless LAN driver.
42
43 wpa_supplicant is designed to be a "daemon" program that runs in the
44 background and acts as the backend component controlling the wireless
45 connection. wpa_supplicant supports separate frontend programs and an
46 example text-based frontend, wpa_cli, is included with wpa_supplicant.
47
48 Before wpa_supplicant can do its work, the network interface must be
49 available. That means that the physical device must be present and
50 enabled, and the driver for the device must be loaded. The daemon will
51 exit immediately if the device is not already available.
52
53 After wpa_supplicant has configured the network device, higher level
54 configuration such as DHCP may proceed. There are a variety of ways to
55 integrate wpa_supplicant into a machine's networking scripts, a few of
56 which are described in sections below.
57
58 The following steps are used when associating with an AP using WPA:
59
60 · wpa_supplicant requests the kernel driver to scan neighboring BSSes
61
62 · wpa_supplicant selects a BSS based on its configuration
63
64 · wpa_supplicant requests the kernel driver to associate with the cho‐
65 sen BSS
66
67 · If WPA-EAP: integrated IEEE 802.1X Supplicant completes EAP authenti‐
68 cation with the authentication server (proxied by the Authenticator
69 in the AP)
70
71 · If WPA-EAP: master key is received from the IEEE 802.1X Supplicant
72
73 · If WPA-PSK: wpa_supplicant uses PSK as the master session key
74
75 · wpa_supplicant completes WPA 4-Way Handshake and Group Key Handshake
76 with the Authenticator (AP)
77
78 · wpa_supplicant configures encryption keys for unicast and broadcast
79
80 · normal data packets can be transmitted and received
81
83 Supported WPA/IEEE 802.11i features:
84
85 · WPA-PSK ("WPA-Personal")
86
87 · WPA with EAP (e.g., with RADIUS authentication server) ("WPA-Enter‐
88 prise") Following authentication methods are supported with an inte‐
89 grate IEEE 802.1X Supplicant:
90
91 · EAP-TLS
92
93 · EAP-PEAP/MSCHAPv2 (both PEAPv0 and PEAPv1)
94
95 · EAP-PEAP/TLS (both PEAPv0 and PEAPv1)
96
97 · EAP-PEAP/GTC (both PEAPv0 and PEAPv1)
98
99 · EAP-PEAP/OTP (both PEAPv0 and PEAPv1)
100
101 · EAP-PEAP/MD5-Challenge (both PEAPv0 and PEAPv1)
102
103 · EAP-TTLS/EAP-MD5-Challenge
104
105 · EAP-TTLS/EAP-GTC
106
107 · EAP-TTLS/EAP-OTP
108
109 · EAP-TTLS/EAP-MSCHAPv2
110
111 · EAP-TTLS/EAP-TLS
112
113 · EAP-TTLS/MSCHAPv2
114
115 · EAP-TTLS/MSCHAP
116
117 · EAP-TTLS/PAP
118
119 · EAP-TTLS/CHAP
120
121 · EAP-SIM
122
123 · EAP-AKA
124
125 · EAP-PSK
126
127 · EAP-PAX
128
129 · LEAP (note: requires special support from the driver for IEEE
130 802.11 authentication)
131
132 · (following methods are supported, but since they do not generate
133 keying material, they cannot be used with WPA or IEEE 802.1X WEP
134 keying)
135
136 · EAP-MD5-Challenge
137
138 · EAP-MSCHAPv2
139
140 · EAP-GTC
141
142 · EAP-OTP
143
144 · key management for CCMP, TKIP, WEP104, WEP40
145
146 · RSN/WPA2 (IEEE 802.11i)
147
148 · pre-authentication
149
150 · PMKSA caching
151
153 A summary of available driver backends is below. Support for each of
154 the driver backends is chosen at wpa_supplicant compile time. For a
155 list of supported driver backends that may be used with the -D option
156 on your system, refer to the help output of wpa_supplicant (wpa_suppli‐
157 cant -h).
158
159 hostap (default) Host AP driver (Intersil Prism2/2.5/3). (this can
160 also be used with Linuxant DriverLoader).
161
162 hermes Agere Systems Inc. driver (Hermes-I/Hermes-II).
163
164 madwifi
165 MADWIFI 802.11 support (Atheros, etc.).
166
167 atmel ATMEL AT76C5XXx (USB, PCMCIA).
168
169 wext Linux wireless extensions (generic).
170
171 ndiswrapper
172 Linux ndiswrapper.
173
174 broadcom
175 Broadcom wl.o driver.
176
177 ipw Intel ipw2100/2200 driver.
178
179 wired wpa_supplicant wired Ethernet driver
180
181 roboswitch
182 wpa_supplicant Broadcom switch driver
183
184 bsd BSD 802.11 support (Atheros, etc.).
185
186 ndis Windows NDIS driver.
187
189 Most command line options have global scope. Some are given per inter‐
190 face, and are only valid if at least one -i option is specified, other‐
191 wise they're ignored. Option groups for different interfaces must be
192 separated by -N option.
193
194 -b br_ifname
195 Optional bridge interface name. (Per interface)
196
197 -B Run daemon in the background.
198
199 -c filename
200 Path to configuration file. (Per interface)
201
202 -C ctrl_interface
203 Path to ctrl_interface socket (Per interface. Only used if -c is
204 not).
205
206 -i ifname
207 Interface to listen on. Multiple instances of this option can be
208 present, one per interface, separated by -N option (see below).
209
210 -d Increase debugging verbosity (-dd even more).
211
212 -D driver
213 Driver to use. (Per interface, see the available options below.)
214
215 -f output file
216 Log output to specified file instead of stdout.
217
218 -g global ctrl_interface
219 Path to global ctrl_interface socket. If specified, interface
220 definitions may be omitted.
221
222 -K Include keys (passwords, etc.) in debug output.
223
224 -t Include timestamp in debug messages.
225
226 -h Help. Show a usage message.
227
228 -L Show license (GPL and BSD).
229
230 -p Driver parameters. (Per interface)
231
232 -P PID_file
233 Path to PID file.
234
235 -q Decrease debugging verbosity (-qq even less).
236
237 -u Enabled DBus control interface. If enabled, interface defini‐
238 tions may be omitted.
239
240 -v Show version.
241
242 -W Wait for a control interface monitor before starting.
243
244 -N Start describing new interface.
245
247 In most common cases, wpa_supplicant is started with:
248
249
250 wpa_supplicant -B -c/etc/wpa_supplicant.conf -iwlan0
251
252 This makes the process fork into background.
253
254 The easiest way to debug problems, and to get debug log for bug
255 reports, is to start wpa_supplicant on foreground with debugging
256 enabled:
257
258
259 wpa_supplicant -c/etc/wpa_supplicant.conf -iwlan0 -d
260
261 wpa_supplicant can control multiple interfaces (radios) either by run‐
262 ning one process for each interface separately or by running just one
263 process and list of options at command line. Each interface is sepa‐
264 rated with -N argument. As an example, following command would start
265 wpa_supplicant for two interfaces:
266
267
268 wpa_supplicant \
269 -c wpa1.conf -i wlan0 -D hostap -N \
270 -c wpa2.conf -i ath0 -D madwifi
271
273 Current hardware/software requirements:
274
275 · Linux kernel 2.4.x or 2.6.x with Linux Wireless Extensions v15 or
276 newer
277
278 · FreeBSD 6-CURRENT
279
280 · Microsoft Windows with WinPcap (at least WinXP, may work with other
281 versions)
282
284 Host AP driver for Prism2/2.5/3 (development snapshot/v0.2.x)
285 (http://hostap.epitest.fi/) Driver needs to be set in Managed
286 mode (iwconfig wlan0 mode managed). Please note that station
287 firmware version needs to be 1.7.0 or newer to work in WPA mode.
288
289 Linuxant DriverLoader
290 (http://www.linuxant.com/driverloader/) with Windows NDIS driver
291 for your wlan card supporting WPA.
292
293 Agere Systems Inc. Linux Driver
294 (http://www.agere.com/support/drivers/) Please note that the
295 driver interface file (driver_hermes.c) and hardware specific
296 include files are not included in the wpa_supplicant distribu‐
297 tion. You will need to copy these from the source package of the
298 Agere driver.
299
300 madwifi driver for cards based on Atheros chip set (ar521x)
301 (http://sourceforge.net/projects/madwifi/) Please note that you
302 will need to modify the wpa_supplicant .config file to use the
303 correct path for the madwifi driver root directory (CFLAGS +=
304 -I../madwifi/wpa line in example defconfig).
305
306 ATMEL AT76C5XXx driver for USB and PCMCIA cards
307 (http://atmelwlandriver.sourceforge.net/).
308
309 Linux ndiswrapper
310 (http://ndiswrapper.sourceforge.net/) with Windows NDIS driver.
311
312 Broadcom wl.o driver
313 This is a generic Linux driver for Broadcom IEEE 802.11a/g
314 cards. However, it is proprietary driver that is not publicly
315 available except for couple of exceptions, mainly Broadcom-based
316 APs/wireless routers that use Linux. The driver binary can be
317 downloaded, e.g., from Linksys support site
318 (http://www.linksys.com/support/gpl.asp) for Linksys WRT54G. The
319 GPL tarball includes cross-compiler and the needed header file,
320 wlioctl.h, for compiling wpa_supplicant. This driver support in
321 wpa_supplicant is expected to work also with other devices based
322 on Broadcom driver (assuming the driver includes client mode
323 support).
324
325 Intel ipw2100 driver
326 (http://sourceforge.net/projects/ipw2100/)
327
328 Intel ipw2200 driver
329 (http://sourceforge.net/projects/ipw2200/)
330
331 Linux wireless extensions
332 In theory, any driver that supports Linux wireless extensions
333 can be used with IEEE 802.1X (i.e., not WPA) when using
334 ap_scan=0 option in configuration file.
335
336 Wired Ethernet drivers
337 Use ap_scan=0.
338
339 BSD net80211 layer (e.g., Atheros driver)
340 At the moment, this is for FreeBSD 6-CURRENT branch.
341
342 Windows NDIS
343 The current Windows port requires WinPcap (http://win‐
344 pcap.polito.it/). See README-Windows.txt for more information.
345
346 wpa_supplicant was designed to be portable for different drivers and
347 operating systems. Hopefully, support for more wlan cards and OSes will
348 be added in the future. See developer.txt for more information about
349 the design of wpa_supplicant and porting to other drivers. One main
350 goal is to add full WPA/WPA2 support to Linux wireless extensions to
351 allow new drivers to be supported without having to implement new
352 driver-specific interface code in wpa_supplicant.
353
355 The wpa_supplicant system consists of the following components:
356
357 wpa_supplicant.conf
358 the configuration file describing all networks that the user
359 wants the computer to connect to.
360
361 wpa_supplicant
362 the program that directly interacts with the network interface.
363
364 wpa_cli
365 the client program that provides a high-level interface to the
366 functionality of the daemon.
367
368 wpa_passphrase
369 a utility needed to construct wpa_supplicant.conf files that
370 include encrypted passwords.
371
373 First, make a configuration file, e.g. /etc/wpa_supplicant.conf, that
374 describes the networks you are interested in. See wpa_suppli‐
375 cant.conf(5) for details.
376
377 Once the configuration is ready, you can test whether the configuration
378 works by running wpa_supplicant with following command to start it on
379 foreground with debugging enabled:
380
381
382 wpa_supplicant -iwlan0 -c/etc/wpa_supplicant.conf -d
383
384
385 Assuming everything goes fine, you can start using following command to
386 start wpa_supplicant on background without debugging:
387
388
389 wpa_supplicant -iwlan0 -c/etc/wpa_supplicant.conf -B
390
391
392 Please note that if you included more than one driver interface in the
393 build time configuration (.config), you may need to specify which
394 interface to use by including -D<driver name> option on the command
395 line.
396
398 For example, following small changes to pcmcia-cs scripts can be used
399 to enable WPA support:
400
401 Add MODE="Managed" and WPA="y" to the network scheme in /etc/pcm‐
402 cia/wireless.opts.
403
404 Add the following block to the end of start action handler in /etc/pcm‐
405 cia/wireless:
406
407
408 if [ "$WPA" = "y" -a -x /usr/local/bin/wpa_supplicant ]; then
409 /usr/local/bin/wpa_supplicant -B -c/etc/wpa_supplicant.conf -i$DEVICE
410 fi
411
412
413 Add the following block to the end of stop action handler (may need to
414 be separated from other actions) in /etc/pcmcia/wireless:
415
416
417 if [ "$WPA" = "y" -a -x /usr/local/bin/wpa_supplicant ]; then
418 killall wpa_supplicant
419 fi
420
421
422 This will make cardmgr start wpa_supplicant when the card is plugged
423 in.
424
426 wpa_background(8) wpa_supplicant.conf(5) wpa_cli(8) wpa_passphrase(8)
427
429 wpa_supplicant is copyright (c) 2003-2007, Jouni Malinen <j@w1.fi> and
430 contributors. All Rights Reserved.
431
432 This program is dual-licensed under both the GPL version 2 and BSD
433 license. Either license may be used at your option.
434
435
436
437 15 February 2009 WPA_SUPPLICANT(8)