面对使用iPhone(Defult Cisco VPN客户端)和Strongswan 4.5.0服务器build立VPN连接(IKEv1)的问题

我正在使用iPhone(Defult Cisco VPN客户端)和Strongswan 4.5.0服务器build立VPN连接(IKEv1)。

Strongswan服务器运行在Ubuntu Linux上,连接到一些wifi热点。 这是使用的指南 。 我生成CA,服务器和客户端证书,唯一区别在下面提到。

“在生成服务器证书的同时,按照CN = vpn.strongswan.org的链接,我将CN名称更改为CN = 192.168.43.212。

一旦生成证书,以下(clientCert.p12和caCert.pem)通过邮件发送到手机并安装在iphone上。 安装后,我注意到证书也被认为是可信的。

以下是分配给各种接口的IP地址

Linux服务器wlan0接口ip服务器运行的地方:192.168.43.212 Iphone eth0接口ip地址:192.168.43.72。 iphone也附带了相同的wifi热点。

以下是客户端configuration的快照。

  • 说明强大的天鹅
  • 服务器192.168.43.212
  • 帐户ipsecvpn
  • 密码***********
  • 使用证书打开
  • 证书客户端

上面的用户名和密码与ipsec.secrets文件同步。 我正在使用下面的ipsec.confconfiguration:

# basic configuration config setup plutodebug=all # crlcheckinterval=600 # strictcrlpolicy=yes # cachecrls=yes nat_traversal=yes # charonstart=yes plutostart=yes # Add connections here. # Sample VPN connections conn ios1 keyexchange=ikev1 authby=xauthrsasig xauth=server left=%defaultroute leftsubnet=0.0.0.0/0 leftfirewall=yes leftcert=serverCert.pem right=192.168.43.72 rightsubnet=10.0.0.0/24 rightsourceip=10.0.0.2 rightcert=clientCert.pem pfs=no auto=add 

有了上面的configuration,当我在iphone上启用VPN时,它说

无法validation服务器证书。

我在Linux服务器上运行了Wireshark,观察到最初在客户端和服务器之间发生了一些ISAKMP消息交换,这是成功的,但在授权之前,客户端正在发送一些信息性消息,

无法validation服务器证书。

在Strongswan服务器上捕获日志并在服务器日志中logging下面的错误:

从auth.log

 Apr 25 20:16:08 Linux pluto[4025]: | ISAKMP version: ISAKMP Version 1.0 Apr 25 20:16:08 Linux pluto[4025]: | exchange type: ISAKMP_XCHG_INFO Apr 25 20:16:08 Linux pluto[4025]: | flags: ISAKMP_FLAG_ENCRYPTION Apr 25 20:16:08 Linux pluto[4025]: | message ID: 9d 1a ea 4d Apr 25 20:16:08 Linux pluto[4025]: | length: 76 Apr 25 20:16:08 Linux pluto[4025]: | ICOOKIE: f6 b7 06 b2 b1 84 5b 93 Apr 25 20:16:08 Linux pluto[4025]: | RCOOKIE: 86 92 a0 c2 a6 2f ac be Apr 25 20:16:08 Linux pluto[4025]: | peer: c0 a8 2b 48 Apr 25 20:16:08 Linux pluto[4025]: | state hash entry 8 Apr 25 20:16:08 Linux pluto[4025]: | state object not found Apr 25 20:16:08 Linux pluto[4025]: **packet from 192.168.43.72:500: Informational Exchange is for an unknown (expired?) SA** Apr 25 20:16:08 Linux pluto[4025]: | next event EVENT_RETRANSMIT in 8 seconds for #8 Apr 25 20:16:16 Linux pluto[4025]: | Apr 25 20:16:16 Linux pluto[4025]: | *time to handle event Apr 25 20:16:16 Linux pluto[4025]: | event after this is EVENT_RETRANSMIT in 2 seconds Apr 25 20:16:16 Linux pluto[4025]: | handling event EVENT_RETRANSMIT for 192.168.43.72 "ios1" #8 Apr 25 20:16:16 Linux pluto[4025]: | sending 76 bytes for EVENT_RETRANSMIT through wlan0 to 192.168.43.72:500: Apr 25 20:16:16 Linux pluto[4025]: | a6 a5 86 41 4b fb ff 99 c9 18 34 61 01 7b f1 d9 Apr 25 20:16:16 Linux pluto[4025]: | 08 10 06 01 e9 1c ea 60 00 00 00 4c ba 7d c8 08 Apr 25 20:16:16 Linux pluto[4025]: | 13 47 95 18 19 31 45 30 2e 22 f9 4d 85 2c 27 bc Apr 25 20:16:16 Linux pluto[4025]: | 9e 9b e1 ae 1e 35 51 6f ab 80 f5 73 3c 15 8d 20 Apr 25 20:16:16 Linux pluto[4025]: | 4b 46 47 86 50 24 3f 13 15 7d d5 17 Apr 25 20:16:16 Linux pluto[4025]: | inserting event EVENT_RETRANSMIT, timeout in 40 seconds for #8 Apr 25 20:16:16 Linux pluto[4025]: | next event EVENT_RETRANSMIT in 2 seconds for #10 Apr 25 20:16:16 Linux pluto[4025]: | rejected packet: Apr 25 20:16:16 Linux pluto[4025]: | Apr 25 20:16:16 Linux pluto[4025]: | control: Apr 25 20:16:16 Linux pluto[4025]: | 30 00 00 00 00 00 00 00 00 00 00 00 0b 00 00 00 Apr 25 20:16:16 Linux pluto[4025]: | 6f 00 00 00 02 03 03 00 00 00 00 00 00 00 00 00 Apr 25 20:16:16 Linux pluto[4025]: | 02 00 00 00 c0 a8 2b 48 00 00 00 00 00 00 00 00 Apr 25 20:16:16 Linux pluto[4025]: | name: Apr 25 20:16:16 Linux pluto[4025]: | 02 00 01 f4 c0 a8 2b 48 00 00 00 00 00 00 00 00 Apr 25 20:16:16 Linux pluto[4025]: **ERROR: asynchronous network error report on wlan0 for message to 192.168.43.72 port 500, complainant 192.168.43.72: Connection refused [errno 111, origin ICMP type 3 code 3 (not authenticated)]** 

有人请提供一些关于这个错误的更新和如何解决这个问题。

根据Apple的文档 ,网关的IP地址或DNS名称必须包含在证书中的subjectAltName中。 在使用OpenSSL生成证书时使用以下内容。

 subjectAltName = IP:192.168.43.212 

以上是否实际需要可能取决于您的设备上的iOS版本。 在iOS 5.1中,网关的身份似乎不被validation。

以上声明仅适用于混合身份validation。 如果客户端使用证书进行身份validation,则实际validation网关身份。

编辑

有些实验表明,将IP地址作为通用名称(CN)添加到证书的专有名称(DN)即可,但只有在证书中没有任何subjectAltNames时才足够。 如果这样做,则必须将IP地址添加为subjectAltName。

另外,在这里提到你的陈述:

“在生成服务器证书的同时,按照CN = vpn.strongswan.org的链接,我将CN名称更改为CN = 192.168.43.212。

你真的有一个。 (点)在您的CN结束? 如果是这样,请删除它。