Package: network-manager Version: 1.6.2-3 Severity: normal Tags: patch upstream
Some 802.1x networks (wifi or wired) use self-signed certificates.
Wpa-supplicant has support for this, by checking sha256 sum of the
certificate instead of verifying certificate against some CA
certificate, by supplying 'hash://...' url instead of path into
'ca-cert' configuration option.
The keyfile plugin of networkmanager responsible for reading
/etc/NetworkManager/system-connections/* thinks, that ca-cert
is local path and adds /etc/NetworkManager/... before the hash.
Solution is simple: just pass the hash url from the keyfile to
wpa-supplicant as-is, as it is done for absolute paths.
(It would be nice, to have also graphical configuration for this, but
that would be a feature request to another package.)
Sha256 sum of the certificate is logged already when no certificate
check is done: Jun 7 14:51:57 chewbacca wpa_supplicant[841]: wlp3s0:
CTRL-EVENT-EAP-PEER-CERT depth=0 subject='/CN=WMSvc-ELVIRA'
hash=c640682caa9cd14bf60640f92ff59c844df363dfce800fca3416b9cb222a4cdb
Then I can use the hash in the keyfile, and wpa-supplicant forbids to
send my username/pasword to any server that provides different
certificate.
Example configuration from
/etc/NetworkManager/system-connections/my_safer_8021x follows:
...
[802-1x]
ca-cert=hash://server/sha256/c640682caa9cd14bf60640f92ff59c844df363dfce800fca3416b9cb222a4cdb
eap=peap;
identity=my_user_name
password=my_password
phase2-auth=mschapv2
...
Patch allowing 'hash://' url in ca-cert follows:
diff --git a/libnm-core/nm-keyfile-reader.c b/libnm-core/nm-keyfile-reader.c
index 8adf67dd..c071264d 100644
--- a/libnm-core/nm-keyfile-reader.c
+++ b/libnm-core/nm-keyfile-reader.c
@@ -893,7 +893,7 @@ get_cert_path (const char *base_dir, const guint8
*cert_path, gsize cert_path_le
base = path = g_malloc0 (cert_path_len + 1);
memcpy (path, cert_path, cert_path_len);
+ if (path[0] == '/')
- if ((path[0] == '/') || (strncmp(path, "hash://",7)==0))
return path;
p = strrchr (path, '/');
-- System Information:
Debian Release: 9.0
APT prefers testing
APT policy: (990, 'testing'), (500, 'unstable'), (1, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 4.9.0-2-amd64 (SMP w/4 CPU cores)
Locale: LANG=C, LC_CTYPE=cs_CZ.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
Versions of packages network-manager depends on:
ii adduser 3.115
ii dbus 1.10.16-1
ii init-system-helpers 1.47
ii libaudit1 1:2.6.7-2
ii libbluetooth3 5.43-2
ii libc6 2.24-9
ii libglib2.0-0 2.50.3-1
ii libgnutls30 3.5.8-3
ii libgudev-1.0-0 230-3
ii libjansson4 2.9-1
ii libmm-glib0 1.6.4-1
ii libndp0 1.6-1+b1
ii libnewt0.52 0.52.19-1+b1
ii libnl-3-200 3.2.27-2
ii libnm0 1.6.2-2
ii libpam-systemd 233-5
ii libpolkit-agent-1-0 0.105-18
ii libpolkit-gobject-1-0 0.105-18
ii libreadline7 7.0-2
ii libselinux1 2.6-3+b1
ii libsoup2.4-1 2.56.0-2
ii libsystemd0 233-5
ii libteamdctl0 1.26-1+b1
ii libuuid1 2.29.2-1
ii lsb-base 9.20161125
ii policykit-1 0.105-18
ii udev 233-8
ii wpasupplicant 2:2.4-1
Versions of packages network-manager recommends:
ii crda 3.18-1
ii dnsmasq-base 2.76-5+b1
ii iptables 1.6.0+snapshot20161117-5
ii iputils-arping 3:20161105-1
ii isc-dhcp-client 4.3.5-3
ii modemmanager 1.6.4-1
ii ppp 2.4.7-1+4
Versions of packages network-manager suggests:
pn libteam-utils <none>
-- Configuration Files:
/etc/NetworkManager/NetworkManager.conf changed [not included]
-- no debconf information
pgpq3WfgEO6OH.pgp
Description: OpenPGP digital signature

