Libreswan 和 Mac OS X Big Sur 客户端问题

Libreswan 和 Mac OS X Big Sur 客户端问题

在花费大量时间解决客户端和服务器之间的连接问题后,我最终决定寻求帮助。

麻烦

Mac OS X Catalina 和 Linux 客户端可以很好地连接到服务器,但 Big Sur 不行。我还没有测试过 Mojave(理论上它的安全性会更松懈),也没有测试过 Windows 10。所有不同客户端的原因很复杂,但本质上我们是一家小型咨询公司,人们可以选择他们的平台,尽管较旧的 Mojave 只是因为他们还没有升级。无论哪种方式,这都会让我的工作(作为系统管理员)变得更加复杂,但事实就是如此。

服务器

  • RedHat 8.2。其中一个配置为 FIPS 模式,另一个则未配置,因为 OpenVPN。当然,两者都运行 Libreswan。
  • Libreswan 默认从 yum 安装。版本:3.29-7
  • IKEv2 使用 NSS,使用 RSA 证书进行身份验证。
  • 自定义根/中间 CA 基础设施。CRL 有效、集成且存储在 NSS 中。
  • 防火墙、路由表、sysctl 设置等似乎都配置正确。我使用的是带有自定义规则集的 iptables,而不是firewalld。

客户

  • Mac OS X Mojave、Catalina 和 Big Sur
  • Windows 10
  • Ubuntu 和 RedHat Linux 客户端

配置

客户端(Mobileconfig 将所有内容打包在一起)

我使用内置网络客户端,没有使用外部客户端来简化操作。大多数付费客户端似乎不支持 IKEv2,尽管我确实尝试过 GreenBow VPN。

VPN Payload 选项卡(Apple Configurator 2,Catalina/Big Sur 相同的数据/配置)

  1. 连接类型:IKEv2
  2. 服务器/远程标识符:服务器的 IP(服务器证书具有 SubjectAltName IP:服务器 IP)
  3. 本地标识符:假设不是 Big Sur,用户的电子邮件地址似乎在这里工作得很好。将其设置为空白也曾经有效。我不确定我做了什么更改,或者是否是我做的,但现在需要提供电子邮件。在同事的建议下,我也开始在客户端将其添加为 subjectAltName 电子邮件字段。
  4. 机器身份验证是证书、类型为 RSA 且 CA 颁发者名称设置正确。
  5. 所有其他安全内容(如 DH 参数和加密)都是中等级别,即 AES-256 和 DH21。我最初配置了 AES-256-GCM,以尝试避免与 SHA2 截断错误相关的任何问题。但这也不起作用。

证书有效负载选项卡

  1. 我以不同的方式配置了它。不过这里适用标准内容:.p12 身份,既有用户的私钥密码,也有导出密码(均为 23 个字符长)。时间长度为 920 天。我确实在某处读到过这可能是问题所在,但我发现客户端的日志并没有反映出对有效期长度感到不满。此外,我确实测试了更短的证书时间,大约 500 天,看看这是否有任何好处;结果没有。
  2. 在创建 PKCS12 期间,根/中间 CA 已包含在两种配置中:仅中间 CA 和完整 CA 链。这两种配置在 Big Sur 中都不起作用。
  3. 手动导入根/中间 CA;我已将两者标记为在所有用例中都受信任。我已将它们从登录钥匙串导入/复制到系统钥匙串。我已尽我所能找到有关此主题的所有方法,但均未奏效。

服务器端配置

