跳转到主要内容

开放式网络配置参考

请先阅读实操指南

如果你需要在 FydeOS 云集管平台添加或修改受管 Wi-Fi、以太网或 VPN,请先阅读配置网络策略。只有需要查询完整 ONC 结构和字段定义时,再继续阅读本页。

适用范围

开放式网络配置(ONC)是 ChromeOS 用于描述 Wi-Fi、以太网、VPN、代理和证书设置的 JSON 格式。FydeOS 云集管平台通过 Business+ → Network Configuration 接收 ONC JSON,并将其作为策略下发到所选组织单位。

该页面配置的网络限制在用户登录后生效,不能提供首次设置或设备注册所需的网络连接。首次启动时,可以在注册镜像中预配置 Wi-Fi,也可以在设备上手动连接网络。

来源与兼容性

本页用于查询 Chromium ONC 结构。实际支持的字段和值取决于当前 Chromium ONC 文档和设备安装的 FydeOS 版本。云集管平台可能拒绝当前校验器或目标 FydeOS 版本不支持的字段。

请在试点组织单位中测试每份配置。即使 JSON 格式有效,其中的 SSID、证书引用、代理地址或身份验证方式仍可能填写错误。

概述

ONC 文档区分大小写。它可以描述网络连接和证书,但不能配置浏览器设置或无关的系统策略。常见的云集管平台操作请参阅“网络与证书”分类中的实操指南,只有需要查询字段定义时再使用本页。

ONC 如何下发到设备

  1. 在文本编辑器中创建或调整 JSON。
  2. 打开 Business+ → Network Configuration
  3. 选择目标组织单位,然后添加或编辑网络配置。
  4. 粘贴 JSON、保存策略,并检查校验错误。
  5. 先在一台试点设备上验证连接,再扩大应用范围。

详细设计

我们使用 JSON 格式的文件。JSON 文件中的字段总是区分大小写的,因此本节中字段的大小写必须完全一致。此外,作为显式常量调用的值也必须符合指定的大小写(例如,WiFi 不得写成 wifi 等)。本文件描述了一组最基本的必填字段和可选字段。不过,也可以创建其他字段,有关这些字段的指导原则,请参阅特定于实现的字段。

JSON 由包含 Type 字段的顶级字典组成,该字段的值必须是 EncryptedConfiguration(加密配置)或 UnencryptedConfiguration(未加密配置)。

有关 EncryptedConfiguration 类型的说明,请参阅下面的 "加密配置 "部分。EncryptedConfiguration 格式对未加密的 JSON 对象进行加密。

GUID 和更新

此格式允许导入更新的网络配置和证书,方法是为每个网络配置和证书提供 GUID,以便在将来的更新中修改甚至删除它们。

GUID 是非空字符串,具有稳定性和唯一性。当它们指向同一实体时,在 ONC 文件之间应保持一致。任何两个不同的网络或证书都不应具有相同的 GUID,同样,一个网络和证书也不应具有相同的 GUID。单个 ONC 文件不应包含两次相同的实体(具有相同的 GUID)。任何一项测试失败都表明 ONC 文件无效。

ONC 文件中引用的任何 GUID 必须出现在同一个 ONC 文件中。尤其是,在一个 ONC 文件中创建证书,并在另一个 ONC 文件的 NetworkConfiguration(网络配置)中引用该证书,而不在该文件中定义该证书,即使前一个 ONC 文件已被导入,也是错误的。

特定于实施的字段

由于有许多不同类型的连接,而且有些连接尚未预期,因此可能需要新字段。这种格式允许任意添加其他字段。

字段和值应遵循以下一般准则:

  • 证书(含密钥和不含密钥)应始终放在证书部分,特别是证书内容不应直接放在字段中。在引用证书时,应使用名称以 Ref 结尾、值为证书 GUID 的字段,如果证书不包含在该文件中,则可使用 CertificatePattern 类型、以 Pattern 结尾的字段描述其模式。
  • 字段应存在于层次结构中最特定的对象中,并以 CamelCase 风格命名。
  • 布尔值和整数应直接使用,而不是使用该类型的字符串化版本。

任何网络配置信息编辑器都应允许用户修改任何特定于实施的字段。它可能不会直接出现在用户界面中,但应能够导入带有此类设置的文件,并在导出时保留这些设置。

未加密配置

当顶层类型字段为 UnencryptedConfiguration 时,顶层 JSON 将具有 UnencryptedConfiguration 类型。

未加密配置类型

  • 类型

    • (可选,默认为 UnencryptedConfiguration)--字符串
    • 必须是 UnencryptedConfiguration。
  • 网络配置

    • (可选)- NetworkConfiguration 的数组
    • 描述 WiFi、以太网、VPN 和无线连接。
  • 证书

    • (可选)--证书数组
    • 包含以 X.509 或 PKCS#12 格式存储的证书。

  • 至少应有一个实际配置字段(NetworkConfigurations 或 Certificates),但如果没有此类字段,也不应视为错误。

全局网络配置

