| <!doctype refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN"> |
| <refentry> |
| <refmeta> |
| <refentrytitle>wpa_supplicant.conf</refentrytitle> |
| <manvolnum>5</manvolnum> |
| </refmeta> |
| <refnamediv> |
| <refname>wpa_supplicant.conf</refname> |
| <refpurpose>configuration file for wpa_supplicant</refpurpose> |
| </refnamediv> |
| <refsect1> |
| <title>Overview</title> |
| |
| <para><command>wpa_supplicant</command> is configured using a text |
| file that lists all accepted networks and security policies, |
| including pre-shared keys. See the example configuration file, |
| probably in <command>/usr/share/doc/wpa_supplicant/</command>, for |
| detailed information about the configuration format and supported |
| fields.</para> |
| |
| <para>All file paths in this configuration file should use full |
| (absolute, not relative to working directory) path in order to allow |
| working directory to be changed. This can happen if wpa_supplicant is |
| run in the background.</para> |
| |
| <para>Changes to configuration file can be reloaded be sending |
| SIGHUP signal to <command>wpa_supplicant</command> ('killall -HUP |
| wpa_supplicant'). Similarly, reloading can be triggered with |
| the <emphasis>wpa_cli reconfigure</emphasis> command.</para> |
| |
| <para>Configuration file can include one or more network blocks, |
| e.g., one for each used SSID. wpa_supplicant will automatically |
| select the best network based on the order of network blocks in |
| the configuration file, network security level (WPA/WPA2 is |
| preferred), and signal strength.</para> |
| </refsect1> |
| |
| <refsect1> |
| <title>Quick Examples</title> |
| |
| <orderedlist> |
| <listitem> |
| |
| <para>WPA-Personal (PSK) as home network and WPA-Enterprise with |
| EAP-TLS as work network.</para> |
| |
| <blockquote><programlisting> |
| # allow frontend (e.g., wpa_cli) to be used by all users in 'wheel' group |
| ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel |
| # |
| # home network; allow all valid ciphers |
| network={ |
| ssid="home" |
| scan_ssid=1 |
| key_mgmt=WPA-PSK |
| psk="very secret passphrase" |
| } |
| # |
| # work network; use EAP-TLS with WPA; allow only CCMP and TKIP ciphers |
| network={ |
| ssid="work" |
| scan_ssid=1 |
| key_mgmt=WPA-EAP |
| pairwise=CCMP TKIP |
| group=CCMP TKIP |
| eap=TLS |
| identity="user@example.com" |
| ca_cert="/etc/cert/ca.pem" |
| client_cert="/etc/cert/user.pem" |
| private_key="/etc/cert/user.prv" |
| private_key_passwd="password" |
| } |
| </programlisting></blockquote> |
| </listitem> |
| |
| <listitem> |
| <para>WPA-RADIUS/EAP-PEAP/MSCHAPv2 with RADIUS servers that |
| use old peaplabel (e.g., Funk Odyssey and SBR, Meetinghouse |
| Aegis, Interlink RAD-Series)</para> |
| |
| <blockquote><programlisting> |
| ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel |
| network={ |
| ssid="example" |
| scan_ssid=1 |
| key_mgmt=WPA-EAP |
| eap=PEAP |
| identity="user@example.com" |
| password="foobar" |
| ca_cert="/etc/cert/ca.pem" |
| phase1="peaplabel=0" |
| phase2="auth=MSCHAPV2" |
| } |
| </programlisting></blockquote> |
| </listitem> |
| |
| <listitem> |
| <para>EAP-TTLS/EAP-MD5-Challenge configuration with anonymous |
| identity for the unencrypted use. Real identity is sent only |
| within an encrypted TLS tunnel.</para> |
| |
| |
| <blockquote><programlisting> |
| ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel |
| network={ |
| ssid="example" |
| scan_ssid=1 |
| key_mgmt=WPA-EAP |
| eap=TTLS |
| identity="user@example.com" |
| anonymous_identity="anonymous@example.com" |
| password="foobar" |
| ca_cert="/etc/cert/ca.pem" |
| phase2="auth=MD5" |
| } |
| </programlisting></blockquote> |
| |
| </listitem> |
| |
| <listitem> |
| <para>IEEE 802.1X (i.e., no WPA) with dynamic WEP keys |
| (require both unicast and broadcast); use EAP-TLS for |
| authentication</para> |
| |
| <blockquote><programlisting> |
| ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel |
| network={ |
| ssid="1x-test" |
| scan_ssid=1 |
| key_mgmt=IEEE8021X |
| eap=TLS |
| identity="user@example.com" |
| ca_cert="/etc/cert/ca.pem" |
| client_cert="/etc/cert/user.pem" |
| private_key="/etc/cert/user.prv" |
| private_key_passwd="password" |
| eapol_flags=3 |
| } |
| </programlisting></blockquote> |
| </listitem> |
| |
| |
| <listitem> |
| <para>Catch all example that allows more or less all |
| configuration modes. The configuration options are used based |
| on what security policy is used in the selected SSID. This is |
| mostly for testing and is not recommended for normal |
| use.</para> |
| |
| <blockquote><programlisting> |
| ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel |
| network={ |
| ssid="example" |
| scan_ssid=1 |
| key_mgmt=WPA-EAP WPA-PSK IEEE8021X NONE |
| pairwise=CCMP TKIP |
| group=CCMP TKIP WEP104 WEP40 |
| psk="very secret passphrase" |
| eap=TTLS PEAP TLS |
| identity="user@example.com" |
| password="foobar" |
| ca_cert="/etc/cert/ca.pem" |
| client_cert="/etc/cert/user.pem" |
| private_key="/etc/cert/user.prv" |
| private_key_passwd="password" |
| phase1="peaplabel=0" |
| ca_cert2="/etc/cert/ca2.pem" |
| client_cert2="/etc/cer/user.pem" |
| private_key2="/etc/cer/user.prv" |
| private_key2_passwd="password" |
| } |
| </programlisting></blockquote> |
| </listitem> |
| |
| <listitem> |
| <para>Authentication for wired Ethernet. This can be used with |
| <emphasis>wired</emphasis> or <emphasis>roboswitch</emphasis> interface |
| (-Dwired or -Droboswitch on command line).</para> |
| |
| <blockquote><programlisting> |
| ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel |
| ap_scan=0 |
| network={ |
| key_mgmt=IEEE8021X |
| eap=MD5 |
| identity="user" |
| password="password" |
| eapol_flags=0 |
| } |
| </programlisting></blockquote> |
| </listitem> |
| </orderedlist> |
| |
| |
| |
| |
| |
| </refsect1> |
| <refsect1> |
| <title>Certificates</title> |
| |
| <para>Some EAP authentication methods require use of |
| certificates. EAP-TLS uses both server side and client |
| certificates whereas EAP-PEAP and EAP-TTLS only require the server |
| side certificate. When client certificate is used, a matching |
| private key file has to also be included in configuration. If the |
| private key uses a passphrase, this has to be configured in |
| wpa_supplicant.conf ("private_key_passwd").</para> |
| |
| <para>wpa_supplicant supports X.509 certificates in PEM and DER |
| formats. User certificate and private key can be included in the |
| same file.</para> |
| |
| <para>If the user certificate and private key is received in |
| PKCS#12/PFX format, they need to be converted to suitable PEM/DER |
| format for wpa_supplicant. This can be done, e.g., with following |
| commands:</para> |
| <blockquote><programlisting> |
| # convert client certificate and private key to PEM format |
| openssl pkcs12 -in example.pfx -out user.pem -clcerts |
| # convert CA certificate (if included in PFX file) to PEM format |
| openssl pkcs12 -in example.pfx -out ca.pem -cacerts -nokeys |
| </programlisting></blockquote> |
| </refsect1> |
| |
| <refsect1> |
| <title>See Also</title> |
| <para> |
| <citerefentry> |
| <refentrytitle>wpa_supplicant</refentrytitle> |
| <manvolnum>8</manvolnum> |
| </citerefentry> |
| <citerefentry> |
| <refentrytitle>openssl</refentrytitle> |
| <manvolnum>1</manvolnum> |
| </citerefentry> |
| </para> |
| </refsect1> |
| </refentry> |