auto=add
  authby=rsasig
  dpddelay=30
  dpdtimeout=120
  dpdaction=clear
  fragmentation=no (Big sur gives a different error with this on)
  modecfgpull=yes
  modecfgdns="Internal DNS"
  pfs=yes
  rekey=yes 
  salifetime=8h
  ikelifetime=8h
  left=PUBLIC IP
  leftcert=PUBLIC IP (I've tried varied forms here; @PUB... etc)
  leftid=PUBLIC IP
  leftsendcert=always
  leftsubnet=0.0.0.0/0
  leftrsasigkey=%cert
  leftmodecfgserver=yes
  rightaddresspool=Internal address pool
  right=%any
  rightrsasigkey=%cert
  rightmodecfgclient=yes

客户端日志

首先,我在这里看到的唯一 GUI 错误弹出窗口是“用户身份验证失败”。然后我使用以下命令在 Mac OS X 上获取更好/更有用的日志:

log show --start DATE --predicate 'senderImagePath contains[cd] "NetworkExtension"'

这些日志大部分都是 1000 行垃圾。话虽如此,但这似乎很有意义:

2021-08-10  0x1aa44    Error       0x0                   2375   0    NEIKEv2Provider: (NetworkExtension)  [com.apple.networkextension:] Certificate evaluation error =  kSecTrustResultRecoverableTrustFailure
2021-08-10   0x1aa44    Error       0x0                  2375   0     NEIKEv2Provider: (NetworkExtension) [com.apple.networkextension:] Certificate is not trusted
2021-08-10  0x1aa44     Error       0x0                  2375   0    NEIKEv2Provider:  (NetworkExtension) [com.apple.networkextension:] Certificate  authentication data could not be verified
2021-08-10   0x1aa44    Default     0x0                  2375   0     NEIKEv2Provider: (NetworkExtension) [com.apple.networkextension:] IKEv2IKESA[2.2, C4CABCADAB06C2CF-75E7F26177F83187] state Connecting  -> Disconnected error (null) -> Error Domain=NEIKEv2ErrorDomain  Code=8 "Authentication: Certificate authentication data could not be  verified" UserInfo={NSLocalizedDescription=Authentication: Certificate  authentication data could not be verified}
2021-08-10   0x1aa44    Error       0x0                  2375   0     NEIKEv2Provider: (NetworkExtension) [com.apple.networkextension:] IKEv2Session[2, C4CABCADAB06C2CF-75E7F26177F83187] Failed to process IKE  Auth packet (connect)

笔记

正如之前关于客户端配置的评论中所述……我似乎已经完成了这项工作。它甚至在 Apple Configurator 显示屏中也显示这是一个可接受的配置包。显然它没有经过 Apple 签名,但这并不奇怪。标准的手动 IKEv2 配置根本无法满足我们的需求。而且可以肯定的是,它也不起作用。至少对于任何比儿童玩具服务器更复杂的东西来说都是如此。

我也研究过证书透明度问题;不幸的是,这不是 Mac OS X 的解决方案。它只是适用于 iPad 等设备的解决方案。尝试在启用 CT 并接受某些证书的情况下将 mobileconfig 安装到 OS X,它会被拒绝并且不会安装 mobileconfig。

服务器端日志

我让外部服务器处于调试模式,以便生成比平时更多的日志。也就是说,在这种情况下,服务器似乎对交易非常满意,而客户端却讨厌......有些事情。我不知道是什么。

我看到的是这样的:

Aug 10  serverName pluto[]: | offered CA: 'C=US, ST=US, O=companyName, OU=OUCA, CN=CAName, [email protected]'
Aug 10  serverName pluto[]: "remote"[51] serverIP #90: IKEv2 mode peer ID is ID_USER_FQDN: '[email protected]'
Aug 10  serverName pluto[]: | received v2N_INITIAL_CONTACT                              
Aug 10  serverName pluto[]: | Received unknown/unsupported notify v2N_NON_FIRST_FRAGMENTS_ALSO - ignored
Aug 10  serverName pluto[]: | received v2N_MOBIKE_SUPPORTED while it did not sent       
Aug 10  serverName pluto[]: | received CERTREQ payload; going to decode it              
Aug 10  serverName pluto[]: | CERT_X509_SIGNATURE CR:                                   
Aug 10  serverName pluto[]: |   10 81 9a c1  4c a6 94 70  ca d1 7d 77  e1 5a ab 36      
Aug 10  serverName pluto[]: |   93 3d cd 39                                             
Aug 10  serverName pluto[]: |   cert blob content is not binary ASN.1                   
Aug 10  serverName pluto[]: | verifying AUTH payload                                    
Aug 10  serverName pluto[]: | required RSA CA is '%any'                                 
Aug 10  serverName pluto[]: | checking RSA keyid 'serverIP' for match with '[email protected]'
Aug 10  serverName pluto[]: | checking RSA keyid 'C=US, ST=US, L=City, O=companyName, OU=OUCA, CN=UserCN, [email protected]' for match with '[email protected]'                                                                                                                         
Aug 10  serverName pluto[]: | checking RSA keyid '[email protected]' for match with '[email protected]'
Aug 10  serverName pluto[]: | trusted_ca_nss: trustee A = 'C=US, ST=US, O=companyName, OU=OUCA, CN=CAName, [email protected]'
Aug 10  serverName pluto[]: | key issuer CA is 'C=US, ST=US, O=companyName, OU=OUCA, CN=CAName, [email protected]'
Aug 10  serverName pluto[]: | an RSA Sig check passed with *AwEAAbi14 [remote certificates]
Aug 10  serverName pluto[]: "remote"[51] serverIP #90: Authenticated using RSA          

服务器日志显示,Mac OS X Big Sur 客户端已正确验证身份。然后,它会继续构建 SA 关系等,正如您通常看到的那样。客户端会立即拒绝连接。我不明白的是 Catalina 和 Big Sur 之间有什么变化?

我没有找到有关此操作系统更改的任何信息。我​​不明白为什么 Apple 网站首页上没有用 60 号字体加粗显示这一点,哦,是的,有趣的是,我们完全改变了此版本操作系统中的 IPSEC 工作方式。而且,我厌倦了因为拔掉头发或反复撞墙而弄得头破血流。

任何帮助,将不胜感激。

相关内容