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

Attachment: pgpq3WfgEO6OH.pgp
Description: OpenPGP digital signature

Reply via email to