ocserv HEAD with iOS 6.1.2 fails after successful cert auth

Jason Cooper jason at lakedaemon.net
Wed Feb 27 14:04:57 EST 2013


Nikos,

I'm attempting to get the Cisco AnyConnect client to create tunnel to
the server.  For testing, I disabled user authentication (there is only
one cert in this CA).  My --debug log is below.  I added a an fprintf
into the do..while loop in tls_read().  It looks like the client is
closing the stream.

Before I go wandering down the wrong path, can you check my attached
config to make sure I'm not missing anything simple?

listening (TCP) on [0.0.0.0]:443...
listening (UDP) on [0.0.0.0]:443...
ocserv[4732]: [main] processed 1 CA certificate(s).
ocserv[4735]: [X.X.X.116]:54332 accepted connection
ocserv[4735]: [X.X.X.116]:54332 client certificate verification succeeded
ocserv[4735]: [X.X.X.116]:54332 TLS handshake completed
gnutls_record_recv returned 898
ocserv[4735]: [X.X.X.116]:54332 HTTP: User-Agent: AnyConnect AppleSSLVPN_Darwin_ARM (iPhone) 3.0.09115
ocserv[4735]: [X.X.X.116]:54332 HTTP: Host: lakedaemon.net
ocserv[4735]: [X.X.X.116]:54332 HTTP: Accept: */*
ocserv[4735]: [X.X.X.116]:54332 HTTP: Accept-Encoding: identity
ocserv[4735]: [X.X.X.116]:54332 HTTP: X-Transcend-Version: 1
ocserv[4735]: [X.X.X.116]:54332 HTTP: X-Transcend-Version: 1
ocserv[4735]: [X.X.X.116]:54332 HTTP: X-AnyConnect-Identifier-ClientVersion: 3.0.09115
ocserv[4735]: [X.X.X.116]:54332 HTTP: X-AnyConnect-Identifier-Platform: apple-ios
ocserv[4735]: [X.X.X.116]:54332 HTTP: X-AnyConnect-Identifier-PlatformVersion: 6.1.2
ocserv[4735]: [X.X.X.116]:54332 HTTP: X-AnyConnect-Identifier-DeviceType: iPhone4,1
ocserv[4735]: [X.X.X.116]:54332 HTTP: X-AnyConnect-Identifier-Device-UniqueID: YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
ocserv[4735]: [X.X.X.116]:54332 HTTP: X-Aggregate-Auth: 1
ocserv[4735]: [X.X.X.116]:54332 HTTP: Connection: close
ocserv[4735]: [X.X.X.116]:54332 HTTP: Content-Length: 320
ocserv[4735]: [X.X.X.116]:54332 HTTP: Content-Type: application/x-www-form-urlencoded
ocserv[4735]: [X.X.X.116]:54332 sending authentication request
ocserv[4732]: [main] assigning tun device vpn0
ocserv[4732]: [X.X.X.116]:54332 user 'C=US,O=Home,CN=jason_iphone' of group '[unknown]' authenticated
ocserv[4735]: [X.X.X.116]:54332 User 'C=US,O=Home,CN=jason_iphone' logged in
gnutls_record_recv returned 0
ocserv[4735]: [X.X.X.116]:54332 error receiving client data (0)


And, my sample.config:

### begin ############################################################
# User authentication method. Could be set multiple times and in that
# case
# all should succeed.
# Options: certificate, pam. 
auth = "certificate"
#auth = "pam"

# Use listen-host to limit to specific IPs or to the IPs of a provided
# hostname.
#listen-host = [IP|HOSTNAME]

# Limit the number of clients. Unset or set to zero for unlimited.
#max-clients = 1024
max-clients = 16

# Limit the number of identical clients (i.e., users connecting multiple
# times)
# Unset or set to zero for unlimited.
max-same-clients = 2

# TCP and UDP port number
tcp-port = 443
udp-port = 443

# Keepalive in seconds
keepalive = 32400

# Dead peer detection in seconds
dpd = 440

# MTU discovery (DPD must be enabled)
try-mtu-discovery = false

# The key and the certificates of the server
# The key may be a file, or any URL supported by GnuTLS (e.g., 
# tpmkey:uuid=xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx;storage=user
# or pkcs11:object=my-vpn-key;object-type=private)
server-cert = ./server.crt
server-key = ./server.key

# In case PKCS #11 or TPM keys are used the PINs should be available
# in files. The srk-pin-file is applicable to TPM keys only (It's the
# storage
# root key).
#pin-file = /path/to/pin.txt
#srk-pin-file = /path/to/srkpin.txt

# The Certificate Authority that will be used
# to verify clients if certificate authentication
# is set.
#ca-cert = /path/to/ca.pem
ca-cert = ./home_ca.crt

# The object identifier that will be used to read the user ID in the
# client certificate.
# The object identifier should be part of the certificate's DN
# Useful OIDs are: 
#  CN = 2.5.4.3, UID = 0.9.2342.19200300.100.1.1
#cert-user-oid = 0.9.2342.19200300.100.1.1

# The object identifier that will be used to read the user group in the
# client 
# certificate. The object identifier should be part of the certificate's
# DN
# Useful OIDs are: 
#  OU (organizational unit) = 2.5.4.11 
#cert-group-oid = 2.5.4.11

# A revocation list of ca-cert is set
#crl = /path/to/crl.pem

# GnuTLS priority string
tls-priorities = "PERFORMANCE:%SERVER_PRECEDENCE"

# The default server directory
#chroot-dir = /path/to/chroot

# The time (in seconds) that a client is allowed to stay connected prior
# to authentication
auth-timeout = 40

# Cookie validity time (in seconds)
# Once a client is authenticated he's provided a cookie with
# which he can reconnect. This option sets the maximum lifetime
# of that cookie.
cookie-validity = 172800

# A cookie database. If not set cookies are stored in memory and
# server restarts won't preserve them.
#cookie-db = /var/tmp/cookies.db

# Script to call when a client connects and obtains an IP
# Parameters are passed on the environment.
# USERNAME, GROUPNAME, HOSTNAME (the hostname selected by client), 
# DEVICE, IP_REAL (the real IP of the client), IP_LOCAL (the local IP
# in the P-t-P connect), IP_REMOTE (the VPN IP of the client).
#connect-script = /usr/bin/myscript
#disconnect-script = /usr/bin/myscript

# UTMP
use-utmp = true

# PID file
pid-file = /var/run/ocserv.pid

run-as-user = nobody
run-as-group = nogroup

# Network settings

device = vpn

ipv4-network = Z.Z.Z.0
ipv4-netmask = 255.255.255.0
# Use the keywork local to advertize the local P-t-P address as DNS
# server
# ipv4-dns = 192.168.2.1
ipv4-dns = X.X.X.3

#ipv6-address = 
#ipv6-mask = 
#ipv6-dns = 

# Leave empty to assign the default MTU of the device
# mtu = 

route = Z.Z.Z.0/255.255.255.0
route = X.X.X.0/255.255.255.0
#route = 192.168.5.0/255.255.255.0
###### end ##################################################

thx,

Jason.



More information about the openconnect-devel mailing list