iPhone IKEv2 到 RouterOS:哪个标识符放在哪里
四项独立的声明决定 iOS 上的 IKEv2 隧道:拨打的地址、期望的服务器身份、自报的客户端身份,以及支撑该声明的证书材料。
到达 MikroTik 网关只解决 IKEv2 部署的传输部分,仅此而已。接下来,四项独立的声明决定隧道能否建立:手机拨打的地址、它期望的服务器身份、它为自身声明的身份,以及支撑该声明的证书材料。请按此顺序检查,并在第一项与网关所呈现的内容不符时停下。每一项都在不同位置编辑,因此改错一处通常只是把故障移走,而不是修好它。
| Setting | What it decides | What it has to agree with |
|---|---|---|
| Remote address | where IKE packets are sent | a reachable name or address for the gateway |
| Remote Identifier | which server identity is expected | the gateway certificate name and the peer identity RouterOS presents |
| Local Identifier | who the phone claims to be | the client certificate name and the RouterOS identity entry |
| Certificate payload | trust plus proof of key possession | the issuing chain and a usable client private key |
按交换使用这些字段的顺序检查配置文件
远程地址是第一个 IKE 数据包的目的地,仅此而已。远程标识符是手机期望网关证明其为谁的那个名称,它是名称,不是路由。用同一个主机名填满两者,只有当网关证书带有该名称时才有效;不带该名称时,失败的样子却像路由问题。请把配置文件读成一串声明,而不是一份待填写的字段清单。
本地标识符是手机自身的声明,它必须是 RouterOS 的身份条目为手机所出示的客户端证书所接受的名称。若两者不一致,网关会在证书本身验证通过之后拒绝连接,日志看起来像授权问题,而不是命名问题。
拿这些标识符与网关所呈现的内容对照
为证书认证配置的 RouterOS 对等条目会出示自己的证书,其身份即取自该证书,除非你另有配置。如果手机的远程标识符写的是网关的 DNS 名称,网关证书就需要在手机能接受的位置带有该名称,通常是主体备用名称。为另一个通用名称签发的证书即便密钥和链都完美也无法通过验证。
受管理的 Apple 描述文件还可能带有证书名称限制,它会在标识符字段之外额外评估。请检查载荷,而不要从设置界面显示的内容推断验证名称,因为两者并不是同一个设置。
检查客户端证书是一把密钥,而不只是信任锚
导入 CA 证书只是给了手机验证网关的依据。它并没有给手机客户端身份,而证书认证需要客户端叶证书及其私钥通过经批准的注册途径一起交付。不含私钥构建的 PKCS#12 会生成一个能顺利安装、却什么也认证不了的描述文件。
客户端叶证书还需要 RouterOS 一侧所期望的身份,也就是说主体或主体备用名称必须与相应的身份配置一致。从同一个 CA 签发客户端和服务器证书会让证书链方便,但不会让两张叶证书可以互换。
检查 RouterOS 策略是否接受该名称
在网关上,对等条目决定交换模式和认证方法,身份条目则把被接受的远程身份绑定到证书以及随后的策略。在 RouterOS v7 中,这一对通过 IPsec 的对等与身份条目表达,例如带有 auth-method=digital-signature 的 IKEv2 对等。请检查你所安装版本中的实际菜单内容,而不是为旧版本写的教程。
这里也是修正不一致最省事的地方,因为网关能同时告诉你它收到的身份和它想要的身份。为了压掉报错而放宽可接受的身份,会移除让这次部署有意义的绑定。
在改动任何东西之前,先判断是哪一阶段失败
在两端读取这次尝试,并在更改提案之前对其分类。提案不一致、缺少签名密钥、签发者不受信任、对等标识符错误、客户端授权被拒,从手机侧看都像一条死掉的隧道,而各自的负责方不同。一次改掉全部五项设置,保证你从结果里什么都学不到。
记录所呈现的身份、期望的身份、证书的签发者与序列号,以及相关策略名称,同时把私钥和描述文件的机密排除在该记录之外。认证成功后,测试一个私有服务及其回应,因为地址分配、选择符、DNS 和访问策略在 IKE 交换结束后仍然必须工作。