字段 GlobaNetworkConfiguration 具有 [GlobalNetworkConfiguration] (#GlobalNetworkConfiguration-type) 类型。

全局网络配置类型

GlobalNetworkConfiguration 包含适用于设备可能连接的所有网络的设置。客户端仅在设备级策略中支持该设置;如果该设置出现在用户策略中,客户端 ONC 验证器将失效。为避免 "卡死 "设备,这些策略只在用户会话中执行。登录屏幕会忽略这些策略,但仍可用于获取新策略或登录。帮助中心的一篇文章提醒管理员注意在 Chrome OS 中滥用该策略的影响。

  • 允许蜂窝热点

    • (可选,默认为 true)- 布尔型
    • 当此字段存在并设置为 "true "时,chromebook 用户将被允许在其设备上打开热点。如果存在激活的热点且该字段设置为 "false",热点将被关闭并向用户显示通知。
  • 允许蜂窝模拟锁定

    • (可选,默认为 true)- 布尔型
    • 此字段存在且设置为假时,SIM 卡不能在受管设备上被 PIM 锁定。如果当前活动 SIM 卡已被 PIN 锁定,当此字段为假时,将引导受管用户对 SIM 卡进行 PIN 解锁。
  • AllowOnlyPolicyCellularNetworks(仅允许政策蜂窝网络

    • (可选,默认为 false)- 布尔值
    • 当此字段存在并设置为 true 时,只能连接到策略中存在的蜂窝网络。不得添加或配置新的蜂窝网络。这样管理员就可以确保只有策略配置的蜂窝网络才能访问。
  • 仅允许策略网络自动连接

    • (可选,默认为 false)- 布尔值
    • 当此字段存在并设置为 "true "时,设备在启动时将仅自动连接到其策略中存在的网络。这对于用作信息亭等的设备来说是必要的,这样它们就不会在启动时被其他用户劫持。
  • 仅允许策略网络连接

    • (可选,默认为 false)- 布尔值
    • 当此字段存在并设置为 true 时,只能连接到策略中存在的网络。这样,学校就可以强制规定只能使用已知的好网络(如过滤后的学生网络)。与非托管网络的现有连接将在获取策略时断开。
  • 如果可用,仅允许策略网络连接

    • (可选,默认为 false)- 布尔值
    • 如果存在此字段,且设置为 "true",且策略网络在范围内,则只能连接到策略网络。如果范围内没有受管网络(例如用户的家),则设备可以连接到任何网络。如果启用,并且网络扫描显示了新的策略管理网络,设备将自动切换到管理网络。
  • 允许 APN 修改

    • (可选,默认为 true)- 布尔型
    • 只有当管理员没有为 SIM 卡指定 APN 时才相关。请注意,用户不能修改任何管理员指定的 APN。当此字段存在并设置为假时,用户将无法添加、修改和使用自己的自定义 APN,以使用未由管理员指定 APN 的蜂窝网络。此字段未设置或设置为 true 时,用户将对没有 AdminAssignedAPNIds 的 eSIM 以及没有 PSIMAssignedAPNIds 的任何 pSIM 拥有上述功能。
  • 允许文本信息

    • (可选,默认为未设置)--字符串
    • 当此字段存在并设置为允许时,将显示文本消息通知。当此字段设置为 "抑制 "时,将不显示文本信息通知,文本信息将被永久删除。当此字段为未设置时,将默认显示文本信息通知,并允许用户配置抑制文本信息。
    • 允许的值是
      • 允许
      • 抑制
      • 取消设置
  • BlacklistedHexSSIDs

    • 已删除,请使用 BlockedHexSSIDs 代替。

    • (可选)--字符串数组

    • 包含已阻止的十六进制 SSID 的字符串列表。此列表中包含的网络将不可连接。与此列表中包含的网络的现有连接将在获取策略时断开。

  • 阻止的十六进制 SSID

    • (可选)--字符串数组
    • 包含已阻止的十六进制 SSID 的字符串列表。此列表中包含的网络将不可连接。与此列表中包含的网络的现有连接将在获取策略时断开。
  • 禁用网络类型

    • (可选)--字符串数组
    • 允许的值是
      • 手机
      • 以太网
      • WiFi
      • 系绳
      • VPN
    • 包含禁用网络接口的字符串列表。
    • 在列表中添加 VPN 将禁用所有 VPN 类型。Android VPN 连接仍可成功建立,但很快就会被 Chrome OS 连接管理器关闭。
  • PSIMAdminAssignedAPNs

    • (可选)- APN 数组
    • 直接设置此字段不会产生任何影响,因为它会从提供的 PSIMAdminAssignedAPNIds 自动构建,每个 APNIds 都会映射到顶层 AdminAPNList 中的唯一 APN。对于所有 pSIM,CustomAPNList 将设置为 PSIMAdminAssignedAPNs。
  • PSIMAdminAssignedAPNIds

    • (可选)--字符串数组
    • 管理员添加的自定义 APN 配置 ID 的列表,这些 ID 映射到将应用于所有可用 pSIM 的 APN。PSIMAdminAssignedAPNs 将从提供的 PSIMAdminAssignedAPNIds 自动构建,每个 ID 映射到顶层 AdminAPNList 中的唯一 APN。
  • 推荐值为短暂值

    • (可选,默认为 false)- 布尔值
    • 当此字段设置为 "true "时,标记为 "推荐 "的全设备策略提供的网络配置设置将被视为短暂设置。这些设置将在重启(启动)、注销和设备闲置时恢复为策略建议值(或默认值)。
  • 用户创建的网络配置是短暂的

    • (可选,默认为 false)- 布尔值
    • 当此字段设置为 "true "时,用户创建的设备范围内的网络配置将被视为短暂配置。这些网络配置将在重启(启动)、注销和设备闲置时被删除。

网络配置

字段 NetworkConfigurations 是一个 NetworkConfiguration 类型对象的数组。

网络配置类型

  • 以太网

    • (类型为以太网时需要,否则忽略) - 以太网
    • 以太网设置。
  • GUID

    • (字符串
    • 此网络连接的唯一标识符,用于更新以前导入的配置。必须是非空字符串。
  • IPAddressConfigType(地址配置类型

    • (如果 Remove 为 false 则为可选项,否则忽略。如果指定了 NameServersConfigType,则默认为 DHCP) - string
    • 允许的值是
      • 字符串
      • 静态
    • 决定 IP 地址配置是静态配置(参见 StaticIPConfig)还是自动配置。请注意,这里的 DHCP 也包括通过其他动态 IP 分配协议(如 SLAAC)进行配置的情况。
  • 计量

    • (可选,默认为 "false")- 布尔值
    • 网络是否应被视为计量网络。这可能会影响自动更新频率,并可作为应用程序节省数据的提示。未指定时,系统会将其设置为检测到的值。
  • 流量计数器重置时间

    • (可选,默认为 "0")- 双
    • 以毫秒为单位的 UTC 时间戳,表示服务的流量计数器最后一次重置的时间。时间戳的值等于自 Windows 时间(1601-01-01 00:00:00 UTC)以来的毫秒数。
  • 名称服务器配置类型

    • (如果删除为 false 则为可选项,否则忽略。如果指定了 IPAddressConfigType,则默认为 DHCP) - string
    • 允许的值是
      • 字符串
      • 静态
    • 决定 NameServers 配置是静态配置(参见 StaticIPConfig)还是自动配置。请注意,这里的 DHCP 也包括通过其他动态名称服务器配置协议(如 IPv6 RDNSS 选项)进行配置的情况。
  • IPConfigs

    • (连接网络可选,只读)- IPConfig 数组
    • 与此连接相关的 IPConfig 属性数组。
  • 静态 IPConfig

    • (如果 IPAddressConfigType 或 NameServersConfigType 设为静态,则必填)- IPConfig
    • 在此 IPConfig 对象中设置的每个属性都会覆盖通过 DHCP 接收的相应参数。如果 IPAddressConfigType 设置为静态,则 IPAddress、Gateway 和 RoutingPrefix 为必填项。如果 NameServersConfigType 设置为静态,则 NameServers 为必填项。
  • 保存的 IPConfig

    • (对于已连接的网络为可选项,只读) - IPConfig
    • IPConfig 属性,包含在应用任何静态 IPConfig 参数之前从 DHCP 服务器接收的配置。
  • 名称

    • (如果移除为 false 则为必填项,否则忽略) - 字符串
    • 该连接的用户友好描述。此名称不会用于引用,也可能不是唯一的。相反,它可用于向用户描述网络。
  • 删除

    • (可选,默认为 false) - 布尔值
    • 如果设置,则删除此网络配置(只应设置 GUID)。
  • 代理设置

    • (如果删除为 false 则为可选项,否则忽略) - 代理服务器设置
    • 该网络的代理设置
  • VPN

    • (类型为 VPN 时为必填项,否则忽略) - VPN
    • VPN 设置。
  • WiFi

    • (类型为 WiFi 时需要,否则忽略) - WiFi
    • WiFi 设置。
  • 手机

    • (如果类型为手机,则为必填项,否则忽略) - 手机
    • 手机设置。
  • 系绳

    • (类型为 Tether 时需要,否则忽略) - Tether
    • 系绳设置。
  • 类型

    • (如果移除为 false 则为必填项,否则忽略) - 字符串
    • 允许的值是
      • 手机
      • 以太网
      • WiFi
      • VPN
    • 表示这是哪种连接。
  • 连接状态

    • (可选,只读)- 字串
    • 系统提供的此网络的当前连接状态。允许的值有
      • 连接
      • 连接
      • 未连接
  • 限制连接性

    • (可选,默认为 false,只读)- 布尔型
    • 如果已连接的网络与互联网的连接受限,例如连接在门户网站后面,或蜂窝网络未激活或需要付费,则为 True。
  • 可连接

    • (可选,只读) - 布尔型
    • 如果系统显示无需任何额外配置即可连接网络,则为 True。
  • 错误状态

    • (可选,只读)- 字串
    • 该网络当前的错误状态(如果有)。错误状态由系统提供,此处未明确定义。它们可能是,也可能不是人类可读的。如果网络未处于错误状态,此字段将为空或不存在。
  • Mac 地址

    • (可选,只读)- 字串
    • 网络的 MAC 地址。仅适用于已连接的非虚拟网络。格式为 00:11:22:AA:BB:CC
  • 来源

    • (可选,只读)- 字串
    • 表示网络是否已配置以及如何配置:
      • 用户:仅为活动用户配置,即非共享配置。
      • 设备:为设备(如笔记本电脑)的所有用户配置,即共享配置。
      • 用户策略:由活动用户的用户策略配置。
      • 设备策略:由设备的设备策略配置。
      • 无:未配置,例如可见但未配置的 WiFi 网络。
    • 允许的值是
      • 用户、
      • 设备、
      • 用户政策、
      • 设备策略、
  • 优先级

    • (可选)- 整数
    • 为该网络提供建议的优先级值。当有多个已配置的网络可用时,系统可使用该值来决定连接哪个网络(也可忽略)。
  • 检查自适应门户

    • (可选,默认为 False) - 字符串
    • 表示是否为该网络配置了捕获门户检测。
    • 网络是否配置了捕获门户检测。配置包括
      • False : 禁用了自选入口检测
      • True : 启用自带门户检测
      • HTTPOnly : 启用自带门户检测,门户检测器将只使用 HTTP 网络探测。
    • 允许的值是
      • 假、
      • 真、
      • 仅 HTTPOnly

以太网网络

对于以太网连接,类型必须设置为以太网,字段 Ethernet 必须设置为以太网类型对象。

以太网类型

  • 身份验证

    • (可选)- 字符串
    • 允许的值是
      • 8021X
  • EAP

    • (如果身份验证为 8021X,则需要,否则忽略) - EAP
    • EAP 设置。

IPConfig

IPConfig 类型的对象用于报告已连接网络的实际 IP 配置(参见 IPConfigs)、从 DHCP 接收的 IP 配置(参见 SavedIPConfig)和配置静态 IP 配置(参见 StaticIPConfig)。

IPConfig 类型

  • 类型

    • (可选,默认为 IPv4) - 字符串
    • 允许的值是
      • 字符串
      • IPv6
    • 描述配置类型。
  • IPAddress

    • (可选)- 字符串
    • 描述连接的 IPv4 或 IPv6 地址,具体取决于类型字段的值。它不应包含路由前缀(即不应以 /64 结尾)。
  • 路由前缀

    • (如果设置了 IPAddress,则为必填项,否则忽略) - 整数
    • Must be a number in the range [1, 32] for IPv4 and [1, 128] for IPv6 addresses.
    • 描述路由前缀。
  • 网关

    • (如果设置了 IPAddress,则为必填项。否则忽略) - 字符串
    • 描述用于配置的网关地址。必须与 Type(类型)字段中指定的地址类型相匹配。如果未指定,将使用 DHCP 值。
  • 名称服务器

    • (可选)--字符串数组
    • 用于名称服务器的地址数组。如果未指定,将使用 DHCP 值。
  • 搜索域名

    • (可选)--字符串数组
    • 字符串数组,用于附加到名称上以进行解析。数组中的项目不应以点开头。例如: ["corp.acme.org", "acme.org" ] :如果未指定,将使用 DHCP 值。
  • 包含的路由

    • (可选)--字符串数组
    • 字符串数组,每个字符串都是一个 CIDR 符号的 IP 块,其流量应由网络处理。示例: ["10.0.0.0/8", "192.168.5.0/24"]["10.0.0.0/8", "192.168.5.0/24"] .这些路由将补充该网络的现有路由;物理网络(蜂窝、以太网或 WiFi 类型)和 L2TP-IPsec VPN 网络将默认路由发送到它们的所有流量。ARCVPN 和 ThirdPartyVPN VPN 网络的路由由相应的 VPN 应用程序配置,OpenVPN VPN 网络的路由由 OpenVPN 服务器配置。
  • 排除路由

    • (可选)--字符串数组
    • 一个字符串数组,每个字符串都是一个 CIDR 符号的 IP 块,网络不应处理其流量。例如 ["10.0.0.0/8", "192.168.5.0/24"] .这些排除在外的 IP 地址块的优先级总是高于 IncludedRoutes 中包含的地址块。
  • WebProxyAutoDiscoveryUrl

    • (如果是 IPConfigs 的一部分,则为可选项,只读)- 字符串
    • 通过 DHCP 报告的该网络的 Web 代理自动发现 URL。
  • MTU

    • (可选)- 整数
    • 此网络的最大传输单位。如果未指定(或设置为 0),该值将自动确定。

WiFi 网络

对于 WiFi 连接,类型必须设置为 WiFi,字段 WiFi 必须设置为 WiFi 类型的对象。

WiFi 类型

  • AllowGatewayARPPolling

    • (可选,默认为 true)- 布尔值
    • 已删除。
  • 自动连接

    • (可选,默认为 false) - 布尔值
    • 表示网络在范围内时应自动连接。
  • BSSIDAllowlist(BSSID 允许列表

    • (可选)--字符串数组
    • 控制可连接到哪些 AP 的 BSSID 数组。BSSID 的格式应为以冒号分隔的八进制数(如 "00:01:02:03:04:05" )。
    • 值为
      • 空列表:WiFi 网络可与任何 AP 关联。
      • 非空列表:WiFi 网络只能与指定的 BSS 关联。
      • [ "00:00:00:00:00:00"]:表示网络不应与任何 AP 关联的特殊值。 "00:00:00:00:00:00" 不应是任何其他值列表的一部分,否则可能会导致错误。
  • BSSIDRequested(请求的 BSSID

    • (可选)- 字符串
    • AP 应连接的 BSSID。BSSID 的格式应为以冒号分隔的八进制数(如 "00:01:02:03:04:05" )。
    • 如果 AP 无法连接到所请求的 BSSID,则不会回退到另一个 BSSID,而是保持未连接状态。
    • 如果 BSSIDRequested 为空且 BSSIDAllowlist 不为空,则 WiFi 网络将遵循 BSSIDAllowlist 中的值
    • 如果 BSSIDAllowlist 为空,且 BSSIDRequested 不为空,则 WiFi 网络将遵循 BSSIDRequested 中的值
    • 如果 BSSIDRequested 和 BSSIDAllowlist 的值集不相连,则 WiFi 网络将无法连接。
    • 如果 BSSIDRequested 也在 BSSIDAllowlist 中,则网络将遵循 BSSIDRequested 中的值。
  • EAP

    • (如果安全性为 WEP-8021X、WPA-EAP 或后缀为 -Enterprise 的任何值;否则忽略)。
    • EAP 设置 - EAP。
  • HexSSID

    • (如果设置了 SSID,则为可选项;如果设置了 SSID,则默认为 SSID 的十六进制表示)--字符串
    • 网络 SSID 的十六进制表示。
  • 隐藏 SSID

    • (可选,默认为 false) - 布尔值
    • 表示 SSID 是否会被广播。
  • 密码

    • (如果安全性既不是 "无",也不是表示密钥生成使用 EAP 的任何值,则为必填项:WEP-8021X、WPA-EAP 或带有 -Enterprise 后缀的任何值;否则忽略)。
    • 字符串
    • 描述 WEP/WPA/WPA2/WPA3 连接的口令。如果使用 WEP-PSK,口令格式必须为 0x<hex-number>where <hex-number> 为 40、104、128 或 232 位。
  • 安全性

    • (字符串

    • WiFi 网络应使用的安全类型:

      • 无:不需要预先配置安全数据(如密码)的网络类别。这包括开放网络和使用 OWE 配置加密(纯加密或过渡加密)的网络。
      • WEP-PSK : (已弃用,使用基于 WPA 的安全性)有线等效加密。
      • WEP-8021X:(已废弃,使用基于 WPA 的安全性)动态 WEP - 使用 EAP 动态更改密钥的 WEP。
      • WPA-PSK:使用 WPA(任何版本)进行安全加密并使用基于预共享密钥(口令)的密钥推导的网络类别。该类别包括 WPA、WPA2 和 WPA3 以及所有可能的过渡模式(如 WPA-WPA2)。
      • WPA-EAP:类似于 WPA-PSK,但它不使用预共享密钥,而是使用 EAP 导出主会话密钥(用于加密/完整性检查的密钥层次结构从中导出,而不是像 WPA-PSK 那样导出密码)。
      • WPA2:仅允许 WPA2 的 WPA-PSK 网络。
      • WPA2-WPA3:允许 WPA2 或 WPA3 的 WPA-PSK 网络。
      • WPA3:仅允许 WPA3 的 WPA-PSK 网络。
      • WPA2-Enterprise:仅允许 WPA2 的 WPA-EAP 网络。
      • WPA2-WPA3-Enterprise:允许 WPA2 或 WPA3 的 WPA-EAP 网络。
      • WPA3-Enterprise : 仅允许 WPA3 的 WPA-EAP 网络。
      • WPA3-Enterprise_192:仅允许 WPA3 192 位模式的 WPA-EAP 网络。目前不受 ChromeOS 支持。注:过渡模式(如 WPA2-WPA3)适用于给定 BSS 配置为过渡模式的情况,或 ESS 由混合配置(一些使用 WPA2,一些使用 WPA3)的 BSS 组成的情况。
    • 允许的值是

      • WEP-PSK
      • WEP-8021X
      • WPA-PSK
      • WPA-EAP
      • WPA2
      • WPA2-WPA3
      • WPA3
      • WPA2-企业级
      • WPA2-WPA3-Enterprise
      • WPA3-企业级
      • WPA3-Enterprise_192
  • SSID

    • (如果设置了 HexSSID,则为可选项,否则忽略) - 字符串
    • 用于访问解码后的网络 SSID 的属性。

如果设置了该字段,但未设置 HexSSID,则其值将被 UTF-8 编码,十六进制表示法将分配给 HexSSID。要配置非 UTF-8 SSID,必须使用 HexSSID 字段。
读取网络配置时,可能会同时设置该字段和 HexSSID。因此,该字段是 HexSSID 的解码。如果可能,HexSSID 将使用 UTF-8 解码,否则将尽力猜测编码。

  • 信号强度

    • (可选,只读)- 整数
    • 该网络的当前信号强度,范围 [0, 100],由系统提供。如果网络不在范围内,该字段将设置为 "0 "或不存在。
  • 系留状态

    • 已删除,请参阅 "计量"。

  • HexSSID 或 SSID 中必须至少有一个字段。
  • 如果同时设置了 HexSSID 和 SSID,其值必须一致。

VPN 网络

VPN 有很多种,配置选项也千差万别。我们目前为几种常见配置提供标准配置选项,以后可能会增加更多选项。对于所有其他配置,应使用特定的实施字段。

对于 VPN 连接,类型必须设置为 VPN,字段 VPN 必须设置为 VPN 类型的对象。

VPN 类型

  • 自动连接

    • (可选,默认为 false) - 布尔值
    • 表示网络应自动连接。
  • 主机

    • (可选)- 字符串
    • 要连接的服务器的主机名或 IP 地址。唯一不需要主机的情况是对流量进行加密但不进行隧道传输的 VPN。独立 IPsec(v1 或 v2,基于证书或 PSK -- 这与 IPsec 上的 L2TP 不同)就是这样一种设置。对于所有其他类型的 VPN,"主机 "字段是必需的。
  • IPsec

    • (类型为 IPsec 或 L2TP-IPsec 时需要,否则忽略) - IPsec
    • IPsec 层设置。
  • L2TP

    • (类型为 L2TP-IPsec 时需要,否则忽略) - L2TP
    • L2TP 层设置。
  • OpenVPN

    • (如果类型为 OpenVPN 则需要,否则忽略) - OpenVPN
    • OpenVPN 设置。
  • 第三方 VPN

    • (类型为 ThirdPartyVPN 时为必填项,否则忽略) - ThirdPartyVPN
    • 第三方 VPN 提供商设置。
  • 类型

    • (字符串
    • 允许的值是
      • ARCVPN
      • IPsec
      • L2TP-IPsec
      • OpenVPN
      • 第三方 VPN
    • VPN 类型。

基于 IPsec 的 VPN 类型

IPsec 类型

  • 验证类型

    • (字符串
    • 允许的值是
      • 认证
      • EAP
      • PSK
    • 如果使用 Cert,则必须设置 ClientCertType 和 ServerCARefs(或已废弃的 ServerCARef)。
    • EAP 仅在 IKEVersion 为 2 时有效。
  • ClientCertPKCS11Id

    • (如果 ClientCertType 是 PKCS11Id,则为必填项,否则忽略)-- -
    • 格式为 slot:key_id 的 PKCS#11 标识。
  • 客户证书格式

    • (如果 ClientCertType 为模式,则为必填项,否则忽略) - CertificatePattern
    • 描述客户端证书的模式。
  • 客户证书配置文件 ID

    • (如果 ClientCertType 为 ProvisioningProfileId 则必填,否则忽略)--字符串
    • 要使用的客户证书的 ID。在 Chrome OS 上,这与 RequiredClientCertificateForUser 或 RequiredClientCertificateForDevice 策略中的 "cert_profile_id "字段相对应。
  • 客户端证书参考

    • (如果 ClientCertType 为 Ref,则为必填项,否则忽略)--字符串
    • 存储在证书部分的客户证书的引用。
  • 客户端证书类型

    • (如果 AuthenticationType(验证类型)为 Cert,则为必填项,否则忽略)--字符串
    • 允许的值有
      • PKCS11Id
      • 模式
      • ProvisioningProfileId
      • 参考
    • Ref、Pattern 和 ProvisioningProfileId 表示应使用相关属性识别客户证书。
    • PKCS11Id 用于表示本地存储中的证书,仅在描述本地配置时有效。
  • EAP

    • (如果 IKEVersion 为 2,则为可选项,否则忽略) - EAP
    • 表示应使用提供的参数进行 EAP 身份验证。
    • (如果 IKEVersion 为 1,则为可选项,否则忽略) - 字符串
    • 用于机器身份验证的组名。
  • IKEVersion

    • (必填)- 整数
    • 要使用的 IKE 协议版本。
  • 本地身份

    • (如果 IKEVersion 为 2,则为可选项,否则忽略) - 字符串
    • IKE 验证中使用的本地身份。
  • PSK

    • (如果 AuthenticationType 为 PSK,则为可选项,否则忽略) - string
    • 字符串
    • 预共享密钥。如果未指定,连接时会提示用户。如果已保存但不知道该值,可将其设置为空值,表示用户界面不需要提供该值。
  • 远程身份

    • (如果 IKEVersion 为 2,则为可选项,否则忽略) - 字符串
    • IKE 身份验证中使用的远程身份。
  • 保存凭据

    • (如果 AuthenticationType(验证类型)为 PSK,则为可选项,否则忽略,默认为 false)- 布尔值
    • 如果为假,则要求用户每次连接时都输入凭证 (PSK)。
  • 服务器 CARefs

    • (如果 AuthenticationType(身份验证类型)为 Cert,则为可选项,否则拒绝接受)。
    • 字符串数组
    • 用于验证主机证书链的证书中 CA 证书引用的非空列表。至少有一个 CA 证书必须匹配。如果设置了该字段,则必须取消设置 ServerCARef。
  • 服务器证书

    • (如果 AuthenticationType(验证类型)为 Cert,则为可选项,否则拒绝接受)- string
    • 已删除,请使用 ServerCARefs 代替。

证书中 CA 证书的引用。用于验证连接的证书颁发机构。如果设置了该字段,则必须取消设置 ServerCARefs。

  • XAUTH

    • (如果 IKEVersion 为 1,则为可选项,否则忽略) - XAUTH
    • 描述 XAUTH 证书。如果不存在此对象,则不使用 XAUTH。

  • 如果 AuthenticationType 设置为 Cert,则必须设置 ServerCARefs 或 ServerCARef。
  • 最多可以设置 ServerCARefs 和 ServerCARef 中的一个

L2TP 类型

  • LcpEchoDisabled

    • (可选,默认为 false) - 布尔值
    • 禁用通过 PPP LCP 帧进行的 L2TP 连接监控。这允许 VPN 客户端绕过不支持 LCP echo 功能的服务器实现。
  • 密码

    • (可选)- 字符串
    • 用户验证密码。如果未指定,则在连接时提示用户。
  • 保存凭据

    • (可选,默认为 false) - 布尔值
    • 如果为假,则要求用户每次连接时都输入凭据。
  • 用户名

    • (可选)- 字符串
    • 用户身份。该值受字符串扩展影响。如果未指定,将在连接时提示用户。

XAUTH 类型

  • 密码

    • (可选)- 字符串
    • XAUTH 密码。如果未指定,则会在连接时提示用户。
  • 保存凭据

    • (可选,默认为 false) - 布尔值
    • 如果为假,则要求用户每次连接时都输入凭据。
  • 用户名

    • (可选)- 字符串
    • XAUTH 用户名。该值受字符串扩展影响。如果未指定,将在连接时提示用户。

IPsec IKE v1 VPN 连接

VPN.Type 必须为 IPsec , IKEVersion 必须为 1。请勿用于 L2TP over IPsec。可用于仅机器验证的 IKEv1 或带有 XAUTH 的 IKEv1。请参阅下面描述的 IPsec 类型。

IPsec IKE v2 VPN 连接

VPN.Type 必须为 IPsec , IKEVersion 必须为 2。可与基于 EAP 的用户身份验证一起使用。

通过 IPsec 的 L2TP VPN 连接

L2TP over IPsec 有两种主要配置,取决于 IPsec 的验证方式。无论哪种情况,类型都必须是 L2TP-IPsec。具体说明如下。

使用预共享密钥的 L2TP over IPsec:

  • IPsec 字段必须存在,并具有以下设置:

  • IKEVersion 必须为 1。

  • AuthenticationType 必须为 PSK。

  • 不得设置 XAUTH。

  • 字段 L2TP 必须存在。

OpenVPN 连接和类型

VPN.Type 必须为 OpenVPN。

OpenVPN 类型

  • Auth

    • (可选,默认为 SHA1)--字符串
  • AuthRetry

    • (可选,默认为无 ) - 字符串
    • 允许的值是
      • none = 重试时出错失败
      • nointeract = 重试时不询问身份验证
      • interact = 每次都要求再次验证
    • 控制 OpenVPN 如何应对用户名/密码验证失败。
  • AuthNoCache

    • (可选,默认为 false) - 布尔值
    • 禁用内存中的证书缓存。
  • 密码

    • (可选,默认为 BF-CBC) - 字符串
    • 要使用的密码。
  • ClientCertPKCS11Id

    • (如果 ClientCertType 是 PKCS11Id,则为必填项,否则忽略)-- -
    • 格式为 slot:key_id 的 PKCS#11 标识。
  • 客户证书格式

    • (如果 ClientCertType 为模式,则为必填项,否则忽略) - CertificatePattern
    • 用于查找客户证书的模式。
  • 客户证书配置文件 ID

    • (如果 ClientCertType 为 ProvisioningProfileId 则必填,否则忽略)--字符串
    • 要使用的客户证书的 ID。在 Chrome OS 上,这与 RequiredClientCertificateForUser 或 RequiredClientCertificateForDevice 策略中的 "cert_profile_id "字段相对应。
  • 客户端证书参考

    • (如果 ClientCertType 为 Ref,则为必填项,否则忽略)--字符串
    • 存储在证书部分的客户证书的引用。
  • 客户端证书类型

    • (字符串
    • 允许的值有
      • PKCS11Id
      • 模式
      • ProvisioningProfileId
      • 参考
    • Ref、Pattern 和 ProvisioningProfileId 表示应使用相关属性识别客户证书。
    • PKCS11Id 用于表示本地存储中的证书,仅在描述本地配置时有效。
    • 无表示服务器配置为不需要客户证书。
  • CompLZO

    • (可选,默认为自适应)--字符串
    • 已删除,请使用带有 lzo 选项的 CompressionAlgorithm。
    • 决定快速 LZO 压缩,其他值为 true 和 false。
  • CompNoAdapt

    • (可选,默认为 false) - 布尔值
    • 已取消,请勿使用。
    • 禁用自适应压缩。
  • 压缩算法

    • (可选,默认为 None)--字符串
    • 指定要使用的压缩算法。
    • 允许的值是
      • 仅成帧
      • LZ4
      • LZ4-V2
      • LZO
  • 额外主机

    • (可选)--字符串数组
    • 如果客户端无法连接到主主机,要依次尝试的主机列表。
    • 主主机时依次尝试的主机列表。
  • 忽略默认路由

    • (可选,默认为 false) - 布尔值
    • 在连接激活时,忽略通往 VPN 网关的默认路由。只有当 OpenVPN 服务器推送了 "重定向网关 "选项时,客户端才会通过 VPN 创建默认路由。将此值设为 true 会导致客户端忽略服务器提供的任何 "重定向网关 "选项,从而确保 VPN 没有可用的默认路由。
  • 密钥方向

    • (可选)- 字符串
    • 与 --key-direction 一样传递。
  • NsCertType

    • (可选)- 字符串
    • 如果设置,则检查对等证书类型。如果已设置,则只应设置为服务器。
  • OTP

    • (如果 UserAuthenticationType(用户身份验证类型)为 OTP、PasswordAndOTP 或未设置,则为可选项,否则忽略,默认为空字符串)--字符串
    • 如果 UserAuthenticationType(用户身份验证类型)为 OTP 或 PasswordAndOTP,且未设置此字段,则会要求用户提供 OTP。OTP 不会被持久化,必须在每次尝试连接时提供。
  • 密码

    • (如果 UserAuthenticationType(用户身份验证类型)为 Password、PasswordAndOTP 或未设置,则为可选项,否则忽略,默认为空字符串)- string
    • 如果 UserAuthenticationType(用户身份验证类型)为 Password 或 PasswordAndOTP,且未设置此字段,则会要求用户提供密码。如果 SaveCredentials(保存凭据)为 true,则密码将被保存以备将来尝试连接时使用。否则,密码不会被保存,但仍有可能在连续的连接尝试中被重复使用(与 OTP 不同,OTP 永远不会被重复使用)。
  • 端口

    • (可选,默认为 1194)- 整数
    • 连接服务器的端口。
  • 端口

    • (可选,默认为 udp)- 字符串
    • 与服务器通信的协议。
  • PushPeerInfo

    • (可选,默认为 false) - 布尔值
  • 远程证书

    • (可选)- 字符串
    • 要求对等方证书是用该显式扩展密钥签署的,用 oid 表示。
  • 远程证书库

    • (可选,默认为 []) - 字符串数组
    • 要求使用给定的密钥使用数组。这些字符串是十六进制编码的数字。
  • RemoteCertTLS

    • (可选,默认为服务器) - 字符串
    • 允许的值是
      • 服务器
    • 要求根据 RFC3280 TLS 规则签署对等证书。
  • RenegSec

    • (可选,默认为 3600)- 整数
    • 在此秒数后重新协商数据通道密钥。
  • 保存凭据

    • (可选,默认为 false) - 布尔值
    • 如果为假,则要求用户每次连接时都输入凭据。
  • 服务器 CA 证书

    • (可选)--字符串数组
    • PEM 格式 CA 证书的非空列表,如果设置此字段,则必须取消设置 ServerCARef 和 ServerCARefs。
  • 服务器 CARefs

    • (可选)--字符串数组
    • 用于验证主机证书链的证书中 CA 证书引用的非空列表。至少有一个 CA 证书必须匹配。另请参阅 OpenVPN 命令行选项"--ca"。如果设置了该字段,则必须取消设置 ServerCARef。
  • 服务器证书

    • (可选)- 字符串
    • 已删除,请使用 ServerCARefs 代替。

证书中 CA 证书的引用。用于验证连接的证书颁发机构。如果设置了该字段,则必须取消设置 ServerCARefs。

  • 服务器 ertRef

    • (可选)- 字符串
    • 证书引用。同行的签名证书。
  • 服务器轮询超时

    • (可选)- 整数
    • 在尝试下一个服务器之前,请不要超过此秒数。
  • 整形器

    • (可选)- 整数
    • 如果未指定,则不限制带宽,否则将外发隧道数据的带宽限制为每秒此字节数。
  • 静态挑战

    • (可选)- 字符串
    • 用于静态挑战响应的字符串。请注意,回声总是要进行的。
  • TLSAuthContents

    • (可选)- 字符串
    • 如果未设置,则不使用 TLS Auth。如果设置,则为 TLS Auth 密钥内容(通常以"-----BEGIN OpenVPN 静态密钥...... "开头)。
  • TLSRemote

    • (可选)- 字符串
    • 如果设置,则只允许与 X509 名称或通用名称等于此字符串的服务器主机连接。
  • TLSVersionMin

    • (可选)- 字符串
    • 如果设置,则指定 OpenVPN 使用的最小 TLS 协议版本。
  • 用户验证类型

    • (可选,默认为 None)--字符串

    • 允许的值是

      • 密码
      • 密码和 OTP
      • OTP
    • 确定所需的用户身份验证形式:

      • PasswordAndOTP:该 VPN 需要密码和 OTP(可能为空)。两者都将在 "密码 "响应中使用 SCRv1 编码发送给服务器。
      • 密码:该 VPN 只需要一个密码,该密码将在 "password "响应(无 CRv1 或 SCRv1 编码)中不经修改地发送给服务器。
      • OTP:该 VPN 只需要 OTP,该 OTP 将在 "密码 "响应(无 CRv1 或 SCRv1 编码)中不经修改地发送到服务器。
      • 无:既不需要密码,也不需要 OTP。服务器不会请求密码。如果不设置,用户可以提供密码和 OTP(两者都不是必须的),网络管理员将在服务器发送静态挑战时以 SCRv1 编码发送两者。如果服务器不发送静态挑战,客户端将只回复密码(不含任何编码)。此行为已被弃用,新配置应明确设置上述值之一。

请参阅 "密码 "和 "OTP "字段配置密码和 OTP。

  • 用户名

    • (可选)- 字符串
    • OpenVPN 用户名。该值受字符串扩展影响。如果未指定,将在连接时提示用户。
  • 动词

    • (可选)- 字符串
    • 验证级别,如果未指定,默认为 OpenVpn 的默认级别。
  • 验证哈希值

    • (可选)- 字符串
    • 如果设置,该值将作为"--verify-hash "参数传递给 OpenVPN,指定一级证书的 SHA1 指纹。
  • 验证 X509

    • (可选)- VerifyX509
    • 如果设置,"--verify-x509-name "参数将与此对象的值一起传递给 OpenVPN,只有当主机的 X.509 名称等于给定的名称时,连接才会被接受。

  • 最多只能设置 ServerCARefs 和 ServerCARef 中的一个。

验证 X509 类型

  • 名称

    • (字符串
    • 与主机 X.509 名称进行比较的名称。比较哪个主机名取决于类型的值。
  • 类型

    • (可选)- 字符串
    • 决定将验证主机的哪个 X.509 名称。
    • 允许的值是
      • 名称
      • 名称前缀
      • 有关各值的含义,请参阅 OpenVPN 文档"--verify-x509-name"。如果未指定,默认为 OpenVPN 的默认值。

WireGuard 连接和类型

VPN.Type 必须为 WireGuard。

导线卫士类型

  • IPAddresses

    • (字符串数组
    • 要在本地 WireGuard 接口上配置的以字符串表示的 IP 地址数组(IPv6 不区分大小写)。
  • 私钥

    • (可选)- 字符串
    • wireguard 客户端对等设备的 base64 私钥。如果未设置,将生成一个随机密钥。
  • 同行

    • (必填)- WireGuardPeer 数组
    • 远程同行者列表。

WireGuardPeer 类型

  • 公钥

    • (字符串
    • 远程对等设备的 base64 公钥。
  • 预共享密钥

    • (可选)- 字符串
    • 客户端和远程对等设备之间的 base64 预共享密钥,用于额外的对称密钥加密。
  • 允许 IP

    • (字符串
    • 以逗号分隔的 IPv4 前缀列表,用于控制允许的传入流量和设置此对等设备的传出路由。
  • 端点

    • (字符串
    • 对等设备的物理 IP 或主机名和端口,用冒号分隔。
  • PersistentKeepalive

    • (可选,默认为 0)- 整数
    • 介于 1 和 65535 之间(含 65535)的秒间隔,表示为保持状态防火墙或 NAT 映射持续有效而向对等设备发送经过验证的空数据包的频率。设置为 0 将禁用此功能。

基于第三方 VPN 提供商的连接和类型

VPN.Type 必须为 ThirdPartyVPN。

第三方 VPN 类型

  • 扩展名 ID
    • (字符串
    • 该网络使用的第三方 VPN 提供商的扩展 ID。
  • 提供商名称
    • (可选,只读)- 字串
    • 此网络使用的第三方 VPN 提供商的名称。

客户证书模式

为了使客户能安全地通过 PKCS#10 格式或网络流程为其私钥配钥匙和申请证书,我们提供了其他证书模式类型。证书

证书模式类型

  • IssuerCARef

    • (可选)--字符串数组
    • 证书引用数组。必须至少有一个已签署客户证书。
  • 签发人

    • (可选)- IssuerSubjectPattern
    • 与签发人 X.509 设置匹配的模式。如果未指定,则只对 IssuerCARef 字段进行签名检查。证书签发人必须与该字段完全匹配,才能与模式相匹配。
  • 主题

    • (可选)- IssuerSubjectPattern
    • 与主题 X.509 设置相匹配的模式。如果未指定,则不检查主题设置,任何证书都会匹配。证书的主题必须与此字段完全匹配,才能符合模式。
  • 注册 URI

    • (可选)--字符串数组
    • 如果没有证书与此 CertificatePattern 匹配,ChromeOS 会打开数组中第一个具有受支持协议的 URI。该 URI 应说明如何获取证书,或代替用户获取证书。例如,数组可以先包含 chrome-extension://asakgksjssjwwkeielsjs/fetch-client-cert.html,再包含 http://intra/connecting-to-wireless.html。Chrome 在支持时使用扩展程序 URI,其他浏览器可以使用网页 URL。

IssuerSubjectPattern 类型

  • 通用名称

    • (可选)- 字符串
    • 如果存在,证书主体的 CommonName 必须与此字符串匹配。
  • 地点

    • (可选)- 字符串
    • 如果存在,证书主体的位置必须与此字符串匹配。
  • 机构

    • (可选)- 字符串
    • 如果存在,证书主体的至少一个组织必须与此字符串匹配。
  • 组织单位

    • (可选)- 字符串
    • 如果存在,证书主体的组织单位中至少有一个必须与此字符串匹配。

  • 要使 CertificatePattern 类型字段有效,必须提供 Subject(主体)、Issuker(签发人)或 IssuerCARef(签发人注释)中的一个字段。
  • 证书必须与证书模式中的所有字段匹配,才能被视为匹配。如果有多个证书匹配,将使用最新签发日期仍在过去的证书,因此该证书有效。
  • 如果未给出 EnrollmentURI 且未找到与此模式匹配的内容,导入工具可能会向用户显示错误。

代理设置

每个网络都可以配置使用代理。

代理设置类型

  • 类型

    • (字符串
    • 允许的值是
      • 直接、
      • 手动
      • PAC
      • WPAD
    • PAC 表示代理自动配置。WPAD 表示网络代理自动发现。
  • 手动

    • (如果类型为手动,则为必填项,否则忽略) - ManualProxySettings
    • 手动代理设置。
  • 排除域

    • (可选,如果类型为手动,否则忽略) - 字符串数组
    • 要排除代理设置的域和主机。
  • PAC

    • (类型为 PAC 时为必填项,否则忽略) - 字符串
    • 代理自动配置文件的 URL。

手动代理设置类型

  • HTTPProxy

    • (可选)- FTP 代理的代理位置
    • HTTP 代理的设置。
  • 安全 HTTP 代理

    • (可选)- FTP 代理的代理位置
    • 安全 HTTP 代理的设置。
  • FTPProxy(不支持)

    • (可选)- FTP 代理的代理位置
    • FTP 代理设置
  • SOCKS

    • (可选)- FTP 代理的代理位置
    • SOCKS 代理设置。

代理位置类型

  • 主机

    • (字符串
    • 用于代理的主机(或 IP 地址
  • 端口

    • (必填)- 整数
    • 代理使用的端口

EAP 配置

对于使用 802.1X 身份验证的网络,有一种 EAP 类型可用于配置身份验证。

EAP 类型

  • 匿名身份

    • (如果外部协议是 PEAP 或 EAP-TTLS,则为可选项,否则忽略)--字符串
    • 仅适用于隧道协议,表示向外部协议提交的用户身份。该值受字符串扩展的限制。如果未指定,则使用空字符串。
  • 客户端证书密钥对别名

    • (如果 ClientCertType 为 KeyPairAlias,则为必填项,否则忽略) - 字符串
    • 密钥对别名,指定存储在 Android 钥匙串中并允许用于 Wi-Fi 身份验证的客户端证书。
  • ClientCertPKCS11Id

    • (如果 ClientCertType 是 PKCS11Id,则为必填项,否则忽略)-- -
    • 格式为 slot:key_id 的 PKCS#11 标识。
  • 客户证书格式

    • (如果 ClientCertType 为模式,则为必填项,否则忽略) - CertificatePattern
    • 用于查找客户证书的模式。
  • 客户证书配置文件 ID

    • (如果 ClientCertType 为 ProvisioningProfileId 则必填,否则忽略)--字符串
    • 要使用的客户证书的 ID。在 Chrome OS 上,这与 RequiredClientCertificateForUser 或 RequiredClientCertificateForDevice 策略中的 "cert_profile_id "字段相对应。
  • 客户端证书参考

    • (如果 ClientCertType 为 Ref,则为必填项,否则忽略)--字符串
    • 存储在证书部分的客户证书的引用。
  • 客户端证书类型

    • (可选)- 字符串
    • 允许的值是
      • 密钥对别名(仅适用于安卓系统)
      • PKCS11Id
      • 模式
      • ProvisioningProfileId
      • 参考
    • KeyPairAlias、Pattern、ProvisioningProfileId 和 Ref 表示相关属性应用于标识客户证书。
    • PKCS11Id 用于表示本地存储中的证书,仅在描述本地配置时有效。
    • 无表示服务器配置为不需要客户证书。
  • 身份

    • (可选)- 字符串
    • 用户身份。对于隧道外部协议(PEAP、EAP-TTLS 和 EAP-FAST),它用于在隧道内进行身份验证,而 AnonymousIdentity 用于在隧道外进行 EAP 身份验证。对于非隧道外部协议,该值用于 EAP 身份验证。此值可用于字符串扩展。
  • 内部

    • (如果外部协议为 EAP-FAST、EAP-TTLS 或 PEAP,则为可选项,否则忽略,默认为自动)--字符串
    • 允许的值是
      • 自动
      • MD5
      • MSCHAP
      • MSCHAPv2
      • PAP
      • CHAP
      • GTC
    • 用于隧道外部协议。
  • 外部协议

    • (字符串
    • 允许的值是
      • LEAP
      • EAP-AKA
      • EAP-FAST
      • EAP-TLS
      • EAP-TTLS
      • EAP-SIM
      • PEAP
      • MSCHAPv2(仅适用于 IPsec-IKEv2 VPN)
  • 密码

    • (可选)- 字符串
    • 用户密码。如果未指定,默认提示用户。
  • 保存凭据

    • (可选,默认为 false) - 布尔值
    • 如果为假,则要求用户每次连接时都输入凭据。如果 SaveCredentials 为假,则不允许指定身份和/或密码。
  • 服务器 CA 证书

    • (可选)--字符串数组
    • PEM 格式 CA 证书的非空列表,如果设置此字段,则必须取消设置 ServerCARef 和 ServerCARefs。
  • 服务器 CARefs

    • (可选)--字符串数组
    • 用于验证主机证书链的证书中 CA 证书引用的非空列表。至少有一个 CA 证书必须匹配。如果设置了该字段,则必须取消设置 ServerCARef。如果 ServerCARefs 和 ServerCARef 都未设置,客户端不会检查服务器证书是否由特定 CA 签发。使用系统 CA 证书进行的验证仍然适用。请参阅 UseSystemCAs 了解详情。
  • 服务器证书

    • (可选)- 字符串
    • 已删除,请使用 ServerCARefs 代替。

在证书中引用 CA 证书。

  • If this field is set, ServerCARefs must be unset. If neither ServerCARefs nor ServerCARef is set, the client does not check that the server certificate is signed by a specific CA. A verification using the system's CA certificates may still apply. See UseSystemCAs for this.

  • 主题匹配

    • (可选)- 字符串
    • 远程 RADIUS 服务证书主题名必须包含的子字符串,以便连接。
  • 主题替代名称匹配

    • (可选)- 替代主题名称数组
    • 要与身份验证服务器证书替代主题名称匹配的替代主题名称列表。如果设置,只有当列表中的任一项目与服务器证书的替代主题名扩展名中的条目匹配时,服务器证书才会被接受。
  • 域缀匹配

    • (可选)--字符串数组
    • 服务器域名的限制条件列表。如果设置,这些条目将用作与认证服务器证书替代主题名的 DNS 名称元素相匹配的后缀要求。指定多个匹配字符串时,任何一个值的匹配都会被视为服务器证书的充分匹配。
  • TLSVersionMax

    • (可选)- 字符串
    • 设置操作系统用于 EAP 的最大 TLS 协议版本。只有在连接到有 TLS 实施缺陷的 AP 时才需要这样做,因为协议通常会自动协商。
    • 允许的值是
      • 1.0
      • 1.1
      • 1.2
  • 使用系统 CA

    • (可选,默认为 true)- 布尔值
    • 要求服务器证书由 "系统默认证书颁发机构 "签署。如果同时提供 ServerCARefs(或 ServerCARef)和 UseSystemCAs,服务器证书将被允许使用,前提是该证书与系统 CA 或给定的 CA 证书之一有信任链。如果 UseSystemCAs 为假,且未设置 ServerCARef,则证书必须是自签名证书,不需要 CA 签名。
  • 使用主动式密钥缓存

    • (可选,默认为 false) - 布尔值
    • 表示是否应按服务使用主动式密钥缓存(也称为机会式密钥缓存)。

  • 最多只能设置 ServerCARefs 和 ServerCARef 中的一个。

替代主题名称类型

  • 类型
    • (字符串
    • 备选主题名称的类型。
    • 允许的值是
      • 电子邮件
      • DNS
      • URI
    • (字符串
    • 备选主题名称的值。

蜂窝网络

对于蜂窝连接,类型(Type)必须设置为蜂窝(Cellular),字段蜂窝(Cellular)必须设置为蜂窝(Cellular)类型的对象。

目前仅用于表示现有配置;尚不支持 ONC 配置蜂窝网络。

蜂窝类型

  • 激活状态

    • (可选,只读)- 字串
    • 运营商账户激活状态。
    • 允许的值是
      • 激活
      • 激活中
      • 未激活
      • 部分激活
  • 激活类型

    • (可选)- 字符串
    • 激活类型。
  • 管理员分配的 APNIds

    • (可选)--字符串数组
    • 由管理员添加的自定义 APN 配置 ID 列表,这些 ID 映射的 APN 将应用到此蜂窝网络配置映射的 eSIM。自定义 APNList 将从提供的 AdminAssignedAPNIds 自动构建,每个 ID 映射到顶层 AdminAPNList 中的唯一 APN。
  • 允许漫游

    • (可选)- 布尔型
    • 设备漫游时是否允许蜂窝数据连接。
  • APN

    • (可选)- APN
    • 当前激活的 APN 对象,用于与 GSM 运营商进行数据连接。
  • APNList

    • (可选)- APN 数组
    • 可用 APN 配置的列表。
  • 自动连接

    • (可选,默认为 false) - 布尔值
    • 表示在可能的情况下应自动连接网络。请注意,禁用 AllowRoaming 优先于自动连接。
  • 自定义 APN 列表

    • (可选)- APN 数组
    • 自定义 APN 配置的列表,由用户添加,或通过顶层 AdminAPNList 中的 APN 列表自动设置,这些 APN 要么映射到 eSIM 的非空 AdminAssignedAPNIds,要么映射到所有 pSIM 的非空 PSIMAdminAssignedAPNIds。
  • EID

    • (可选,只读,仅提供给 eSIM 网络)--字符串
    • 对于 GSM / LTE 调制解调器,设备中安装的 eSIM 卡的嵌入式通用集成电路卡标识符。
  • ESN

    • (可选,只读)- 字串
    • 蜂窝调制解调器的电子序列号。
  • 家庭

    • (可选,只读)- 字串
    • 技术系列。
    • 允许的值是
      • CDMA ** GSM*
  • 固件版本

    • (可选,只读)- 字串
    • 调制解调器中加载的固件版本。
  • 发现的网络

    • (可选,只读,仅在家庭为 GSM 时提供) - FoundNetwork 的数组
    • 在最近一次扫描操作中发现的蜂窝网络列表。
  • 硬件版本

    • (可选,只读)- 字串
    • 蜂窝调制解调器的硬件版本。
  • 家庭提供商

    • (可选,只读) - 手机提供商
    • 调制解调器中当前安装的 SIM 卡的运营商描述。
  • ICCID

    • (可选,只读,仅在 "系列 "为 GSM 或 "网络技术 "为 LTE 时提供)--字符串
    • 对于 GSM / LTE 调制解调器,设备中安装的 SIM 卡的集成电路卡标识符。
  • IMEI

    • (可选,只读)- 字串
    • 蜂窝调制解调器的国际移动设备标识。
  • IMSI

    • (可选,只读,仅在家庭为 GSM 时提供)- 字串
    • 对于 GSM 调制解调器,设备中安装的 SIM 卡的国际移动用户标识。
  • LastConnectedAttachApnProperty 属性

    • (可选,只读) - APN
    • 上次成功连接时使用的附加 APN 信息。
    • 尝试中使用的附加 APN 信息。如果连接失败,该值不会被清除。
  • LastConnectedDefaultApnProperty

    • (可选,只读) - APN
    • 上次成功连接时使用的默认 APN 信息。
    • 尝试中使用的附加 APN 信息。如果连接失败,该值不会被清除。
  • LastGoodAPN

    • (可选,只读) - APN
    • 上次成功尝试连接时使用的 APN 信息。
  • 制造商

    • (可选,只读)- 字串
    • 蜂窝调制解调器的制造商。
  • MDN

    • (可选)- 字符串
    • 设备的移动通讯录号码(即电话号码)。
  • MEID

    • (可选,只读,仅当家庭为 CDMA 时提供)--字符串
    • 对于 CDMA 调制解调器,蜂窝调制解调器的移动设备标识符。
  • MIN

    • (可选,只读)- 字串
    • 设备的移动识别码。
  • 型号 ID

    • (可选,只读)- 字串
    • 蜂窝调制解调器的硬件型号。
  • 网络技术

    • (可选,只读)- 字串
    • 如果调制解调器已在网络上注册,则将其设置为当前使用的网络技术。
    • 允许的值是
      • CDMA1XRTT
      • EDGE
      • EVDO
      • GPRS
      • GSM
      • HSPA
      • HSPAPlus
      • LTE
      • LTEAdvanced
      • UMTS
      • 5GNR
  • 支付门户

    • (可选,只读) - PaymentPortal
    • 描述用户可以注册或修改移动数据计划的在线支付门户(OLP)的属性。
  • 漫游状态

    • (可选,只读)- 字串
    • 蜂窝调制解调器在当前网络上的漫游状态。
    • 允许的值是
      • 主页、
      • 漫游
      • 必填 - 提供商没有本地网络
  • 扫描

    • (可选,只读) - 布尔型
    • 当正在进行蜂窝网络扫描时为 true。
  • 服务运营商

    • (可选,只读,仅在 "家庭 "为 GSM 时提供) - CellularProvider
    • 调制解调器当前注册网络运营商的描述
  • 信号强度

    • (可选,只读)- 整数
    • 该网络的当前信号强度,范围 [0, 100],由系统提供。如果网络不在范围内,该字段将设置为 "0 "或不存在。
  • SIMLockStatus

    • (可选,只读,仅当家庭为 GSM 时才提供) - SIMLockStatus
    • 对于 GSM 调制解调器,该字典包含描述 SIM 卡锁定状态的两个属性。
  • SIMPresent

    • (可选,只读,仅当系列为 GSM 或网络技术为 LTE 时提供)- 布尔型
    • 对于 GSM 或 LTE 调制解调器,表示 SIM 卡是否存在。
  • SMDP 地址

    • (可选,只读)- 字串
    • 激活码,包含 SM-DP+ 服务器地址,用于下载和安装该网络的 eSIM 配置文件。此字段与 SMDSAddress 互斥。虽然该字段名中包含 "地址 "是为了向后兼容,但其值应根据 GSMA 规范格式化。不符合 GSMA 规范的策略将失败。有关该规范的更多信息,请访问 https://www.gsma.com/newsroom/wp-content/uploads/SGP.22\_v2.2.pdf。
  • SMDSAddress

    • (可选,只读)- 字串
    • 包含 SM-DS 服务器地址的激活代码,应使用该地址下载和安装此网络的 eSIM 配置文件。此字段与 SMDPAddress 互斥。虽然该字段名中包含 "地址 "是为了向后兼容,但其值应根据 GSMA 规范格式化。不符合 GSMA 规范的策略将失败。有关该规范的更多信息,请访问 https://www.gsma.com/newsroom/wp-content/uploads/SGP.22\_v2.2.pdf。
  • 支持网络扫描

    • (可选,只读) - 布尔型
    • 如果蜂窝网络支持扫描,则为 True。

FoundNetwork 类型

  • 状态

    • (字符串
    • 网络的可用性。
  • 网络标识

    • (字符串
    • 网络 ID,格式为 MCC/MNC(不含"/")。
  • 技术

    • (字符串
    • 网络使用的接入技术,如 "GSM"、"UMTS"、"EDGE"、"HSPA "等。
  • 简称

    • (可选)- 字符串
    • 网络运营商的简短格式名称。
  • 长名称

    • (可选)- 字符串
    • 网络运营商的长格式名称。

支付门户类型

  • 方法

    • (字符串
    • 要使用的 HTTP 方法,"GET "或 "POST
  • PostData

    • (如果方法为 POST,则为必填项,否则忽略)--字符串
    • 要发送的帖子数据。
  • 网址

    • (字符串
    • 门户的 URL。

手机供应商类型

  • 名称

    • (字符串
    • 操作员名称。
  • 代码

    • (字符串
    • 网络 ID,格式为 MCC/MNC(不含"/")。
  • 国家/地区

    • (可选)- 字符串
    • 双字母国家代码。

SIMLockStatus 类型

  • 锁定类型

    • (字符串
    • 指定有效的锁定类型,如果未锁定,则为空字符串。
    • 允许的值是
      • sim-pin 、
      • sim-puk
  • 锁定启用

    • (必填)- 布尔型
    • 表示是否启用 SIM 卡锁定
  • 剩余重试次数

    • (可选)- 整数
    • 如果 LockType 为空或 sim-pin,则此属性表示在 PIN 被阻止前提供正确 PIN 的剩余尝试次数,此时需要运营商提供 PUK 才能解锁 SIM 卡(LockType 变为 sim-puk)。

Tether 网络

对于 Tether 连接,类型必须设置为 Tether,字段 Tether 必须设置为 Tether 类型的对象。

用于表示外部设备(如手机)提供的系绳热点。

系绳类型

  • 电池百分比

    • (可选,只读)- 整数
    • 提供系绳热点的设备的电池百分比,范围为 [0, 100]。
  • 载体

    • (可选,只读)- 字串
    • 当热点由蜂窝连接提供时,蜂窝运营商的名称。
  • 已连接到主机

    • (只读)- 布尔型
    • 如果为 true,则当前设备已连接到由提供此 Tether 网络的同一外部设备创建的 Tether 网络。
  • 信号强度

    • (可选,只读)- 整数
    • 热点连接的当前信号强度,范围为 [0, 100]。请注意,此值指的是外部设备与其数据提供者之间的信号强度,而不是当前设备与外部设备之间的信号强度。

蓝牙/WiFi 直接网络

该格式最终也将涵盖蓝牙和 WiFi Direct 网络技术的配置,但目前还不支持。

APN

以下每个都是 APN 类型对象的数组:

  • 顶级字段 AdminAPNList
  • GlobalNetworkConfiguration 的 PSIMAdminAssignedAPNs 字段
  • 蜂窝网络的 APNList 字段
  • 蜂窝网络的自定义 APNList 字段

蜂窝网络的 APN、LastConnectedAttachApnProperty、LastConnectedDefaultApnProperty 和 LastGoodAPN 字段是 APN 类型。

请注意,顶层字段 AdminAPNList 中包含的每个 APN 都可以通过其 Id 进行引用。例如,PSIMAdminAssignedAPNIds 和 AdminAssignedAPNIds 都是 APN Id 的数组,其中引用了 AdminAPNList 中包含的 APN。

APN 类型

  • 接入点名称

    • (字符串
    • 连接时使用的接入点名称。
  • 名称

    • (可选)- 字符串
    • APN 的描述。
  • 本地化名称

    • (可选)- 字符串
    • APN 的本地化描述。
  • 用户名

    • (可选)- 字符串
    • 必要时用于连接的用户名。
  • 密码

    • (可选)- 字符串
    • 必要时用于连接的密码。
  • 身份验证

    • (可选)- 字符串
    • 发送用户名和密码的验证协议类型。可能的值有""、"PAP "或 "CHAP"。
  • 语言

    • (可选,若提供本地化名称则必填)- 字符串
    • 本地化名称的双字母语言代码(如果提供)。
  • 用户名

    • (可选)- 字符串
    • 此 APN 的唯一标识符。必须是非空字符串。
  • IpType

    • (可选)- 字符串
    • APN 的 IP 类型。可能的值有""、"IPv4"、"IPv6 "或 "IPv4orIPv6"。如果未提供或提供的字符串为空,则自动生成 IP 类型。
  • APN 类型

    • (可选)--字符串数组
    • APN 的类型。如果提供,必须是一个非空数组。可能的值有 "默认"、"连接 "或 "绑定"。
  • 来源

    • (可选)- 字符串
    • APN 的来源。可能的值有""、"Modem"、"Modb"、"Ui "或 "Admin"。

证书

证书数据存储在一个单独的部分。在 NetworkConfigurations(网络配置)数组中,可使用证书引用来引用每个证书。证书引用是其 GUID。

顶层字段 Certificates 是证书类型对象的数组。

证书类型

  • GUID

    • (字符串
    • 此证书的唯一标识符。必须是非空字符串。
  • PKCS12

    • (如果类型为客户端,则为必填项,否则忽略) - 字符串
    • 对于带私钥的证书,这是 PKCS#12 文件的 base64 编码。
  • 删除

    • (可选,默认为 false) - 布尔值
    • 如果为 "true",则删除此证书(只需设置 GUID)。
  • 范围

    • (可选,缺少时默认为范围) - 范围
    • 如果给定,则指定应用证书的范围。
  • 信任位

    • (类型为服务器或授权时为可选项,否则忽略,默认为 []) - 字符串数组
    • 信任标志数组。客户端应忽略未知标志。为了向后兼容,每个标记只能增加信任度,而不能限制信任度。信任标志 Web 表示该证书在 HTTPS SSL 识别中受信任。典型的网络证书颁发机构会将类型设为颁发机构,将 TrustBits 设为 ["Web"] (如果移除为 false 则为必填项,如果移除为 false 则为必填项)。
  • 类型

    • (如果移除为 false 则为必填项,否则忽略) - 字符串
    • 允许的值是
      • 客户端
      • 服务器
      • 授权
    • 客户端表示证书用于通过 HTTPS 或 VPN/802.1X 识别用户或设备。服务器表示证书用于识别 HTTPS 或 VPN/802.1X 对等设备。Authority 表示证书是证书颁发机构,其颁发的任何证书都应受到信任。请注意,如果类型与 x509 v3 基本限制或密钥使用属性不一致,则应遵守类型字段。
  • X509

    • (如果类型是服务器或授权,则为必填项,否则忽略)--字符串
    • 对于不含私钥的证书,这是 PEM 格式的 X509 证书。

PKCS#12 编码的口令必须为空。密钥数据的加密应在整个文件或文件传输层面处理。

如果全局范围的网络连接指向用户范围的证书,结果将是未定义的,因此配置编辑器应禁止这种配置。

范围类型

  • 用户名
    • (如果类型为扩展,则为必填项,否则忽略)--字符串
    • 如果类型为扩展,这就是应为其应用证书的 Chrome 浏览器扩展的 ID。
  • 类型
    • (字符串
    • 允许的值是
      • 扩展名
      • 默认值
    • Extension 表示证书只能在 chrome 浏览器扩展名的范围内使用。默认表示证书应用范围不受限制。

加密配置

我们假定,当这种格式作为策略的一部分导入时,由于策略传输已经加密,因此不需要进行文件级加密,但当它作为独立文件导入时,最好对其进行加密。由于该文件中包含私人信息(用户名)和机密(口令和私钥),而且我们希望它能作为手动分发网络配置的方式使用,因此我们必须支持加密。

在独立导出时,整个文件将以对称方式加密,使用至少 20000 次迭代的加盐 PBKDF2 加密口令,并使用 AES-256 CBC 模式密码和 SHA-1 HMAC 加密密文。

加密的 ONC 文件顶层对象将具有 EncryptedConfiguration 类型。

加密配置类型

  • 密码

    • (字符串
    • 使用的密码类型。目前只支持 AES256。
  • 密码文本

    • (字符串
    • 已加密 ONC 文件的原始密码文本(base64 编码)。
  • HMAC

    • (字符串
    • 密码文本的 HMAC,base64 编码。
  • HMAC 方法

    • (字符串
    • 用于计算基于哈希的消息验证码(HMAC)的方法。目前只支持 SHA1。
    • (字符串
    • 键拉伸时使用的盐值。
  • 拉伸

    • (字符串
    • 使用的密钥拉伸算法。目前只支持 PBKDF2。
  • 迭代

    • (必填)- 整数
    • 密钥拉伸过程中使用的迭代次数。
  • IV

    • (字符串
    • 用于循环块状密码 (CBC) 模式的初始向量 (IV),base64 编码。
  • 类型

    • (字符串
    • ONC 文件类型,必须设置为 EncryptedConfiguration。

  • 解密时,密码文本必须包含一个类型为 UnencryptedConfiguration 的 JSON 对象。

字符串扩展

某些字段(如 WiFi.EAP.Identity 和 VPN.*.Username)的值可进行字符串扩展。这些允许一个 ONC 具有基本的用户特定变化。

扩展为

*   只有在特定用户 ONC 中才会被替换的占位符:

* ``${LOGIN_ID}` - expands to the email address of the user, but before the '@'. * `${LOGIN_EMAIL}`` - 扩展为用户的电子邮件地址。
* 仅在设备范围 ONC 中被替换的占位符:

* ``${DEVICE_SERIAL_NUMBER}` - expands to the serial number of the device. * `${DEVICE_ASSET_ID}`` - 扩展为设备的管理员设置资产 ID。
* 仅在客户证书与 CertificatePattern 匹配时才会被替换的占位符:

* ``${CERT_SAN_EMAIL}` - expands to the first RFC822 SubjectAlternativeName extracted from the client certificate. * `${CERT_SAN_UPN}`` - 扩展至从客户证书中提取的第一个 OID 为 1.3.6.1.4.1.311.20.2.3(UserPrincipalName)的 OtherName SubjectAlternativeName。
* ``${CERT_SUBJECT_COMMON_NAME}` - expands to the ASCII value of the Subject CommonName extracted from the client certificate. ### The following SED would properly handle resolution. * s/`${LOGIN_ID}``/bobquail${LOGIN_ID}` - expands to the email address of the user, but before the '@'.
* `${LOGIN\_EMAIL}\`/[bobquail@example.com](mailto:bobquail@example.com)\](mailto:s/undefined/g

扩展示例,假设用户为 bobquail@example.com

*   " ``${LOGIN_ID}`" -> "bobquail" * "[`${LOGIN_ID}`` @corp.example.com\](mailto: ${DEVICE_SERIAL_NUMBER}` - expands to the serial number of the device.
* `$ {login\_email}\`" -> " bobquail@example.com"

* " ``${LOGIN_ID}`X" -> "bobquailX" * `${LOGIN_IDX}`` -> ``${LOGIN_IDX}` * "X`${LOGIN_ID}`` " -> "Xbobquail"

字符串替换

WiFi.EAP.Password 和 VPN.L2TP.Password 的值受字符串替换的限制。它们与上述字符串扩展部分的不同之处在于,必须与替换变量完全匹配才能替换真实值。

示例扩展,假设用户密码为 helloworld:

  • ${PASSWORD}` -> "helloworld" * `${PASSWORD}foo -> ${PASSWORD}foo

推荐值

当策略提供 ONC 配置时,假定所有值都是强制性和不可更改的。要指定可被用户覆盖的值(如代理或用户名),请使用 "推荐 "属性。

  • 推荐
    • (可选)--字符串数组
    • 名称与该数组中字符串相同的字段将被视为推荐设置。该数组中未提及的字段仍为必填字段。这也意味着,数组中未提及且对象中也未提及的字段为必填字段,并具有该字段的默认值。如果不存在,则所有字段都是必填字段。推荐中包含的对象或对象数组的字段将被忽略。在这种情况下,嵌套对象应有自己的 "推荐 "字段。一种特殊情况是列表中包含字符串"."。出现这种情况时,意味着用户可以遗忘或删除整个证书或网络。包含". "对其他设置没有影响。例如,一个网络可能已被推荐设置为["."],在这种情况下,用户不能更改其设置,但用户可以忘记整个网络。". "在证书对象和网络配置对象中有效,在其他地方将被忽略。

检测

该格式应在以 .onc 扩展名结尾的文件中发送。使用 MIME 类型传输时,MIME 类型应为 application/x-onc。这两种方法可用于检测以这种格式处理的数据,尤其是在使用加密且有效载荷本身无法检测的情况下。

考虑过的替代方案

对于整体格式,我们考虑了 XML、ASN.1 和 protobufs。JSON 和 ASN.1 似乎比 protobufs 更广为人知。由于管理员很可能想要调整不存在于常见用户界面中的设置,因此我们应该提供一种众所周知且可人为修改的格式。ASN.1 格式是不可人为修改的。Protobufs 格式为开源开发人员所熟知,但似乎不太可能为管理员所熟知。JSON 序列化似乎在各种语言中都有很好的支持。

我们考虑过发送开源连接管理器(如 connman)的确切连接管理器配置格式。这里存在一些问题,例如,通过与特定 PKCS#11 标记无关的标识符引用证书,以及绑定到一个操作系统的连接管理器。

示例

GlobalNetworkConfiguration 示例

在这个示例中,我们只允许托管网络自动连接,如果托管网络可用,则不允许任何其他网络自动连接。我们还阻止了 "Guest "网络(hex("Guest")=4775657374)并禁用了蜂窝服务。

        {
"Type": "UnencryptedConfiguration",
"GlobalNetworkConfiguration": {
"AllowOnlyPolicyNetworksToAutoconnect": true,
“AllowOnlyPolicyNetworksToConnect”: false,
“AllowOnlyPolicyNetworksToConnectIfAvailable”: true,
“BlockedHexSSIDs”: [“4775657374”],
"DisableNetworkTypes": ["Cellular"]
},
}

简单格式示例:PEAP/MSCHAPv2 网络(每个设备)

        {
"Type": "UnencryptedConfiguration",
"NetworkConfigurations": [
{
"GUID": "{f2c17903-b0e1-8593-b3ca74f977236bd7}",
"Name": "MySSID",
"Type": "WiFi",
"WiFi": {
"AutoConnect": true,
"EAP": {
"Outer": "PEAP",
"UseSystemCAs": true
},
"HiddenSSID": false,
"SSID": "MySSID",
"Security": "WPA-EAP"
}
}
],
"Certificates": []
}

请注意,在本例中,我们没有提供用户名和密码,而是将 SaveCredentials 设置为 false,这样每次都会提示我们。我们可以输入用户名和密码,但这样的文件应该加密。

复杂格式示例:带有客户端证书的 TLS 网络(每个设备)

        {
"Type": "UnencryptedConfiguration",
"NetworkConfigurations": [
{
"GUID": "{00f79111-51e0-e6e0-76b3b55450d80a1b}",
"Name": "MyTTLSNetwork",
"Type": "WiFi",
"WiFi": {
"AutoConnect": false,
"EAP": {
"ClientCertPattern": {
"EnrollmentURI": [
"http://fetch-my-certificate.com"
],
"IssuerCARef": [
"{6ed8dce9-64c8-d568-d225d7e467e37828}"
]
},
"ClientCertType": "Pattern",
"Outer": "EAP-TLS",
"ServerCARef": "{6ed8dce9-64c8-d568-d225d7e467e37828}",
"UseSystemCAs": true
},
"HiddenSSID": false,
"SSID": "MyTTLSNetwork",
"Security": "WPA-EAP"
}
}
],
"Certificates": [
{
"GUID": "{6ed8dce9-64c8-d568-d225d7e467e37828}",
"Type": "Authority",
"X509": "MIIEpzCCA4+gAwIBAgIJAMueiWq5WEIAMA0GCSqGSIb3DQEBBQUAMIGTMQswCQYDVQQGEwJGUjEPMA0GA1UECBMGUmFkaXVzMRIwEAYDVQQHEwlTb21ld2hlcmUxFTATBgNVBAoTDEV4YW1wbGUgSW5jLjEgMB4GCSqGSIb3DQEJARYRYWRtaW5AZXhhbXBsZS5jb20xJjAkBgNVBAMTHUV4YW1wbGUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4XDTExMDEyODA2MjA0MFoXDTEyMDEyODA2MjA0MFowgZMxCzAJBgNVBAYTAkZSMQ8wDQYDVQQIEwZSYWRpdXMxEjAQBgNVBAcTCVNvbWV3aGVyZTEVMBMGA1UEChMMRXhhbXBsZSBJbmMuMSAwHgYJKoZIhvcNAQkBFhFhZG1pbkBleGFtcGxlLmNvbTEmMCQGA1UEAxMdRXhhbXBsZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9EDplhyrVNJIoy1OsVqvD/K67B5PW2bDKKxGznodrzCu8jHsP1Ne3mgrK20vbzQUUBdmxTCWO6x3a3//r4ZuPOuZd1ViycWjt6mRfRbBzNrHzP7NiyFuXjdlz74beHQQLcHwvZ3qFAWZK37uweiLiDPaMaEQlka2Bztqx4PsogmSdoVPSCxi5Cl1XlJmITA03LlKpO79+0rEPRamWO/DMCwvffn2/UUjJLog4/lYe16HQ6iq/6bjhffm2rLXDFKOGZmBVbLNMCfANRMtdFWHYdBXERoUo2zpM9tduOOUNLy7E7kRKVm/wy38s51ChFPlpORrhimN2j1caar+KAv2tAgMBAAGjgfswgfgwHQYDVR0OBBYEFBTIImiXp+57jjgn2N5wq93GgAAtMIHIBgNVHSMEgcAwgb2AFBTIImiXp+57jjgn2N5wq93GgAAtoYGZpIGWMIGTMQswCQYDVQQGEwJGUjEPMA0GA1UECBMGUmFkaXVzMRIwEAYDVQQHEwlTb21ld2hlcmUxFTATBgNVBAoTDEV4YW1wbGUgSW5jLjEgMB4GCSqGSIb3DQEJARYRYWRtaW5AZXhhbXBsZS5jb20xJjAkBgNVBAMTHUV4YW1wbGUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5ggkAy56JarlYQgAwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAnNd0YY7s2YVYPsgEgDS+rBNjcQloTFWgc9Hv4RWBjwcdJdSPIrpBp7LSjC96wH5U4eWpQjlWbOYQ9RBq9Z/RpuAPEjzRV78rIrQrCWQ3lxwywWEb5Th1EVJSN68eNv7Ke5BlZ2l9kfLRKFm5MEBXX9YoHMX0U8I8dPIXfTyevmKOT1PuEta5cQOM6/zH86XWn6WYx3EXkyjpeIbVOw49AqaEY8u70yBmut4MO03zz/pwLjV1BWyIkXhsrtuJyA+ZImvgLK2oAMZtGGFo7b0GW/sWY/P3R6Un3RFy35k6U3kXCDYYhgZEcS36lIqcj5y6vYUUVM732/etCsuOLz6ppw=="
}
]
}

在这个示例中,客户端证书不是以 ONC 格式发送的,而是发送一个证书颁发机构,我们知道该机构已签署了所需的客户端证书,如果客户端上还没有所需的证书,则还会发送一个注册 URI 以供导航。

简单格式示例:HTTPS 证书颁发机构

在此示例中,添加了一个新的证书颁发机构,用于 HTTPS 服务器身份验证。

        {
"Type": "UnencryptedConfiguration",
"NetworkConfigurations": [],
"Certificates": [
{
"GUID": "{f31f2110-9f5f-61a7-a8bd7c00b94237af}",
"TrustBits": [ "Web" ],
"Type": "Authority",
"X509": "MIIEpzCCA4+gAwIBAgIJAMueiWq5WEIAMA0GCSqGSIb3DQEBBQUAMIGTMQswCQYDVQQGEwJGUjEPMA0GA1UECBMGUmFkaXVzMRIwEAYDVQQHEwlTb21ld2hlcmUxFTATBgNVBAoTDEV4YW1wbGUgSW5jLjEgMB4GCSqGSIb3DQEJARYRYWRtaW5AZXhhbXBsZS5jb20xJjAkBgNVBAMTHUV4YW1wbGUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4XDTExMDEyODA2MjA0MFoXDTEyMDEyODA2MjA0MFowgZMxCzAJBgNVBAYTAkZSMQ8wDQYDVQQIEwZSYWRpdXMxEjAQBgNVBAcTCVNvbWV3aGVyZTEVMBMGA1UEChMMRXhhbXBsZSBJbmMuMSAwHgYJKoZIhvcNAQkBFhFhZG1pbkBleGFtcGxlLmNvbTEmMCQGA1UEAxMdRXhhbXBsZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9EDplhyrVNJIoy1OsVqvD/K67B5PW2bDKKxGznodrzCu8jHsP1Ne3mgrK20vbzQUUBdmxTCWO6x3a3//r4ZuPOuZd1ViycWjt6mRfRbBzNrHzP7NiyFuXjdlz74beHQQLcHwvZ3qFAWZK37uweiLiDPaMaEQlka2Bztqx4PsogmSdoVPSCxi5Cl1XlJmITA03LlKpO79+0rEPRamWO/DMCwvffn2/UUjJLog4/lYe16HQ6iq/6bjhffm2rLXDFKOGZmBVbLNMCfANRMtdFWHYdBXERoUo2zpM9tduOOUNLy7E7kRKVm/wy38s51ChFPlpORrhimN2j1caar+KAv2tAgMBAAGjgfswgfgwHQYDVR0OBBYEFBTIImiXp+57jjgn2N5wq93GgAAtMIHIBgNVHSMEgcAwgb2AFBTIImiXp+57jjgn2N5wq93GgAAtoYGZpIGWMIGTMQswCQYDVQQGEwJGUjEPMA0GA1UECBMGUmFkaXVzMRIwEAYDVQQHEwlTb21ld2hlcmUxFTATBgNVBAoTDEV4YW1wbGUgSW5jLjEgMB4GCSqGSIb3DQEJARYRYWRtaW5AZXhhbXBsZS5jb20xJjAkBgNVBAMTHUV4YW1wbGUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5ggkAy56JarlYQgAwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAnNd0YY7s2YVYPsgEgDS+rBNjcQloTFWgc9Hv4RWBjwcdJdSPIrpBp7LSjC96wH5U4eWpQjlWbOYQ9RBq9Z/RpuAPEjzRV78rIrQrCWQ3lxwywWEb5Th1EVJSN68eNv7Ke5BlZ2l9kfLRKFm5MEBXX9YoHMX0U8I8dPIXfTyevmKOT1PuEta5cQOM6/zH86XWn6WYx3EXkyjpeIbVOw49AqaEY8u70yBmut4MO03zz/pwLjV1BWyIkXhsrtuJyA+ZImvgLK2oAMZtGGFo7b0GW/sWY/P3R6Un3RFy35k6U3kXCDYYhgZEcS36lIqcj5y6vYUUVM732/etCsuOLz6ppw=="
}
]
}

加密格式示例

在此示例中,添加了一个简单的无线网络,但文件使用口令 "test0000 "加密。

        {
"Cipher": "AES256",
"Ciphertext": "eQ9/r6v29/83M745aa0JllEj4lklt3Nfy4kPPvXgjBt1eTByxXB+FnsdvL6Uca5JBU5aROxfiol2+ZZOkxPmUNNIFZj70pkdqOGVe09ncf0aVBDsAa27veGIG8rG/VQTTbAo7d8QaxdNNbZvwQVkdsAXawzPCu7zSh4NF/hDnDbYjbN/JEm1NzvWgEjeOfqnnw3PnGUYCArIaRsKq9uD0a1NccU+16ZSzyDhX724JNrJjsuxohotk5YXsCK0lP7ZXuXj+nSR0aRIETSQ+eqGhrew2octLXq8cXK05s6ZuVAc0mFKPkntSI/fzBACuPi4ZaGd3YEYiKzNOgKJ+qEwgoE39xp0EXMZOZyjMOAtA6e1ZZDQGWG7vKdTLmLKNztHGrXvlZkyEf1RDs10YgkwwLgUhm0yBJ+eqbxO/RiBXz7O2/UVOkkkVcmeI6yh3BdL6HIYsMMygnZa5WRkd/2/EudoqEnjcqUyGsL+YUqV6KRTC0PH+z7zSwvFs2KygrSM7SIAZM2yiQHTQACkA/YCJDwACkkQOBFnRWTWiX0xmN55WMbgrs/wqJ4zGC9LgdAInOBlc3P+76+i7QLaNjMovQ==",
"HMAC": "3ylRy5InlhVzFGakJ/9lvGSyVH0=",
"HMACMethod": "SHA1",
"Iterations": 20000,
"IV": "hcm6OENfqG6C/TVO6p5a8g==",
"Salt": "/3O73QadCzA=",
"Stretch": "PBKDF2",
"Type": "EncryptedConfiguration"
}


### 推荐值示例

在本例中,EAP 身份和密码被标记为推荐值,即用户可以编辑。所有其他值均为必填值。

{
"Type": "UnencryptedConfiguration",
"GlobalNetworkConfiguration": {},
"NetworkConfigurations": [
{
"GUID": "{485e6176-dd34-6b6d-1234}",
"Name": "wifi_test",
"Type": "WiFi",
"WiFi": {
"SSID": "wifi_test",
"Security": "WPA-EAP",
"AutoConnect": true,
"EAP": {
"Inner": "MSCHAPv2",
"Outer": "PEAP",
"SaveCredentials": true,
"UseSystemCAs": false,
"Identity": "john-doe",
"Password": "secret-password-123",
"Recommended": ["Identity", "Password"]
}
}
}
}
]
}

Chrome 浏览器内部格式

Chrome 浏览器内部使用 base::Value 字典格式来表示 ONC 配置。我们在代码中引用了两种类型的字典:

  • ONC 词典 包含键值对的词典,与上述 "NetworkConfigurations(网络配置)"下的词典类似。

  • 托管 ONC 词典 包含键值对的词典,其中的值是包含下文所述策略和设置值的词典。

配置可结合策略和设置配置。

合并规则

如果存在策略配置,则适用以下规则:

  • 强制执行(默认):策略值始终是有效值。
    • 注:用户策略优先于设备策略。
    • 注:如果策略未提供属性,则该属性将被视为已执行,并应用默认值。
  • 推荐:如果属性出现在 "推荐 "部分,则被视为 "推荐"。如果存在 UserSetting 或 SharedSetting 值,则可将其选为有效值。

管理的 ONC 词典格式("增强的)

托管的 ONC 字典包含 "网络配置 "中描述的键,但其值是可能包含以下属性的字典:

  • Active(活动):对于从配置管理器(如 Shill)翻译过来的属性,配置管理器当前使用的 "活动 "值。
  • Effective(有效):属性的有效来源:UserPolicy(用户策略)、DevicePolicy(设备策略)、UserSetting(用户设置)或 SharedSetting(共享设置)。
  • 用户策略:用户策略提供的值。
  • 设备策略:设备策略提供的值。
  • UserSetting:登录用户设置的值。仅在 UserEditable 为 true 时提供(即无策略影响该属性或策略提供的值仅为推荐值)。
  • SharedSetting:为设备所有用户设置的值。仅在 DeviceEditable 为 true 时提供(即没有策略影响该属性,或仅建议使用策略提供的值)。
  • UserEditable(用户可编辑):如果存在允许编辑属性的 UserPolicy(即推荐值),则该值为 True。默认为 "假"。
  • DeviceEditable(设备可编辑):如果存在设备策略并允许编辑属性(即推荐值),则设置为 True。默认为 False。

示例

具有用户策略强制值的属性。

         "Priority": {
"Active": 3,
"Effective": "UserPolicy",
"UserEditable": false,
"UserPolicy": 3,
},

具有设备策略建议值且无设置值的属性。

          "Priority": {
"Active": 2,
"DeviceEditable": true,
"DevicePolicy": 2,
"Effective": "DevicePolicy",
},

具有设备策略推荐值和共享设置值的属性。

          "Priority": {
"Active": 1,
"DeviceEditable": true,
"DevicePolicy": 2,
"Effective": "SharedSetting",
"SharedSetting": 1,
},

具有设备策略和用户策略推荐值且用户设置被选为有效设置的属性。

          "Priority": {
"Active": 1
"DeviceEditable": true,
"DevicePolicy": 2,
"Effective": "UserSetting",
"UserEditable": true,
"UserPolicy": 3,
"UserSetting": 1
},

魔咒格式

Chrome 浏览器为 ONC 属性提供了一个 mojo API:https://source.chromium.org/chromium/chromium/src/+/main:chromeos/services/network\_config/public/mojom/cros\_network\_config.mojom

基于以下假设,mojo API 对管理属性使用了简化结构:

  • 设置用户界面和其他客户端只对活动值和活动/有效值的来源感兴趣。
  • 也就是说,如果执行了策略值或使用了推荐值,就没有必要保留任何其他设置值。

在这种简化格式中,描述性枚举用于描述有效策略源,以及该策略是强制执行还是推荐使用。

转换代码见 cros_network_config.cc:GetManagedDictionary https://source.chromium.org/chromium/chromium/src/+/main:chromeos/ash/services/network\_config/cros\_network\_config.cc

        enum PolicySource {
// The property is not controlled by policy.
kNone,
// The property value came from a user policy and is enforced.
kUserPolicyEnforced,
// The property value came from a device policy and is enforced.
kDevicePolicyEnforced,
// The property value came from a user policy and is recommended.
kUserPolicyRecommended,
// The property value came from a device policy and is recommended.
kDevicePolicyRecommended,
// The property value came from an extension.
kActiveExtension,
};

struct ManagedString {
string active_value;
PolicySource policy_source = kNone;
string? policy_value;
};

示例

具有用户策略强制值的属性。

          Priority: {
activeValue: 3,
policySource: kUserPolicyEnforced,
policyValue: 3
},

具有设备策略建议值且无设置值的属性。

          Priority: {
activeValue: 2,
policySource: kDevicePolicyRecommended,
policyValue: 2
},

带有设备策略建议值和设置值的属性。

          Priority: {
activeValue: 1,
policySource: DevicePolicyRecommended,
policyValue: 2
},

包含设备策略和用户策略建议值的属性,以及被选为有效设置的用户设置。注:用户策略优先于设备策略,在此仅作表述。设备配置保存在设备策略中。

          Priority: {
activeValue: 1,
policySource: kUserPolicyRecommended,
policyValue: 3
},

国际化和本地化

ONC 字段名称和枚举值始终使用英文,不随管理界面的语言变化。

安全考虑

对于用户和企业来说,存储在开放式网络配置文件中的数据是高度敏感的。文件格式本身提供了足够的加密选项,可确保独立用例的安全。对于通过策略发送的自动更新,应确保策略传输的安全性。作为策略获取的一部分,文件不应未经加密而存储在磁盘上,并应在使用后从内存中清除。

隐私注意事项

与安全方面的考虑类似,用户名也会出现在某些类型连接的文件中,因此文件传输或保存到磁盘的任何地方都应该是安全的。在客户端设备上,当用户特定连接的用户名被持续保存到磁盘时,应将其存储在加密位置。在这种情况下,用户也可以选择不在配置文件中保存用户凭据,而是在需要时进行提示。

下一步