WPA_SUPPLICANT.CONF(5)

โœจ WPA_SUPPLICANT.CONF(5) โœจ

okay bestie, welcome to the manual page for wpa_supplicant.conf โ€” the config file for wpa_supplicant ๐Ÿ’– this whole page is literally just about that one text file, so let's get into it ๐Ÿซถ


๐ŸŒธ NAME ๐ŸŒธ

wpa_supplicant.conf โ€” no cap, it's the configuration file for wpa_supplicant ๐Ÿ’…


๐ŸŽ€ OVERVIEW ๐ŸŽ€

So wpa_supplicant gets configured with a text file, right? And that file lists every single accepted network and security policy, pre-shared keys included, all of it โœจ For the full deets on the config format and every field that's supported, go peek at the example configuration file โ€” it's probably chilling in /usr/share/doc/wpa_supplicant/ ๐Ÿ“‚

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. And yes, that can genuinely happen if wpa_supplicant is run in the background. so like, no relative paths, bestie, i'm begging ๐Ÿ™ˆ

Changes to configuration file can be reloaded by sending SIGHUP signal to wpa_supplicant โ€” like this:

killall -HUP wpa_supplicant

Similarly, reloading can be triggered with the wpa_cli reconfigure command ๐Ÿ‘‘

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. it's giving main character energy and honestly? deserved ๐Ÿ’…


๐Ÿ”ฅ QUICK EXAMPLES ๐Ÿ”ฅ

  1. WPA-Personal (PSK) as home network and WPA-Enterprise with EAP-TLS as work network.
# 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"
}
  1. WPA-RADIUS/EAP-PEAP/MSCHAPv2 with RADIUS servers that use old peaplabel (e.g., Funk Odyssey and SBR, Meetinghouse Aegis, Interlink RAD-Series) ๐Ÿซถ
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"
}
  1. EAP-TTLS/EAP-MD5-Challenge configuration with anonymous identity for the unencrypted use. Real identity is sent only within an encrypted TLS tunnel ๐Ÿ” so sneaky, so iconic
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"
}
  1. IEEE 802.1X (i.e., no WPA) with dynamic WEP keys (require both unicast and broadcast); use EAP-TLS for authentication
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
}
  1. 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.
โš ๏ธ bestie this one is mostly for testing and is not recommended for normal use. like, it's the "wear every accessory you own" fit, not an everyday fit ๐Ÿ’€
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"
}
  1. Authentication for wired Ethernet. This can be used with wired or roboswitch interface (-Dwired or -Droboswitch on command line) ๐Ÿ”Œ
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
}

๐Ÿฆ‹ CERTIFICATES ๐Ÿฆ‹

Some EAP authentication methods require use of certificates, periodt. 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. And if the private key uses a passphrase, this has to be configured in wpa_supplicant.conf โ€” specifically via "private_key_passwd" ๐Ÿ”‘

wpa_supplicant supports X.509 certificates in PEM and DER formats. User certificate and private key can be included in the same file ๐Ÿ‘ฏ

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:

# 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

๐ŸŒˆ SEE ALSO ๐ŸŒˆ

wpa_supplicant(8) openssl(1)


and that's the whole page bestie, you ate that ๐Ÿ’…โœจ this little love letter to your wifi config is dated 07 August 2019, from the WPA_SUPPLICANT.CONF(5) manual, mwah ๐ŸŽ€ go forth and connect ๐Ÿฆ‹๐Ÿ’–

๐Ÿ“ฆ where this page comes from