Guest User!

You are not Sophos Staff.

This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Update on connecting to OpenVPN Server

I made some progress manually converting an ovpn file into an apc file. I have been able to get utm to accept the file. However, utm will not connect to the server.

Here is what appears to be the problem from the log:

2013:03:03-15:51:20 utm9 openvpn[20476]: VERIFY OK: depth=2, C=NA, ST=None, L=None, O=Mullvad, CN=Mullvad CA, emailAddress=info@mullvad.net
2013:03:03-15:51:20 utm9 openvpn[20476]: VERIFY OK: depth=1, C=NA, ST=None, L=None, O=Mullvad, CN=master.mullvad.net, emailAddress=info@mullvad.net
2013:03:03-15:51:20 utm9 openvpn[20476]: VERIFY X509NAME ERROR: C=NA, ST=None, L=None, O=Mullvad, CN=se2.mullvad.net, emailAddress=info@mullvad.net, must be C=NA, L=None, O=Mullvad, CN=se2.mullvad.net, emailAddress=info@mullvad.net
2013:03:03-15:51:20 utm9 openvpn[20476]: TLS_ERROR: BIO read tls_read_plaintext error: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
2013:03:03-15:51:20 utm9 openvpn[20476]: TLS Error: TLS object -> incoming plaintext read error

It seems to be complaining about the ST field in the server DN.

Here is a link to a screen capture of the apc file that was loaded into utm and resulted in the log file above, opened in notepad++:


