NetworkManager ERROR: Gateway certificate validation failed, and the certificate digest in not in the local whitelist

El siguiente error se puede presentar al tratar de establecer conexión contra una VPN configurada a través de Network Manager en CentOS, RHEL, Ubuntu o cualquier distribución de GNU/Linux que utilice NM.

En este caso, sucedió con una VPN de Fortinet y utilizando el añadido de Network Manager FortiSSLVPN, que es como tener el Forticlient integrado en el sistema operativo:

$ rpm -qa | grep -i forti
NetworkManager-fortisslvpn-gnome-1.2.8-2.fc28.x86_64
NetworkManager-fortisslvpn-1.2.8-2.fc28.x86_64
openfortivpn-1.6.0-1.fc28.x86_64

El error es el siguiente:

NetworkManager[1253]: ERROR:  Gateway certificate validation failed, and the certificate digest in not in the local whitelist. If you trust it, rerun with:
NetworkManager[1253]: ERROR:      --trusted-cert 2a1sb23334ad18fdgeh21h5hff89xc19ec4ef5acc8ac3bee3e1e99d740b5sse42
NetworkManager[1253]: ERROR:  or add this line to your config file:
NetworkManager[1253]: ERROR:      trusted-cert = 2a1sb23334ad18fdgeh21h5hff89xc19ec4ef5acc8ac3bee3e1e99d740b5sse42
NetworkManager[1253]: ERROR:  Gateway certificate:
NetworkManager[1253]: ERROR:      subject:
NetworkManager[1253]: ERROR:          C=US
NetworkManager[1253]: ERROR:          ST=California
NetworkManager[1253]: ERROR:          L=Sunnyvale
NetworkManager[1253]: ERROR:          O=Fortinet
NetworkManager[1253]: ERROR:          OU=FortiGate
NetworkManager[1253]: ERROR:          CN=XXXX
NetworkManager[1253]: ERROR:          emailAddress=support@fortinet.com
NetworkManager[1253]: ERROR:      issuer:
NetworkManager[1253]: ERROR:          C=US
NetworkManager[1253]: ERROR:          ST=California
NetworkManager[1253]: ERROR:          L=Sunnyvale
NetworkManager[1253]: ERROR:          O=Fortinet
NetworkManager[1253]: ERROR:          OU=Certificate Authority
NetworkManager[1253]: ERROR:          CN=support
NetworkManager[1253]: ERROR:          emailAddress=support@fortinet.com
NetworkManager[1253]: ERROR:      sha256 digest:
NetworkManager[1253]: ERROR:          2a1sb23334ad18fdgeh21h5hff89xc19ec4ef5acc8ac3bee3e1e99d740b5sse42
NetworkManager[1253]: INFO:   Closed connection to gateway.

Lo importante es esta parte:

NetworkManager[1253]: ERROR:  Gateway certificate validation failed, and the certificate digest in not in the local whitelist. If you trust it, rerun with:
NetworkManager[1253]: ERROR:      --trusted-cert 2a1sb23334ad18fdgeh21h5hff89xc19ec4ef5acc8ac3bee3e1e99d740b5sse42

Básicamente, no está dejando conectar debido a que no se ha podido validar la cadena de confianza (trust chain) del certificado, probablemente por ser autofirmado. La solución la da el mismo error, y consiste en añadir como trusted/whitelist el certificado en la configuración de esa VPN:

# pwd
/etc/NetworkManager/system-connections
root@foo_vm:[system-connections] # cat foo_VPN
[connection]
id=foo_VPN
uuid=d8e2vdfc-5d33-43d3-8feb-3s1a2d13e92e
type=vpn
autoconnect=false
permissions=


[vpn]
gateway=10.0.0.10:10443
otp-flags=0
password-flags=1
user=nologin
service-type=org.freedesktop.NetworkManager.fortisslvpn
trusted-cert = 2a1sb23334ad18fdgeh21h5hff89xc19ec4ef5acc8ac3bee3e1e99d740b5sse42
[...]

Una vez modificado, sólo falta reiniciar NetworkManager y la conexión VPN se debería poder establecer correctamente:

root@foo_vm:[system-connections] # service NetworkManager restart
Redirecting to /bin/systemctl restart NetworkManager.service