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 (can be multiple drivers: nl80211,wext). (Per
214 interface, see the available options below.)
215
216 -f output file
217 Log output to specified file instead of stdout.
218
219 -g global ctrl_interface
220 Path to global ctrl_interface socket. If specified, interface
221 definitions may be omitted.
222
223 -K Include keys (passwords, etc.) in debug output.
224
225 -t Include timestamp in debug messages.
226
227 -h Help. Show a usage message.
228
229 -L Show license (GPL and BSD).
230
231 -p Driver parameters. (Per interface)
232
233 -P PID_file
234 Path to PID file.
235
236 -q Decrease debugging verbosity (-qq even less).
237
238 -u Enabled DBus control interface. If enabled, interface defini‐
239 tions may be omitted.
240
241 -v Show version.
242
243 -W Wait for a control interface monitor before starting.
244
245 -N Start describing new interface.
246
248 In most common cases, wpa_supplicant is started with:
249
250
251 wpa_supplicant -B -c/etc/wpa_supplicant.conf -iwlan0
252
253 This makes the process fork into background.
254
255 The easiest way to debug problems, and to get debug log for bug
256 reports, is to start wpa_supplicant on foreground with debugging
257 enabled:
258
259
260 wpa_supplicant -c/etc/wpa_supplicant.conf -iwlan0 -d
261
262 If the specific driver wrapper is not known beforehand, it is possible
263 to specify multiple comma separated driver wrappers on the command
264 line. wpa_supplicant will use the first driver wrapper that is able to
265 initialize the interface.
266
267
268 wpa_supplicant -Dnl80211,wext -c/etc/wpa_supplicant.conf -iwlan0
269
270 wpa_supplicant can control multiple interfaces (radios) either by run‐
271 ning one process for each interface separately or by running just one
272 process and list of options at command line. Each interface is sepa‐
273 rated with -N argument. As an example, following command would start
274 wpa_supplicant for two interfaces:
275
276
277 wpa_supplicant \
278 -c wpa1.conf -i wlan0 -D hostap -N \
279 -c wpa2.conf -i ath0 -D madwifi
280
282 Current hardware/software requirements:
283
284 · Linux kernel 2.4.x or 2.6.x with Linux Wireless Extensions v15 or
285 newer
286
287 · FreeBSD 6-CURRENT
288
289 · Microsoft Windows with WinPcap (at least WinXP, may work with other
290 versions)
291
293 Host AP driver for Prism2/2.5/3 (development snapshot/v0.2.x)
294 (http://hostap.epitest.fi/) Driver needs to be set in Managed
295 mode (iwconfig wlan0 mode managed). Please note that station
296 firmware version needs to be 1.7.0 or newer to work in WPA mode.
297
298 Linuxant DriverLoader
299 (http://www.linuxant.com/driverloader/) with Windows NDIS driver
300 for your wlan card supporting WPA.
301
302 Agere Systems Inc. Linux Driver
303 (http://www.agere.com/support/drivers/) Please note that the
304 driver interface file (driver_hermes.c) and hardware specific
305 include files are not included in the wpa_supplicant distribu‐
306 tion. You will need to copy these from the source package of the
307 Agere driver.
308
309 madwifi driver for cards based on Atheros chip set (ar521x)
310 (http://sourceforge.net/projects/madwifi/) Please note that you
311 will need to modify the wpa_supplicant .config file to use the
312 correct path for the madwifi driver root directory (CFLAGS +=
313 -I../madwifi/wpa line in example defconfig).
314
315 ATMEL AT76C5XXx driver for USB and PCMCIA cards
316 (http://atmelwlandriver.sourceforge.net/).
317
318 Linux ndiswrapper
319 (http://ndiswrapper.sourceforge.net/) with Windows NDIS driver.
320
321 Broadcom wl.o driver
322 This is a generic Linux driver for Broadcom IEEE 802.11a/g
323 cards. However, it is proprietary driver that is not publicly
324 available except for couple of exceptions, mainly Broadcom-based
325 APs/wireless routers that use Linux. The driver binary can be
326 downloaded, e.g., from Linksys support site
327 (http://www.linksys.com/support/gpl.asp) for Linksys WRT54G. The
328 GPL tarball includes cross-compiler and the needed header file,
329 wlioctl.h, for compiling wpa_supplicant. This driver support in
330 wpa_supplicant is expected to work also with other devices based
331 on Broadcom driver (assuming the driver includes client mode
332 support).
333
334 Intel ipw2100 driver
335 (http://sourceforge.net/projects/ipw2100/)
336
337 Intel ipw2200 driver
338 (http://sourceforge.net/projects/ipw2200/)
339
340 Linux wireless extensions
341 In theory, any driver that supports Linux wireless extensions
342 can be used with IEEE 802.1X (i.e., not WPA) when using
343 ap_scan=0 option in configuration file.
344
345 Wired Ethernet drivers
346 Use ap_scan=0.
347
348 BSD net80211 layer (e.g., Atheros driver)
349 At the moment, this is for FreeBSD 6-CURRENT branch.
350
351 Windows NDIS
352 The current Windows port requires WinPcap (http://win‐
353 pcap.polito.it/). See README-Windows.txt for more information.
354
355 wpa_supplicant was designed to be portable for different drivers and
356 operating systems. Hopefully, support for more wlan cards and OSes will
357 be added in the future. See developer.txt for more information about
358 the design of wpa_supplicant and porting to other drivers. One main
359 goal is to add full WPA/WPA2 support to Linux wireless extensions to
360 allow new drivers to be supported without having to implement new
361 driver-specific interface code in wpa_supplicant.
362
364 The wpa_supplicant system consists of the following components:
365
366 wpa_supplicant.conf
367 the configuration file describing all networks that the user
368 wants the computer to connect to.
369
370 wpa_supplicant
371 the program that directly interacts with the network interface.
372
373 wpa_cli
374 the client program that provides a high-level interface to the
375 functionality of the daemon.
376
377 wpa_passphrase
378 a utility needed to construct wpa_supplicant.conf files that
379 include encrypted passwords.
380
382 First, make a configuration file, e.g. /etc/wpa_supplicant.conf, that
383 describes the networks you are interested in. See wpa_suppli‐
384 cant.conf(5) for details.
385
386 Once the configuration is ready, you can test whether the configuration
387 works by running wpa_supplicant with following command to start it on
388 foreground with debugging enabled:
389
390
391 wpa_supplicant -iwlan0 -c/etc/wpa_supplicant.conf -d
392
393
394 Assuming everything goes fine, you can start using following command to
395 start wpa_supplicant on background without debugging:
396
397
398 wpa_supplicant -iwlan0 -c/etc/wpa_supplicant.conf -B
399
400
401 Please note that if you included more than one driver interface in the
402 build time configuration (.config), you may need to specify which
403 interface to use by including -D<driver name> option on the command
404 line.
405
407 For example, following small changes to pcmcia-cs scripts can be used
408 to enable WPA support:
409
410 Add MODE="Managed" and WPA="y" to the network scheme in /etc/pcm‐
411 cia/wireless.opts.
412
413 Add the following block to the end of start action handler in /etc/pcm‐
414 cia/wireless:
415
416
417 if [ "$WPA" = "y" -a -x /usr/local/bin/wpa_supplicant ]; then
418 /usr/local/bin/wpa_supplicant -B -c/etc/wpa_supplicant.conf -i$DEVICE
419 fi
420
421
422 Add the following block to the end of stop action handler (may need to
423 be separated from other actions) in /etc/pcmcia/wireless:
424
425
426 if [ "$WPA" = "y" -a -x /usr/local/bin/wpa_supplicant ]; then
427 killall wpa_supplicant
428 fi
429
430
431 This will make cardmgr start wpa_supplicant when the card is plugged
432 in.
433
435 wpa_background(8) wpa_supplicant.conf(5) wpa_cli(8) wpa_passphrase(8)
436
438 wpa_supplicant is copyright (c) 2003-2007, Jouni Malinen <j@w1.fi> and
439 contributors. All Rights Reserved.
440
441 This program is dual-licensed under both the GPL version 2 and BSD
442 license. Either license may be used at your option.
443
444
445
446 07 September 2010 WPA_SUPPLICANT(8)