You can see that there is no ST field in the server DN. (In case you're wondering, the vpn server does not rely upon authentication. It simply uses the key. The username and password fields are placeholders.)

Since I have nothing else to try, if I assume the problem is that utm is unhappy with the format of the server DN due to the missing ST field, and correct it to what utm seems to be asking for, it rejects the apc file when I try to load it, saying the config is corrupt. I'm quite sure the file is formatted correctly (the character preceding the server DN is the length in hex), but it obviously utm is not happy with it.

Here is a link to apc file that seems like it should be correct, but is rejected:


I was able to partially decode the apc file from this snip out of here.

0x04 0x06 0x04 1234 0x04 0x04 0x04 0x08 0x03 0x0C 0x00 0x00 0x00 0x0d 0x0a
0x03 tcp 0x08 0x00 0x00 0x00 protocol 0x0d 0x0a
0x03 MD5 0x18 0x00 0x00 0x00 authentication_algorithm 0x01 0x49 0x0e 0x00 0x00  0x0a 
0x0b 0x00 0x00 0x00 certificate 0x01 0x77 0x0c 0x00 0x00  0x0a
0x07 0x00 0x00 0x00 ca_cert 0x01 0x77 0x03 0x00 0x00  0x0a
0x03 0x00 0x00 0x00 key 0x0a
0x0e REF_1234567890 0x08 0x00 0x00 0x00 username 0x08 0x81 0x0b 0x00 0x00 compression 0x0a 
0x0b AES-128-CBC 0x14 0x00 0x00 0x00 encryption_algorithm 0x0a
0x20 1234567890123456789012 0x08 0x00 0x00 0x00 password 0x0a
0x61 /C=country/L=Town/O=Organization/CN=hostname/emailAddress=me@my.org 0x09 0x00 0x00 0x00 server_dn 0x0a
0x03 443 0x0b 0x00 0x00 0x00 server_port 0x0a
0x08 astaro01 0x0e 0x00 0x00 0x00 server_address 0x00

ASIDE: My editorial comment on the apc file format, as an engineer, is that it's one the most bizarre formats I've ever seen. Whoever thought it was a good idea to intermix ascii and hex in one file really deserves to be locked up in stocks and have peasants throw rotten eggs and tomatoes at him. The file is very difficult to decode and also very difficult to edit. It would be impossible without notepad++ or another hex editor. Ever heard of XML?



I have found a number of changes in the apc file format since Patrick Schneider was looking at it, including the header and the field for compression, which I was able to figure out, but I have no idea what the "engine" field in the third last line of the apc file is, nor do I know why utm is not happy with the modified file that it's rejecting.

If someone else who's trying to get this working wants to collaborate, let me know. I'd be happy to share my work.

However, I've said this before and I'll say it again. Sophos could make this matter a lot simpler if someone would disclose the format of the apc file. Why the silence? What do you have to hide? Surely you don't think anyone will copy the apc file format do you?

PS. If the tone of my post gives you the impression that I'm not very happy with sophos, it's because I'm not very happy with sophos.


This thread was automatically locked due to age.
Parents
  • I ended up using a dd-wrt router which acts like an openvpn client and has only one client, the UTM gateway which connects to it (it's in DMZ). The rest of the devices connect directly to the gateway. Really annoying issue, but this could be a workaround if you have a spare dd-wrt compatible router...

    EDIT: you can also disable the wireless radio on the router if you want to be sure no external clients connect to it and skip the gateway...
Reply
  • I ended up using a dd-wrt router which acts like an openvpn client and has only one client, the UTM gateway which connects to it (it's in DMZ). The rest of the devices connect directly to the gateway. Really annoying issue, but this could be a workaround if you have a spare dd-wrt compatible router...

    EDIT: you can also disable the wireless radio on the router if you want to be sure no external clients connect to it and skip the gateway...
Children
  • I took another look at this and made some progress. I was able to hack a .apc file and insert my ca, cert and key, as well as the set the applicable config parameters. The vpn still would not start, due to the server not using tls-remote. The only way around this was to edit /var/chroot-openvpn/etc/openvpn/client/config-default. The actual config file is created on the fly in a dynamically created directory, so there is no way to simply edit the config settings directly. [:@] It's an ugly hack, but by making this change, I was able to get the vpn to at least start, but the next problem was when the server pushed the route down to the client.

    Here is the log:

    2013:03:27-18:49:40 utm9 openvpn[32023]: OpenVPN 2.1.1 i686-suse-linux [SSL] [LZO2] [EPOLL] built on Jul 9 2012
    2013:03:27-18:49:40 utm9 openvpn[32023]: MANAGEMENT: client_uid=0
    2013:03:27-18:49:40 utm9 openvpn[32023]: MANAGEMENT: client_gid=0
    2013:03:27-18:49:40 utm9 openvpn[32023]: MANAGEMENT: unix domain socket listening on /var/run/openvpn_mgmt_REF_SslCliMullvad
    2013:03:27-18:49:40 utm9 openvpn[32023]: NOTE: OpenVPN 2.1 requires '--script-security 2' or higher to call user-defined scripts or executables
    2013:03:27-18:49:40 utm9 openvpn[32023]: PLUGIN_INIT: POST /usr/lib/openvpn-utm.so '[/usr/lib/openvpn-utm.so] [REF_SslCliMullvad]' intercepted=PLUGIN_UP|PLUGIN_DOWN
    2013:03:27-18:49:40 utm9 openvpn[32023]: LZO compression initialized
    2013:03:27-18:49:40 utm9 openvpn[32023]: Control Channel MTU parms [ L:1542 D:138 EF:38 EB:0 ET:0 EL:0 ]
    2013:03:27-18:49:40 utm9 openvpn[32023]: Data Channel MTU parms [ L:1542 D:1450 EF:42 EB:135 ET:0 EL:0 AF:3/1 ]
    2013:03:27-18:49:40 utm9 openvpn[32023]: Local Options hash (VER=V4): '41690919'
    2013:03:27-18:49:40 utm9 openvpn[32023]: Expected Remote Options hash (VER=V4): '530fdded'
    2013:03:27-18:49:40 utm9 openvpn[32025]: Socket Buffers: R=[212992->131072] S=[212992->131072]
    2013:03:27-18:49:40 utm9 openvpn[32025]: UDPv4 link local: [undef]
    2013:03:27-18:49:40 utm9 openvpn[32025]: UDPv4 link remote: **.21.99.21:1194
    2013:03:27-18:49:40 utm9 openvpn[32025]: TLS: Initial packet from **.21.99.21:1194 (via ***.20.116.5), sid=bd5c4ac2 0358a570
    2013:03:27-18:49:42 utm9 openvpn[32025]: VERIFY OK: depth=2, C=NA, ST=None, L=None, O=Mullvad, CN=Mullvad CA, emailAddress=info@mullvad.net
    2013:03:27-18:49:42 utm9 openvpn[32025]: VERIFY OK: depth=1, C=NA, ST=None, L=None, O=Mullvad, CN=master.mullvad.net, emailAddress=info@mullvad.net
    2013:03:27-18:49:42 utm9 openvpn[32025]: Validating certificate key usage
    2013:03:27-18:49:42 utm9 openvpn[32025]: ++ Certificate has key usage 00a0, expects 00a0
    2013:03:27-18:49:42 utm9 openvpn[32025]: VERIFY KU OK
    2013:03:27-18:49:42 utm9 openvpn[32025]: Validating certificate extended key usage
    2013:03:27-18:49:42 utm9 openvpn[32025]: ++ Certificate has EKU (str) TLS Web Server Authentication, expects TLS Web Server Authentication
    2013:03:27-18:49:42 utm9 openvpn[32025]: VERIFY EKU OK
    2013:03:27-18:49:42 utm9 openvpn[32025]: VERIFY OK: depth=0, C=NA, ST=None, L=None, O=Mullvad, CN=se2.mullvad.net, emailAddress=info@mullvad.net
    2013:03:27-18:49:46 utm9 openvpn[32025]: Data Channel Encrypt: Cipher 'BF-CBC' initialized with 128 bit key
    2013:03:27-18:49:46 utm9 openvpn[32025]: Data Channel Decrypt: Cipher 'BF-CBC' initialized with 128 bit key
    2013:03:27-18:49:46 utm9 openvpn[32025]: Control Channel: TLSv1, cipher TLSv1/SSLv3 DHE-RSA-AES256-SHA, 2048 bit RSA
    2013:03:27-18:49:46 utm9 openvpn[32025]: [se2.mullvad.net] Peer Connection Initiated with **.21.99.21:1194 (via ***.20.116.5)
    2013:03:27-18:49:48 utm9 openvpn[32025]: SENT CONTROL [se2.mullvad.net]: 'PUSH_REQUEST' (status=1)
    2013:03:27-18:49:49 utm9 openvpn[32025]: PUSH: Received control message: 'PUSH_REPLY,redirect-gateway def1 bypass-dhcp,dhcp-option DNS 10.8.0.1,route 10.8.0.1,topology net30,ifconfig 10.8.0.82 10.8.0.81'
    2013:03:27-18:49:49 utm9 openvpn[32025]: OPTIONS IMPORT: --ifconfig/up options modified
    2013:03:27-18:49:49 utm9 openvpn[32025]: OPTIONS IMPORT: route options modified
    2013:03:27-18:49:49 utm9 openvpn[32025]: OPTIONS IMPORT: --ip-win32 and/or --dhcp-option options modified
    2013:03:27-18:49:49 utm9 openvpn[32025]: ROUTE default_gateway=***.20.116.1
    2013:03:27-18:49:49 utm9 openvpn[32025]: TUN/TAP device tun0 opened
    2013:03:27-18:49:49 utm9 openvpn[32025]: TUN/TAP TX queue length set to 100
    2013:03:27-18:49:49 utm9 openvpn[32025]: /bin/ip link set dev tun0 up mtu 1500
    2013:03:27-18:49:49 utm9 openvpn[32025]: /bin/ip addr add dev tun0 local 10.8.0.82 peer 10.8.0.81
    2013:03:27-18:49:49 utm9 openvpn[32025]: PLUGIN_CALL: POST /usr/lib/openvpn-utm.so/PLUGIN_UP status=0
    2013:03:27-18:49:49 utm9 openvpn[32025]: /bin/ip route add **.21.99.21/32 via ***.20.116.1 dev tun0
    2013:03:27-18:49:49 utm9 openvpn[32025]: ERROR: Linux route add command failed: external program exited with error status: 2
    2013:03:27-18:49:49 utm9 openvpn[32025]: /bin/ip route add 0.0.0.0/1 via 10.8.0.81 dev tun0
    2013:03:27-18:49:49 utm9 openvpn[32025]: /bin/ip route add 128.0.0.0/1 via 10.8.0.81 dev tun0
    2013:03:27-18:49:49 utm9 openvpn[32025]: /bin/ip route add 10.8.0.1/32 via 10.8.0.81 dev tun0
    2013:03:27-18:49:49 utm9 openvpn[32025]: Initialization Sequence Completed


    If you have figured out how to work around this, please let me know.

    I'm very close to giving up on utm and setting up a pfsense router, which supports openvpn.
Share Feedback
×

Submitted a Tech Support Case lately from the Support Portal?