1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <link rel="stylesheet" href="onc_spec.css" > 6 <script src="onc_spec.js"></script> 7 <title>Open Network Configuration Format</title> 8 </head> 9 <body> 10 11 <section id="root" class="not_in_toc"> 12 <h1>Open Network Configuration Format</h1> 13 14 <section class="not_in_toc"> 15 <h1>Outline</h1> 16 <div id="outline"></div> 17 </section> 18 19 <section> 20 <h1>Objective</h1> 21 <p> 22 We would like to create a simple, open, but complete format to describe 23 multiple network configurations for Wi-Fi, Ethernet, Cellular, 24 Bluetooth/WiFi-Direct, and VPN connections in a single file format, in order 25 to simplify and automate network configuration for users. 26 </p> 27 </section> 28 29 <section> 30 <h1>Background</h1> 31 <p> 32 Configuring networks is a painful and error-prone experience for users. It 33 is a problem shared across desktop, laptop, tablet, and phone users of all 34 operating system types. It is exacerbated in business and schools which 35 often have complex network configurations (VPNs and 802.1X networking) that 36 change often and have many connected devices. Configuration of Wi-Fi is 37 still done manually, often by administrators physically standing next to 38 users working on devices. Certificate distribution is particularly painful 39 which often results in admins instead using passphrases to protect networks 40 or using protocols without client certificates that instead use LDAP 41 passwords for authentication. Even after networks are configured, updates to 42 the network configuration require another round of manual changes, and 43 accidental changes by a user or malicious changes by an attacker can break 44 connectivity or make connections less private or secure. 45 </p> 46 47 <section> 48 <h1>Overview</h1> 49 <p> 50 We propose a single-file format for network configuration that is 51 human-readable, can describe all of the common kinds of network 52 configurations, supports integrity checking, certificate and key 53 provisioning, and updating. The file can be encrypted with a single 54 passphrase so that upon entering the passphrase the entire configuration is 55 loaded. The format can be described as an open format to enable multiple OS 56 vendors to interoperate and share configuration editors. 57 </p> 58 59 <p> 60 This format neither supports configuring browser settings nor allows setting 61 other types of system policies. 62 </p> 63 </section> 64 65 <section> 66 <h1>Infrastructure</h1> 67 <p> 68 A standalone configuration editor will be created, downloadable as a Chrome 69 app. This editor will allow creating, modifying, and encrypting an open 70 network configuration file in a way that is intuitive for a system 71 administrator. 72 </p> 73 74 <p> 75 This file format may be delivered to a user and manually imported into a 76 device. 77 </p> 78 79 <p> 80 This file format may be created by an administrator, stored in a policy 81 repository, and automatically pushed to a device. 82 </p> 83 </section> 84 85 </section> 86 87 <section> 88 <h1>Detailed Design</h1> 89 <p> 90 We use JSON format for the files. The fields in a JSON file are always 91 case-sensitive, so the exact case of the fields in this section must be 92 matched. In addition, the values that are called out as explicit constants 93 must also match the case specified (e.g. WiFi must not be written as wifi, 94 etc.). This document describes a minimum set of required fields and optional 95 fields. Other fields may be created, however, see the 96 implementation-specific fields for guidelines for these fields. 97 </p> 98 99 <p> 100 The JSON consists of a top level dictionary containing 101 a <span class="field">Type</span> field which must have either the 102 value <span class="value">EncryptedConfiguration</span> 103 or <span class="value">UnencryptedConfiguration</span>. 104 </p> 105 106 <p> 107 For a description of the <span class="type">EncryptedConfiguration</span> 108 type, see the section on Encrypted Configuration 109 below. The <span class="type">EncryptedConfiguration</span> format encrypts 110 an unencrypted JSON object. 111 </p> 112 113 <section> 114 <h1>GUIDs and Updating</h1> 115 <p> 116 This format allows for importing updated network configurations and 117 certificates by providing GUIDs to each network configuration and 118 certificate so they can be modified or even removed in future updates. 119 </p> 120 121 <p> 122 GUIDs are non-empty strings that are meant to be stable and unique. When 123 they refer to the same entity, they should be the same between ONC files. No 124 two different networks or certificates should have the same GUID, similarly 125 a network and certificate should not have the same GUID. A single ONC file 126 should not contain the same entity twice (with the same GUID). Failing any 127 of these tests indicates the ONC file is not valid. 128 </p> 129 130 <p> 131 Any GUID referred to in an ONC file must be present in the same ONC file. In 132 particular, it is an error to create a certificate in one ONC file and refer 133 to it in a NetworkConfiguration in another ONC file and not define it there, 134 even if the previous ONC file has been imported. 135 </p> 136 </section> 137 138 <section> 139 <h1>Implementation-specific fields</h1> 140 <p> 141 As there are many different kinds of connections and some that are not yet 142 anticipated may require new fields. This format allows arbitrary other 143 fields to be added. 144 </p> 145 146 <p> 147 Fields and values should follow these general guidelines: 148 </p> 149 150 <ul> 151 <li> 152 Certificates (with and without keys) should always be placed in the 153 certificate section - specifically certificate contents should not be 154 placed in fields directly. Referring to certificates should be done using 155 a field whose name ends in Ref and whose value is the GUID of the 156 certificate, or if the certificate is not contained in this file, its 157 pattern can be described using a field ending in Pattern of 158 <span class="type">CertificatePattern</span> type. 159 </li> 160 <li> 161 Fields should exist in the most-specific object in the hierarchy and 162 should be named CamelCase style. 163 </li> 164 <li> 165 Booleans and integers should be used directly instead of using a 166 stringified version of the type. 167 </li> 168 </ul> 169 170 <p> 171 Any editor of network configuration information should allows the user to 172 modify any fields that are implementation-specific. It may not be present 173 directly in the UI but it should be able to import files with such settings 174 and leave preserve these settings on export. 175 </p> 176 </section> 177 178 <section> 179 <h1>Unencrypted Configuration</h1> 180 <p> 181 When the top level <span class="field">Type</span> field 182 is <span class="value">UnencryptedConfiguration</span>, the top level JSON 183 has the <span class="type">UnencryptedConfiguration</span> 184 type. <span class="type">UnencryptedConfiguration</span> type contains the 185 following: 186 </p> 187 188 <dl class="field_list"> 189 <dt class="field">Type</dt> 190 <dd> 191 <span class="field_meta"> 192 (optional, defaults to <span class="value">UnencryptedConfiguration 193 </span>) 194 <span class="type">string</span> 195 </span> 196 Must be <span class="value">UnencryptedConfiguration</span>. 197 </dd> 198 199 <dt class="field">NetworkConfigurations</dt> 200 <dd> 201 <span class="field_meta"> 202 (optional) 203 <span class="type">array of NetworkConfiguration</span> 204 </span> 205 Describes Wi-Fi, Ethernet, VPN, and wireless connections. 206 </dd> 207 208 <dt class="field">Certificates</dt> 209 <dd> 210 <span class="field_meta"> 211 (optional) 212 <span class="type">array of Certificate</span> 213 </span> 214 Contains certificates stored in X.509 or PKCS#12 format. 215 </dd> 216 </dl> 217 218 At least one actual configuration field 219 (<span class="field">NetworkConfigurations</span> or 220 <span class="field">Certificates</span>) should be present, however it should 221 not be considered an error if no such field is present. 222 223 <section> 224 <h1>Network Configuration</h1> 225 <p> 226 Field <span class="field">NetworkConfigurations</span> is an array 227 of <span class="type">NetworkConfiguration</span> typed 228 objects. The <span class="type">NetworkConfiguration</span> type contains 229 the following: 230 </p> 231 232 <dl class="field_list"> 233 <dt class="field">Ethernet</dt> 234 <dd> 235 <span class="field_meta"> 236 (required if <span class="field">Type</span> is 237 <span class="value">Ethernet</span>, otherwise ignored) 238 <span class="type">Ethernet</span> 239 </span> 240 Ethernet settings. 241 </dd> 242 243 <dt class="field">GUID</dt> 244 <dd> 245 <span class="field_meta"> 246 (required) 247 <span class="type">string</span> 248 </span> 249 A unique identifier for this network connection, which exists to make it 250 possible to update previously imported configurations. Must be a non-empty 251 string. 252 </dd> 253 254 <dt class="field">IPConfigs</dt> 255 <dd> 256 <span class="field_meta"> 257 (optional for connected networks, read-only) 258 <span class="type">array of IPConfig</span> 259 </span> 260 Array of IPConfig properties associated with this connection. 261 </dd> 262 263 <dt class="field">StaticIPConfig</dt> 264 <dd> 265 <span class="field_meta"> 266 (optional if <span class="field">Remove</span> is 267 <span class="value">false</span>, otherwise ignored) 268 <span class="type">IPConfig</span> 269 </span> 270 Each property set in this IPConfig object overrides the respective 271 parameter received over DHCP. 272 </dd> 273 274 <dt class="field">SavedIPConfig</dt> 275 <dd> 276 <span class="field_meta"> 277 (optional for connected networks, read-only) 278 <span class="type">IPConfig</span> 279 </span> 280 IPConfig property containing the configuration that was received from the 281 DHCP server prior to applying any StaticIPConfig parameters. 282 </dd> 283 284 <dt class="field">Name</dt> 285 <dd> 286 <span class="field_meta"> 287 (required if <span class="field">Remove</span> is 288 <span class="value">false</span>, otherwise ignored) 289 <span class="type">string</span> 290 </span> 291 A user-friendly description of this connection. This name will not be used 292 for referencing and may not be unique. Instead it may be used for 293 describing the network to the user. 294 </dd> 295 296 <dt class="field">Remove</dt> 297 <dd> 298 <span class="field_meta"> 299 (optional, defaults to <span class="value">false</span>) 300 <span class="type">boolean</span> 301 </span> 302 If set, remove this network configuration (only GUID should be set). 303 </dd> 304 305 <dt class="field">ProxySettings</dt> 306 <dd> 307 <span class="field_meta"> 308 (optional if <span class="field">Remove</span> is 309 <span class="value">false</span>, otherwise ignored) 310 <span class="type">ProxySettings</span> 311 </span> 312 Proxy settings for this network 313 </dd> 314 315 <dt class="field">NameServers</dt> 316 <dd> 317 <span class="field_meta"> 318 (optional if <span class="field">Remove</span> is 319 <span class="value">false</span>, otherwise ignored) 320 <span class="type">array of string</span> 321 </span> 322 Array of addresses to use for name servers. If not specified, DHCP values 323 will be used. 324 </dd> 325 326 <dt class="field">SearchDomains</dt> 327 <dd> 328 <span class="field_meta"> 329 (optional if <span class="field">Remove</span> is 330 <span class="value">false</span>, otherwise ignored) 331 <span class="type">array of string</span> 332 </span> 333 Array of strings to append to names for resolution. Items in this array 334 should not start with a dot. Example: 335 <span class="snippet">["corp.acme.org", "acme.org"]</span>. If not 336 specified, DHCP values will be used. 337 </dd> 338 339 <dt class="field">VPN</dt> 340 <dd> 341 <span class="field_meta"> 342 (required if <span class="field">Type</span> is 343 <span class="value">VPN</span>, otherwise ignored) 344 <span class="type">VPN</span> 345 </span> 346 VPN settings. 347 </dd> 348 349 <dt class="field">WiFi</dt> 350 <dd> 351 <span class="field_meta"> 352 (required if <span class="field">Type</span> is 353 <span class="value">WiFi</span>, otherwise ignored) 354 <span class="type">WiFi</span> 355 </span> 356 Wi-Fi settings. 357 </dd> 358 359 <dt class="field">WiMAX</dt> 360 <dd> 361 <span class="field_meta"> 362 (required if <span class="field">Type</span> is 363 <span class="value">WiMAX</span>, otherwise ignored) 364 <span class="type">WiMAX</span> 365 </span> 366 WiMAX settings. 367 </dd> 368 369 <dt class="field">Cellular</dt> 370 <dd> 371 <span class="field_meta"> 372 (required if <span class="field">Type</span> is 373 <span class="value">Cellular</span>, otherwise ignored) 374 <span class="type">Cellular</span> 375 </span> 376 Cellular settings. 377 </dd> 378 379 <dt class="field">Type</dt> 380 <dd> 381 <span class="field_meta"> 382 (required if <span class="field">Remove</span> is 383 <span class="value">false</span>, otherwise ignored) 384 <span class="type">string</span> 385 </span> 386 <span class="rule"> 387 <span class="rule_id"></span> 388 Allowed values are <span class="value">Cellular</span>, 389 <span class="value">Ethernet</span>, <span class="value">WiFi</span>, 390 <span class="value">Cellular</span> and <span class="value">VPN</span>. 391 </span> 392 Indicates which kind of connection this is. 393 </dd> 394 395 <dt class="field">ConnectionState</dt> 396 <dd> 397 <span class="field_meta"> 398 (optional, read-only) 399 <span class="type">string</span> 400 </span> 401 The current connection state for this network, provided by the system. 402 <span class="rule"> 403 <span class="rule_id"></span> 404 Allowed values are: 405 <span class="value">Connected</span>, 406 <span class="value">Connecting</span>, 407 <span class="value">NotConnected</span> 408 </span> 409 </dd> 410 411 <dt class="field">RestrictedConnectivity</dt> 412 <dd> 413 <span class="field_meta"> 414 (optional, defaults to <span class="value">false</span>, read-only) 415 <span class="type">boolean</span> 416 </span> 417 True if a connnected network has limited connectivity to the Internet, 418 e.g. a connection is behind a portal or a cellular network is not 419 activated or requires payment. 420 </dd> 421 422 <dt class="field">Connectable</dt> 423 <dd> 424 <span class="field_meta"> 425 (optional, read-only) 426 <span class="type">boolean</span> 427 </span> 428 True if the system indicates that the network can be connected to without 429 any additional configuration. 430 </dd> 431 432 <dt class="field">ErrorState</dt> 433 <dd> 434 <span class="field_meta"> 435 (optional, read-only) 436 <span class="type">string</span> 437 </span> 438 The current error state for this network. Error states are provided by 439 the system and are not explicitly defined here. They may or may not be 440 human-readable. This field will be empty or absent if the network is not 441 in an error state. 442 </dd> 443 444 <dt class="field">MacAddress</dt> 445 <dd> 446 <span class="field_meta"> 447 (optional, read-only) 448 <span class="type">string</span> 449 </span> 450 The MAC address for the network. Only applies to connected non-virtual 451 networks. The format is 00:11:22:AA:BB:CC. 452 </dd> 453 454 <dt class="field">Source</dt> 455 <dd> 456 <span class="field_meta"> 457 (optional, read-only) 458 <span class="type">string</span> 459 </span> 460 Indicates whether the network is configured and how it is configured: 461 <ul> 462 <li><span class="value">User</span>: Configured for the active 463 user only, i.e. an unshared configuration.</li> 464 <li><span class="value">Device</span>: Configured for all users of the 465 device (e.g laptop), i.e. a shared configuration.</li> 466 <li><span class="value">UserPolicy</span>: Configured by the user 467 policy for the active user.</li> 468 <li><span class="value">DevicePolicy</span>: Configured by the device 469 policy for the device.</li> 470 <li><span class="value">None</span>: Not configured, e.g. a visible 471 but unconfigured WiFi network.</li> 472 </ul> 473 <span class="rule"> 474 <span class="rule_id"></span> 475 Allowed values are: 476 <span class="value">User</span>, 477 <span class="value">Device</span>, 478 <span class="value">UserPolicy</span>, 479 <span class="value">DevicePolicy</span>, 480 <span class="value">None</span> 481 </span> 482 </dd> 483 484 <dt class="field">Priority</dt> 485 <dd> 486 <span class="field_meta"> 487 (optional) 488 <span class="type">integer</span> 489 </span> 490 Provides a suggested priority value for this network. May be used by the 491 system to determine which network to connect to when multiple configured 492 networks are available (or may be ignored). 493 </dd> 494 495 </dl> 496 497 <section> 498 <h1>Ethernet networks</h1> 499 <p> 500 For Ethernet connections, <span class="field">Type</span> must be set to 501 <span class="value">Ethernet</span> and the 502 field <span class="field">Ethernet</span> must be set to an object of 503 type <span class="type">Ethernet</span> containing the following fields: 504 </p> 505 506 <dl class="field_list"> 507 <dt class="field">Authentication</dt> 508 <dd> 509 <span class="field_meta"> 510 (optional) 511 <span class="type">string</span> 512 </span> 513 <span class="rule"> 514 <span class="rule_id"></span> 515 Allowed values are <span class="value">None</span> and 516 <span class="value">8021X</span>. 517 </span> 518 </dd> 519 520 <dt class="field">EAP</dt> 521 <dd> 522 <span class="field_meta"> 523 (required if <span class="field">Authentication</span> is 524 <span class="value">8021X</span>, otherwise ignored) 525 <span class="type">EAP</span> 526 </span> 527 EAP settings. 528 </dd> 529 </dl> 530 </section> 531 532 <section> 533 <h1>IP Config</h1> 534 <p> 535 Field <span class="field">IPConfigs</span> is an array 536 of <span class="type">IPConfig</span> 537 objects. Each <span class="type">IPConfig</span> object describes a 538 particular static IP configuration and contains the following fields: 539 </p> 540 541 <dl class="field_list"> 542 <dt class="field">Type</dt> 543 <dd> 544 <span class="field_meta"> 545 (required) 546 <span class="type">string</span> 547 </span> 548 <span class="rule"> 549 <span class="rule_id"></span> 550 Allowed values are <span class="value">IPv4</span> 551 and <span class="value">IPv6</span> 552 </span> 553 Describes the type of configuration this is. 554 </dd> 555 556 <dt class="field">IPAddress</dt> 557 <dd> 558 <span class="field_meta"> 559 (required) 560 <span class="type">string</span> 561 </span> 562 Describes the IPv4 or IPv6 address of a connection, depending on the value 563 of <span class="field">Type</span> field. It should not contain the 564 routing prefix (i.e. should not end in something like /64). 565 </dd> 566 567 <dt class="field">RoutingPrefix</dt> 568 <dd> 569 <span class="field_meta"> 570 (required) 571 <span class="type">integer</span> 572 </span> 573 <span class="rule"> 574 <span class="rule_id"></span> 575 Must be a number in the range [1, 32] for IPv4 and [1, 128] for IPv6 576 addresses. 577 </span> 578 Describes the routing prefix. 579 </dd> 580 581 <dt class="field">Gateway</dt> 582 <dd> 583 <span class="field_meta"> 584 (optional) 585 <span class="type">string</span> 586 </span> 587 Describes the gateway address to use for the configuration. Must match 588 address type specified in <span class="field">Type</span> field. If not 589 specified, DHCP values will be used. 590 </dd> 591 592 <dt class="field">NameServers</dt> 593 <dd> 594 <span class="field_meta"> 595 (optional) 596 <span class="type">array of string</span> 597 </span> 598 Array of addresses to use for name servers. Address format must match that 599 specified in the <span class="field">Type</span> field. Overrides values 600 in the top level NameServers field for this configuration. If not 601 specified, top level values will be used. 602 </dd> 603 604 <dt class="field">SearchDomains</dt> 605 <dd> 606 <span class="field_meta"> 607 (optional) 608 <span class="type">array of string</span> 609 </span> 610 Array of strings to append to names for resolution. Items in this array 611 should not start with a dot. Example: <span class="snippet">[ 612 "corp.acme.org", "acme.org" ]</span>. Overrides values in the top level 613 SearchDomains field for this configuration. If not specified, top level 614 values will be used. 615 </dd> 616 617 <dt class="field">WebProxyAutoDiscoveryUrl</dt> 618 <dd> 619 <span class="field_meta"> 620 (optional if part of <span class="field">IPConfigs</span>) 621 <span class="type">string</span> 622 </span> 623 The Web Proxy Auto-Discovery URL for this network as reported over DHCP. 624 </dd> 625 626 </dl> 627 </section> 628 629 <section> 630 <h1>Wi-Fi networks</h1> 631 <p> 632 For Wi-Fi connections, <span class="field">Type</span> must be set to 633 <span class="value">WiFi</span> and the 634 field <span class="field">WiFi</span> must be set to an object of 635 type <span class="type">WiFi</span> containing the following fields: 636 </p> 637 638 <dl class="field_list"> 639 <dt class="field">AutoConnect</dt> 640 <dd> 641 <span class="field_meta"> 642 (optional, defaults to <span class="value">false</span>) 643 <span class="type">boolean</span> 644 </span> 645 Indicating that the network should be connected to automatically when in 646 range. 647 </dd> 648 649 <dt class="field">EAP</dt> 650 <dd> 651 <span class="field_meta"> 652 (required if <span class="field">Security</span> is 653 <span class="value">WEP-8021X</span> or 654 <span class="value">WPA-EAP</span>, otherwise ignored) 655 <span class="type">EAP</span> 656 </span> 657 EAP settings. 658 </dd> 659 660 <dt class="field">HiddenSSID</dt> 661 <dd> 662 <span class="field_meta"> 663 (optional, defaults to <span class="value">false</span>) 664 <span class="type">boolean</span> 665 </span> 666 Indicating if the SSID will be broadcast. 667 </dd> 668 669 <dt class="field">Passphrase</dt> 670 <dd> 671 <span class="field_meta"> 672 (required if <span class="field">Security</span> is 673 <span class="value">WEP-PSK</span> or 674 <span class="value">WPA-PSK</span>, otherwise ignored) 675 <span class="type">string</span> 676 </span> 677 Describes the passphrase for WEP/WPA/WPA2 678 connections. If <span class="value">WEP-PSK</span> is used, the passphrase 679 must be of the format 0x<hex-number>, where <hex-number> is 680 40, 104, 128, or 232 bits. 681 </dd> 682 683 <dt class="field">Security</dt> 684 <dd> 685 <span class="field_meta"> 686 (required) 687 <span class="type">string</span> 688 </span> 689 <span class="rule"> 690 <span class="rule_id"></span> 691 Allowed values are <span class="value">None</span>, 692 <span class="value">WEP-PSK</span>, 693 <span class="value">WEP-8021X</span>, 694 <span class="value">WPA-PSK</span>, and 695 <span class="value">WPA-EAP</span>. 696 </span> 697 </dd> 698 699 <dt class="field">SSID</dt> 700 <dd> 701 <span class="field_meta"> 702 (required) 703 <span class="type">string</span> 704 </span> 705 SSID of the network. 706 </dd> 707 708 <dt class="field">SignalStrength</dt> 709 <dd> 710 <span class="field_meta"> 711 (optional, read-only) 712 <span class="type">integer</span> 713 </span> 714 The current signal strength for this network in the range [0, 100], 715 provided by the system. If the network is not in range this field will 716 be set to '0' or not present. 717 </dd> 718 </dl> 719 </section> 720 721 <section> 722 <h1>VPN networks</h1> 723 <p> 724 There are many kinds of VPNs with widely varying configuration options. We 725 offer standard configuration options for a few common configurations at this 726 time, and may add more later. For all others, implementation specific fields 727 should be used. 728 </p> 729 730 <p> 731 For VPN connections, <span class="field">Type</span> must be set 732 to <span class="value">VPN</span> and the 733 field <span class="field">VPN</span> must be set to an object of 734 type <span class="type">VPN</span> containing the following fields: 735 </p> 736 737 <dl class="field_list"> 738 <dt class="field">AutoConnect</dt> 739 <dd> 740 <span class="field_meta"> 741 (optional, defaults to <span class="value">false</span>) 742 <span class="type">boolean</span> 743 </span> 744 Indicating that the network should be connected to automatically. 745 </dd> 746 747 <dt class="field">Host</dt> 748 <dd> 749 <span class="field_meta"> 750 (optional) 751 <span class="type">string</span> 752 </span> 753 Host name or IP address of server to connect to. The only scenario that 754 does not require a host is a VPN that encrypts but does not tunnel 755 traffic. Standalone IPsec (v1 or v2, cert or PSK based -- this is not the 756 same as L2TP over IPsec) is one such setup. For all other types of VPN, 757 the <span class="field">Host</span> field is required. 758 </dd> 759 760 <dt class="field">IPsec</dt> 761 <dd> 762 <span class="field_meta"> 763 (required if <span class="field">Type</span> is 764 <span class="value">IPsec</span> or 765 <span class="value">L2TP-IPsec</span>, otherwise ignored) 766 <span class="type">IPsec</span> 767 </span> 768 IPsec layer settings. 769 </dd> 770 771 <dt class="field">L2TP</dt> 772 <dd> 773 <span class="field_meta"> 774 (required if <span class="field">Type</span> is 775 <span class="value">L2TP-IPsec</span>, otherwise ignored) 776 <span class="type">L2TP</span> 777 </span> 778 L2TP layer settings. 779 </dd> 780 781 <dt class="field">OpenVPN</dt> 782 <dd> 783 <span class="field_meta"> 784 (required if <span class="field">Type</span> is 785 <span class="value">OpenVPN</span>, otherwise ignored) 786 <span class="type">OpenVPN</span> 787 </span> 788 OpenVPN settings. 789 </dd> 790 791 <dt class="field">Type</dt> 792 <dd> 793 <span class="field_meta"> 794 (required) 795 <span class="type">string</span> 796 </span> 797 <span class="rule"> 798 <span class="rule_id"></span> 799 Allowed values are <span class="value">IPsec</span>, 800 <span class="value">L2TP-IPsec</span>, and 801 <span class="value">OpenVPN</span>. 802 </span> 803 Type of the VPN. 804 </dd> 805 </dl> 806 807 <section> 808 <h1>IPsec-based VPN types</h1> 809 <p> 810 The <span class="type">IPsec</span> type contains the following: 811 </p> 812 813 <dl class="field_list"> 814 <dt class="field">AuthenticationType</dt> 815 <dd> 816 <span class="field_meta"> 817 (required) 818 <span class="type">string</span> 819 </span> 820 <span class="rule"> 821 <span class="rule_id"></span> 822 Allowed values are <span class="value">PSK</span> and 823 <span class="value">Cert</span>. If <span class="value">Cert</span> is used, <span class="field">ClientCertType</span> and <span class="field">ServerCARefs</span> (or the deprecated <span class="field">ServerCARef</span>) must be set. 824 </span> 825 </dd> 826 827 <dt class="field">ClientCertPattern</dt> 828 <dd> 829 <span class="field_meta"> 830 (required if <span class="field">ClientCertType</span> 831 is <span class="value">Pattern</span>, otherwise ignored) 832 <span class="type">CertificatePattern</span> 833 </span> 834 Pattern describing the client certificate. 835 </dd> 836 837 <dt class="field">ClientCertRef</dt> 838 <dd> 839 <span class="field_meta"> 840 (required if <span class="field">ClientCertType</span> 841 is <span class="value">Ref</span>, otherwise ignored) 842 <span class="type">string</span> 843 </span> 844 Reference to client certificate stored in certificate section. 845 </dd> 846 847 <dt class="field">ClientCertType</dt> 848 <dd> 849 <span class="field_meta"> 850 (required if <span class="field">AuthenticationType</span> 851 is <span class="value">Cert</span>, otherwise ignored) 852 <span class="type">string</span> 853 </span> 854 <span class="rule"> 855 <span class="rule_id"></span> 856 Allowed values are <span class="value">Ref</span> and 857 <span class="value">Pattern</span> 858 </span> 859 </dd> 860 861 <dt class="field">EAP</dt> 862 <dd> 863 <span class="field_meta"> 864 (optional if <span class="field">IKEVersion</span> is 2, otherwise 865 ignored) 866 <span class="type">EAP</span> 867 </span> 868 Indicating that EAP authentication should be used with the provided 869 parameters. 870 </dd> 871 872 <dt class="field">Group</dt> 873 <dd> 874 <span class="field_meta"> 875 (optional if <span class="field">IKEVersion</span> is 1, otherwise 876 ignored) 877 <span class="type">string</span> 878 </span> 879 Group name used for machine authentication. 880 </dd> 881 882 <dt class="field">IKEVersion</dt> 883 <dd> 884 <span class="field_meta"> 885 (required) 886 <span class="type">integer</span> 887 </span> 888 Version of IKE protocol to use. 889 </dd> 890 891 <dt class="field">PSK</dt> 892 <dd> 893 <span class="field_meta"> 894 (optional if <span class="field">AuthenticationType</span> 895 is <span class="value">PSK</span>, otherwise ignored) 896 <span class="type">string</span> 897 </span> 898 Pre-Shared Key. If not specified, user is prompted at time of 899 connection. 900 </dd> 901 902 <dt class="field">SaveCredentials</dt> 903 <dd> 904 <span class="field_meta"> 905 (optional if <span class="field">AuthenticationType</span> 906 is <span class="value">PSK</span>, otherwise ignored, defaults 907 to <span class="value">false</span>) 908 <span class="type">boolean</span> 909 </span> 910 If <span class="value">false</span>, require user to enter credentials 911 (PSK) each time they connect. 912 </dd> 913 914 <dt class="field">ServerCARefs</dt> 915 <dd> 916 <span class="field_meta"> 917 (optional if <span class="field">AuthenticationType</span> 918 is <span class="value">Cert</span>, otherwise rejected) 919 <span class="type">array of string</span> 920 </span> 921 Non-empty list of references to CA certificates in <span class="field">Certificates</span> to be used for verifying the host's certificate chain. At least one of the CA certificates must match. If this field is set, <span class="field">ServerCARef</span> must be unset. 922 </dd> 923 924 <dt class="field">ServerCARef</dt> 925 <dd> 926 <span class="field_meta"> 927 (optional if <span class="field">AuthenticationType</span> 928 is <span class="value">Cert</span>, otherwise rejected) 929 <span class="type">string</span> 930 </span> 931 DEPRECATED, use <span class="field">ServerCARefs</span> instead.<br/> 932 Reference to a CA certificate in <span class="field">Certificates</span>. Certificate authority to use for verifying connection. If this field is set, <span class="field">ServerCARefs</span> must be unset. 933 </dd> 934 935 <dt class="field">XAUTH</dt> 936 <dd> 937 <span class="field_meta"> 938 (optional if <span class="field">IKEVersion</span> is 1, otherwise 939 ignored) 940 <span class="type">XAUTH</span> 941 </span> 942 Describing XAUTH credentials. XAUTH is not used if this object is not 943 present. 944 </dd> 945 </dl> 946 947 <p class="rule"> 948 <span class="rule_id"></span> 949 If <span class="field">AuthenticationType</span> is set to <span class="value">Cert</span>, <span class="field">ServerCARefs</span> or <span class="field">ServerCARef</span> must be set. 950 </p> 951 952 <p class="rule"> 953 <span class="rule_id"></span> 954 At most one of <span class="field">ServerCARefs</span> and <span class="field">ServerCARef</span> can be set. 955 </p> 956 957 <p> 958 <span class="type">L2TP</span> type contains the following: 959 </p> 960 961 <dl class="field_list"> 962 <dt class="field">Password</dt> 963 <dd> 964 <span class="field_meta"> 965 (optional) 966 <span class="type">string</span> 967 </span> 968 User authentication password. If not specified, user is prompted at time 969 of connection. 970 </dd> 971 972 <dt class="field">SaveCredentials</dt> 973 <dd> 974 <span class="field_meta"> 975 (optional, defaults to <span class="value">false</span>) 976 <span class="type">boolean</span> 977 </span> 978 If <span class="value">false</span>, require user to enter credentials 979 each time they connect. 980 </dd> 981 982 <dt class="field">Username</dt> 983 <dd> 984 <span class="field_meta"> 985 (optional) 986 <span class="type">string</span> 987 </span> 988 User identity. This value is subject to string expansions. If not 989 specified, user is prompted at time of connection. 990 </dd> 991 </dl> 992 993 <p> 994 <span class="type">XAUTH</span> type contains the following: 995 </p> 996 997 <dl class="field_list"> 998 <dt class="field">Password</dt> 999 <dd> 1000 <span class="field_meta"> 1001 (optional) 1002 <span class="type">string</span> 1003 </span> 1004 XAUTH password. If not specified, user is prompted at time of 1005 connection. 1006 </dd> 1007 1008 <dt class="field">SaveCredentials</dt> 1009 <dd> 1010 <span class="field_meta"> 1011 (optional, defaults to <span class="value">false</span>) 1012 <span class="type">boolean</span> 1013 </span> 1014 If <span class="value">false</span>, require user to enter credentials 1015 each time they connect. 1016 </dd> 1017 1018 <dt class="field">Username</dt> 1019 <dd> 1020 <span class="field_meta"> 1021 (optional) 1022 <span class="type">string</span> 1023 </span> 1024 XAUTH user name. This value is subject to string expansions. If not 1025 specified, user is prompted at time of connection. 1026 </dd> 1027 </dl> 1028 1029 <section> 1030 <h1>IPsec IKE v1 VPN connections</h1> 1031 <p> 1032 <span class="field">VPN.Type</span> must 1033 be <span class="value">IPsec</span>, <span class="field">IKEVersion</span> 1034 must be 1. Do not use this for L2TP over IPsec. This may be used for 1035 machine-authentication-only IKEv1 or for IKEv1 with XAUTH. See 1036 the <span class="type">IPsec</span> type described below. 1037 </p> 1038 </section> 1039 1040 <section> 1041 <h1>IPsec IKE v2 VPN connections</h1> 1042 <p> 1043 <span class="field">VPN.Type</span> must 1044 be <span class="value">IPsec</span>, <span class="field">IKEVersion</span> 1045 must be 2. This may be used with EAP-based user authentication. 1046 </p> 1047 </section> 1048 1049 <section> 1050 <h1>L2TP over IPsec VPN connections</h1> 1051 <p> 1052 There are two major configurations L2TP over IPsec which depend on how IPsec 1053 is authenticated. In either case <span class="field">Type</span> must be 1054 <span class="value">L2TP-IPsec</span>. They are described below. 1055 </p> 1056 1057 <p> 1058 L2TP over IPsec with pre-shared key: 1059 </p> 1060 1061 <ul> 1062 <li>The field <span class="field">IPsec</span> must be present and have the 1063 following settings: 1064 <ul> 1065 <li><span class="field">IKEVersion</span> must be 1.</li> 1066 <li><span class="field">AuthenticationType</span> must be PSK.</li> 1067 <li><span class="field">XAUTH</span> must not be set.</li> 1068 </ul> 1069 </li> 1070 <li>The field <span class="field">L2TP</span> must be present.</li> 1071 </ul> 1072 </section> 1073 1074 </section> 1075 1076 <section> 1077 <h1>OpenVPN connections and types</h1> 1078 <p> 1079 <span class="field">VPN.Type</span> must be 1080 <span class="value">OpenVPN</span>. 1081 </p> 1082 1083 <p> 1084 <span class="type">OpenVPN</span> type contains the following: 1085 </p> 1086 1087 <dl class="field_list"> 1088 <dt class="field">Auth</dt> 1089 <dd> 1090 <span class="field_meta"> 1091 (optional, defaults to <span class="value">SHA1</span>) 1092 <span class="type">string</span> 1093 </span> 1094 </dd> 1095 1096 <dt class="field">AuthRetry</dt> 1097 <dd> 1098 <span class="field_meta"> 1099 (optional, defaults to <span class="value">none</span>) 1100 <span class="type">string</span> 1101 </span> 1102 <span class="rule"> 1103 <span class="rule_id"></span> 1104 Allowed values are <span class="value">none</span>, 1105 <span class="value">nointeract</span>, and 1106 <span class="value">interact</span>. 1107 </span> 1108 Controls how OpenVPN responds to username/password verification 1109 errors:<br> Either fail with error on retry 1110 (<span class="value">none</span>), retry without asking for authentication 1111 (<span class="value">nointeract</span>), or ask again for authentication 1112 each time (<span class="value">interact</span>). 1113 </dd> 1114 1115 <dt class="field">AuthNoCache</dt> 1116 <dd> 1117 <span class="field_meta"> 1118 (optional, defaults to <span class="value">false</span>) 1119 <span class="type">boolean</span> 1120 </span> 1121 Disable caching of credentials in memory. 1122 </dd> 1123 1124 <dt class="field">Cipher</dt> 1125 <dd> 1126 <span class="field_meta"> 1127 (optional, defaults to <span class="value">BF-CBC</span>) 1128 <span class="type">string</span> 1129 </span> 1130 Cipher to use. 1131 </dd> 1132 1133 <dt class="field">ClientCertRef</dt> 1134 <dd> 1135 <span class="field_meta"> 1136 (required if <span class="field">ClientCertType</span> is 1137 <span class="value">Ref</span>, otherwise ignored) 1138 <span class="type">string</span> 1139 </span> 1140 Reference to client certificate stored in certificate section. 1141 </dd> 1142 1143 <dt class="field">ClientCertPattern</dt> 1144 <dd> 1145 <span class="field_meta"> 1146 (required if <span class="field">ClientCertType</span> is 1147 <span class="value">Pattern</span>, otherwise ignored) 1148 <span class="type">CertificatePattern</span> 1149 </span> 1150 Pattern to use to find the client certificate. 1151 </dd> 1152 1153 <dt class="field">ClientCertType</dt> 1154 <dd> 1155 <span class="field_meta"> 1156 (required) 1157 <span class="type">string</span> 1158 </span> 1159 <span class="rule"> 1160 <span class="rule_id"></span> 1161 Allowed values are <span class="value">Ref</span>, 1162 <span class="value">Pattern</span>, and <span class="value">None</span>. 1163 </span> 1164 <span class="value">None</span> implies that the server is configured to 1165 not require client certificates. 1166 </dd> 1167 1168 <dt class="field">CompLZO</dt> 1169 <dd> 1170 <span class="field_meta"> 1171 (optional, defaults to <span class="value">adaptive</span>) 1172 <span class="type">string</span> 1173 </span> 1174 Decides to fast LZO compression with <span class="value">true</span> 1175 and <span class="value">false</span> as other values. 1176 </dd> 1177 1178 <dt class="field">CompNoAdapt</dt> 1179 <dd> 1180 <span class="field_meta"> 1181 (optional, defaults to <span class="value">false</span>) 1182 <span class="type">boolean</span> 1183 </span> 1184 Disables adaptive compression. 1185 </dd> 1186 1187 <dt class="field">IgnoreDefaultRoute</dt> 1188 <dd> 1189 <span class="field_meta"> 1190 (optional, defaults to <span class="value">false</span>) 1191 <span class="type">bool</span> 1192 </span> 1193 Omits a default route to the VPN gateway while the connection is active. 1194 By default, the client creates a default route to the gateway address 1195 advertised by the VPN server. Setting this value to 1196 <span class="value">true</span> will allow split tunnelling for 1197 configurations where the VPN server omits explicit default routes. 1198 This is roughly equivalent to omitting "redirect-gateway" OpenVPN client 1199 configuration option. If the server pushes a "redirect-gateway" 1200 configuration flag to the client, this option is ignored. 1201 </dd> 1202 1203 <dt class="field">KeyDirection</dt> 1204 <dd> 1205 <span class="field_meta"> 1206 (optional) 1207 <span class="type">string</span> 1208 </span> 1209 Passed as --key-direction. 1210 </dd> 1211 1212 <dt class="field">NsCertType</dt> 1213 <dd> 1214 <span class="field_meta"> 1215 (optional) 1216 <span class="type">string</span> 1217 </span> 1218 If set, checks peer certificate type. Should only be set 1219 to <span class="value">server</span> if set. 1220 </dd> 1221 1222 <dt class="field">Password</dt> 1223 <dd> 1224 <span class="field_meta"> 1225 (optional) 1226 <span class="type">string</span> 1227 </span> 1228 XAUTH password. If not specified, user is prompted at time of connection. 1229 </dd> 1230 1231 <dt class="field">Port</dt> 1232 <dd> 1233 <span class="field_meta"> 1234 (optional, defaults to <span class="value">1194</span>) 1235 <span class="type">integer</span> 1236 </span> 1237 Port for connecting to server. 1238 </dd> 1239 1240 <dt class="field">Proto</dt> 1241 <dd> 1242 <span class="field_meta"> 1243 (optional, defaults to <span class="value">udp</span>) 1244 <span class="type">string</span> 1245 </span> 1246 Protocol for communicating with server. 1247 </dd> 1248 1249 <dt class="field">PushPeerInfo</dt> 1250 <dd> 1251 <span class="field_meta"> 1252 (optional, defaults to <span class="value">false</span>) 1253 <span class="type">boolean</span> 1254 </span> 1255 </dd> 1256 1257 <dt class="field">RemoteCertEKU</dt> 1258 <dd> 1259 <span class="field_meta"> 1260 (optional) 1261 <span class="type">string</span> 1262 </span> 1263 Require that the peer certificate was signed with this explicit extended 1264 key usage in oid notation. 1265 </dd> 1266 1267 <dt class="field">RemoteCertKU</dt> 1268 <dd> 1269 <span class="field_meta"> 1270 (optional, defaults to []) 1271 <span class="type">array of string</span> 1272 </span> 1273 Require the given array of key usage numbers. These are strings that are 1274 hex encoded numbers. 1275 </dd> 1276 1277 <dt class="field">RemoteCertTLS</dt> 1278 <dd> 1279 <span class="field_meta"> 1280 (optional, defaults to <span class="value">server</span>) 1281 <span class="type">string</span> 1282 </span> 1283 <span class="rule"> 1284 <span class="rule_id"></span> 1285 Allowed values are <span class="value">none</span> and 1286 <span class="value">server</span>. 1287 </span> 1288 Require peer certificate signing based on RFC3280 TLS rules. 1289 </dd> 1290 1291 <dt class="field">RenegSec</dt> 1292 <dd> 1293 <span class="field_meta"> 1294 (optional, defaults to <span class="value">3600</span>) 1295 <span class="type">integer</span> 1296 </span> 1297 Renegotiate data channel key after this number of seconds. 1298 </dd> 1299 1300 <dt class="field">SaveCredentials</dt> 1301 <dd> 1302 <span class="field_meta"> 1303 (optional, defaults to <span class="value">false</span>) 1304 <span class="type">boolean</span> 1305 </span> 1306 If <span class="value">false</span>, require user to enter credentials 1307 each time they connect. 1308 </dd> 1309 1310 <dt class="field">ServerCARefs</dt> 1311 <dd> 1312 <span class="field_meta"> 1313 (optional) 1314 <span class="type">array of string</span> 1315 </span> 1316 Non-empty list of references to CA certificates in <span class="field">Certificates</span> to be used for verifying the host's certificate chain. At least one of the CA certificates must match. See also OpenVPN's command line option "--ca". If this field is set, <span class="field">ServerCARef</span> must be unset. 1317 </dd> 1318 1319 <dt class="field">ServerCARef</dt> 1320 <dd> 1321 <span class="field_meta"> 1322 (optional) 1323 <span class="type">string</span> 1324 </span> 1325 DEPRECATED, use <span class="field">ServerCARefs</span> instead.<br/> 1326 Reference to a CA certificate in <span class="field">Certificates</span>. Certificate authority to use for verifying connection. If this field is set, <span class="field">ServerCARefs</span> must be unset. 1327 </dd> 1328 1329 <dt class="field">ServerCertRef</dt> 1330 <dd> 1331 <span class="field_meta"> 1332 (optional) 1333 <span class="type">string</span> 1334 </span> 1335 Reference to a certificate. Peer's signed certificate. 1336 </dd> 1337 1338 <dt class="field">ServerPollTimeout</dt> 1339 <dd> 1340 <span class="field_meta"> 1341 (optional) 1342 <span class="type">integer</span> 1343 </span> 1344 Spend no more than this number of seconds before trying the next server. 1345 </dd> 1346 1347 <dt class="field">Shaper</dt> 1348 <dd> 1349 <span class="field_meta"> 1350 (optional) 1351 <span class="type">integer</span> 1352 </span> 1353 If not specified no bandwidth limiting, otherwise limit bandwidth of 1354 outgoing tunnel data to this number of bytes per second. 1355 </dd> 1356 1357 <dt class="field">StaticChallenge</dt> 1358 <dd> 1359 <span class="field_meta"> 1360 (optional) 1361 <span class="type">string</span> 1362 </span> 1363 String is used in static challenge response. Note that echoing is always 1364 done. 1365 </dd> 1366 1367 <dt class="field">TLSAuthContents</dt> 1368 <dd> 1369 <span class="field_meta"> 1370 (optional) 1371 <span class="type">string</span> 1372 </span> 1373 If not set, tls auth is not used. If set, this is the TLS Auth key 1374 contents (usually starts with "-----BEGIN OpenVPN Static Key..." 1375 </dd> 1376 1377 <dt class="field">TLSRemote</dt> 1378 <dd> 1379 <span class="field_meta"> 1380 (optional) 1381 <span class="type">string</span> 1382 </span> 1383 If set, only allow connections to server hosts with X509 name or common 1384 name equal to this string. 1385 </dd> 1386 1387 <dt class="field">Username</dt> 1388 <dd> 1389 <span class="field_meta"> 1390 (optional) 1391 <span class="type">string</span> 1392 </span> 1393 OpenVPN user name. This value is subject to string expansions. If not 1394 specified, user is prompted at time of connection. 1395 </dd> 1396 1397 <dt class="field">Verb</dt> 1398 <dd> 1399 <span class="field_meta"> 1400 (optional) 1401 <span class="type">string</span> 1402 </span> 1403 Verbosity level, defaults to OpenVpn's default if not specified. 1404 </dd> 1405 1406 <dt class="field">VerifyHash</dt> 1407 <dd> 1408 <span class="field_meta"> 1409 (optional) 1410 <span class="type">string</span> 1411 </span> 1412 If set, this value is passed as the "--verify-hash" argument to OpenVPN, 1413 which specifies the SHA1 fingerprint for the level-1 certificate. 1414 </dd> 1415 1416 <dt class="field">VerifyX509</dt> 1417 <dd> 1418 <span class="field_meta"> 1419 (optional) 1420 <span class="type">VerifyX509</span> 1421 </span> 1422 If set, the "--verify-x509-name" argument is passed to OpenVPN with the values of this object and only connections will be accepted if a host's X.509 name is equal to the given name. 1423 </dd> 1424 </dl> 1425 1426 <p class="rule"> 1427 <span class="rule_id"></span> 1428 At most one of <span class="field">ServerCARefs</span> and <span class="field">ServerCARef</span> can be set. 1429 </p> 1430 1431 <p> 1432 <span class="type">VerifyX509</span> type contains the following: 1433 </p> 1434 <dl class="field_list"> 1435 <dt class="field">Name</dt> 1436 <dd> 1437 <span class="field_meta"> 1438 (required) 1439 <span class="type">string</span> 1440 </span> 1441 The name that the host's X.509 name is compared to. Which host name is compared depends on the value of <span class="field">Type</span>. 1442 </dd> 1443 1444 <dt class="field">Type</dt> 1445 <dd> 1446 <span class="field_meta"> 1447 (optional) 1448 <span class="type">string</span> 1449 </span> 1450 Determines which of the host's X.509 names will be verified. Allowed values are <span class="value">name</span>, <span class="value">name-prefix</span> and <span class="value">subject</span>. See OpenVPN's documentation for "--verify-x509-name" for the meaning of each value. Defaults to OpenVPN's default if not specified. 1451 </dd> 1452 </dl> 1453 1454 </section> 1455 1456 </section> 1457 1458 <section> 1459 <h1>Client certificate patterns</h1> 1460 <p> 1461 In order to allow clients to securely key their private keys and request 1462 certificates through PKCS#10 format or through a web flow, we provide 1463 alternative CertificatePattern types. The 1464 <span class="type">CertificatePattern</span> type contains the following: 1465 </p> 1466 1467 <dl class="field_list"> 1468 <dt class="field">IssuerCARef</dt> 1469 <dd> 1470 <span class="field_meta"> 1471 (optional) 1472 <span class="type">array of string</span> 1473 </span> 1474 Array of references to certificates. At least one must have signed the 1475 client certificate. 1476 </dd> 1477 1478 <dt class="field">Issuer</dt> 1479 <dd> 1480 <span class="field_meta"> 1481 (optional) 1482 <span class="type">IssuerSubjectPattern</span> 1483 </span> 1484 Pattern to match the issuer X.509 settings against. If not specified, the 1485 only checks done will be a signature check against 1486 the <span class="field">IssuerCARef</span> field. Issuer of the 1487 certificate must match this field exactly to match the pattern. 1488 </dd> 1489 1490 <dt class="field">Subject</dt> 1491 <dd> 1492 <span class="field_meta"> 1493 (optional) 1494 <span class="type">IssuerSubjectPattern</span> 1495 </span> 1496 Pattern to match the subject X.509 settings against. If not specified, the 1497 subject settings are not checked and any certificate matches. Subject of 1498 the certificate must match this field exactly to match the pattern. 1499 </dd> 1500 1501 <dt class="field">EnrollmentURI</dt> 1502 <dd> 1503 <span class="field_meta"> 1504 (optional) 1505 <span class="type">array of string</span> 1506 </span> 1507 If no certificate matches this CertificatePattern, the first URI from this 1508 array with a recognized scheme is navigated to, with the intention this 1509 informs the user how to either get the certificate or gets the certificate 1510 for the user. For instance, the array may be [ 1511 "chrome-extension://asakgksjssjwwkeielsjs/fetch-client-cert.html", 1512 "http://intra/connecting-to-wireless.html" ] so that for Chrome browsers a 1513 Chrome app or extension is shown to the user, but for other browsers, a 1514 web URL is shown. 1515 </dd> 1516 </dl> 1517 1518 <p> 1519 The <span class="type">IssuerSubjectPattern</span> type contains the 1520 following: 1521 </p> 1522 1523 <dl class="field_list"> 1524 <dt class="field">CommonName</dt> 1525 <dd> 1526 <span class="field_meta"> 1527 (optional) 1528 <span class="type">string</span> 1529 </span> 1530 Certificate subject's commonName must match this string if present. 1531 </dd> 1532 1533 <dt class="field">Locality</dt> 1534 <dd> 1535 <span class="field_meta"> 1536 (optional) 1537 <span class="type">string</span> 1538 </span> 1539 Certificate subject's location must match this string if present. 1540 </dd> 1541 1542 <dt class="field">Organization</dt> 1543 <dd> 1544 <span class="field_meta"> 1545 (optional) 1546 <span class="type">string</span> 1547 </span> 1548 At least one of certificate subject's organizations must match this string 1549 if present. 1550 </dd> 1551 1552 <dt class="field">OrganizationalUnit</dt> 1553 <dd> 1554 <span class="field_meta"> 1555 (optional) 1556 <span class="type">string</span> 1557 </span> 1558 At least one of certificate subject's organizational units must match this 1559 string if present. 1560 </dd> 1561 </dl> 1562 1563 <p class="rule"> 1564 <span class="rule_id"></span> 1565 One field in <span class="field">Subject</span>, 1566 <span class="field">Issuer</span>, or <span class="field">IssuerCARef</span> 1567 must be given for a <span class="type">CertificatePattern</span> typed field 1568 to be valid. 1569 </p> 1570 1571 <p> 1572 For a certificate to be considered matching, it must match all 1573 the fields in the certificate pattern. If multiple certificates match, the 1574 certificate with the latest issue date that is still in the past, and hence 1575 valid, will be used. 1576 </p> 1577 1578 <p> 1579 If <span class="field">EnrollmentURI</span> is not given and no match is 1580 found to this pattern, the importing tool may show an error to the user. 1581 </p> 1582 </section> 1583 1584 <section> 1585 <h1>Proxy settings</h1> 1586 <p> 1587 Every network can be configured to use a 1588 proxy. The <span class="type">ProxySettings</span> type contains the 1589 following: 1590 </p> 1591 1592 <dl class="field_list"> 1593 <dt class="field">Type</dt> 1594 <dd> 1595 <span class="field_meta"> 1596 (required) 1597 <span class="type">string</span> 1598 </span> 1599 <span class="rule"> 1600 <span class="rule_id"></span> 1601 Allowed values are <span class="value">Direct</span>, 1602 <span class="value">Manual</span>, <span class="value">PAC</span>, and 1603 <span class="value">WPAD</span>. 1604 </span> 1605 <span class="value">PAC</span> indicates Proxy Auto-Configuration. 1606 <span class="value">WPAD</span> indicates Web Proxy Autodiscovery. 1607 </dd> 1608 1609 <dt class="field">Manual</dt> 1610 <dd> 1611 <span class="field_meta"> 1612 (required if <span class="field">Type</span> 1613 is <span class="value">Manual</span>, otherwise ignored) 1614 <span class="type">ManualProxySettings</span> 1615 </span> 1616 Manual proxy settings. 1617 </dd> 1618 1619 <dt class="field">ExcludeDomains</dt> 1620 <dd> 1621 <span class="field_meta"> 1622 (optional if <span class="field">Type</span> 1623 is <span class="value">Manual</span>, otherwise ignored) 1624 <span class="type">array of string</span> 1625 </span> 1626 Domains and hosts for which to exclude proxy settings. 1627 </dd> 1628 1629 <dt class="field">PAC</dt> 1630 <dd> 1631 <span class="field_meta"> 1632 (required if <span class="field">Type</span> is 1633 <span class="value">PAC</span>, otherwise ignored) 1634 <span class="type">string</span> 1635 </span> 1636 URL of proxy auto-config file. 1637 </dd> 1638 </dl> 1639 1640 <p> 1641 The <span class="type">ManualProxySettings</span> type contains the 1642 following: 1643 </p> 1644 1645 <dl class="field_list"> 1646 <dt class="field">HTTPProxy</dt> 1647 <dd> 1648 <span class="field_meta"> 1649 (optional) 1650 <span class="type">ProxyLocation</span> 1651 </span> 1652 settings for HTTP proxy. 1653 </dd> 1654 1655 <dt class="field">SecureHTTPProxy</dt> 1656 <dd> 1657 <span class="field_meta"> 1658 (optional) 1659 <span class="type">ProxyLocation</span> 1660 </span> 1661 settings for secure HTTP proxy. 1662 </dd> 1663 1664 <dt class="field">FTPProxy</dt> 1665 <dd> 1666 <span class="field_meta"> 1667 (optional) 1668 <span class="type">ProxyLocation</span> 1669 </span> 1670 settings for FTP proxy 1671 </dd> 1672 1673 <dt class="field">SOCKS</dt> 1674 <dd> 1675 <span class="field_meta"> 1676 (optional) 1677 <span class="type">ProxyLocation</span> 1678 </span> 1679 settings for SOCKS proxy. 1680 </dd> 1681 </dl> 1682 1683 <p> 1684 The <span class="type">ProxyLocation</span> type contains the following: 1685 </p> 1686 1687 <dl class="field_list"> 1688 <dt class="field">Host</dt> 1689 <dd> 1690 <span class="field_meta"> 1691 (required) 1692 <span class="type">string</span> 1693 </span> 1694 Host (or IP address) to use for proxy 1695 </dd> 1696 1697 <dt class="field">Port</dt> 1698 <dd> 1699 <span class="field_meta"> 1700 (required) 1701 <span class="type">integer</span> 1702 </span> 1703 Port to use for proxy 1704 </dd> 1705 </dl> 1706 </section> 1707 1708 <section> 1709 <h1>EAP configurations</h1> 1710 <p> 1711 For networks with 802.1X authentication, an <span class="type">EAP</span> 1712 type exists to configure the 1713 authentication. The <span class="type">EAP</span> type contains the 1714 following: 1715 </p> 1716 1717 <dl class="field_list"> 1718 <dt class="field">AnonymousIdentity</dt> 1719 <dd> 1720 <span class="field_meta"> 1721 (optional if <span class="field">Outer</span> is 1722 <span class="value">PEAP</span> or <span class="value">EAP-TTLS</span>, 1723 otherwise ignored) 1724 <span class="type">string</span> 1725 </span> 1726 For tunnelling protocols only, this indicates the identity of the user 1727 presented to the outer protocol. This value is subject to string 1728 expansions. If not specified, use empty string. 1729 </dd> 1730 1731 <dt class="field">ClientCertPattern</dt> 1732 <dd> 1733 <span class="field_meta"> 1734 (required if <span class="field">ClientCertType</span> is 1735 <span class="value">Pattern</span>, otherwise ignored) 1736 <span class="type">CertificatePattern</span> 1737 </span> 1738 Pattern to use to find the client certificate. 1739 </dd> 1740 1741 <dt class="field">ClientCertRef</dt> 1742 <dd> 1743 <span class="field_meta"> 1744 (required if <span class="field">ClientCertType</span> is 1745 <span class="value">Ref</span>, otherwise ignored) 1746 <span class="type">string</span> 1747 </span> 1748 Reference to client certificate stored in certificate section. 1749 </dd> 1750 1751 <dt class="field">ClientCertType</dt> 1752 <dd> 1753 <span class="field_meta"> 1754 (optional) <span class="type">string</span> 1755 </span> 1756 <span class="rule"> 1757 <span class="rule_id"></span> 1758 Allowed values are <span class="value">Ref</span>, and 1759 <span class="value">Pattern</span>. 1760 </span> 1761 </dd> 1762 1763 <dt class="field">Identity</dt> 1764 <dd> 1765 <span class="field_meta"> 1766 (optional) 1767 <span class="type">string</span> 1768 </span> 1769 Identity of user. For tunneling outer protocols 1770 (<span class="value">PEAP</span>, <span class="value">EAP-TTLS</span>, and 1771 <span class="value">EAP-FAST</span>), this is used to authenticate inside 1772 the tunnel, and <span class="field">AnonymousIdentity</span> is used for 1773 the EAP identity outside the tunnel. For non-tunneling outer protocols, 1774 this is used for the EAP identity. This value is subject to string 1775 expansions. 1776 </dd> 1777 1778 <dt class="field">Inner</dt> 1779 <dd> 1780 <span class="field_meta"> 1781 (optional if <span class="field">Outer</span> is 1782 <span class="value">EAP-FAST</span>, <span class="value">EAP-TTLS</span> 1783 or <span class="value">PEAP</span>, otherwise ignored, defaults to 1784 <span class="value">Automatic</span>) 1785 <span class="type">string</span> 1786 </span> 1787 <span class="rule"> 1788 <span class="rule_id"></span> 1789 Allowed values are <span class="value">Automatic</span>, 1790 <span class="value">MD5</span>, <span class="value">MSCHAPv2</span>, 1791 <span class="value">EAP-MSCHAPv2</span>, and 1792 <span class="value">PAP</span>. 1793 </span> 1794 For tunneling outer protocols. 1795 </dd> 1796 1797 <dt class="field">Outer</dt> 1798 <dd> 1799 <span class="field_meta"> 1800 (required) 1801 <span class="type">string</span> 1802 </span> 1803 <span class="rule"> 1804 <span class="rule_id"></span> 1805 Allowed values are <span class="value">LEAP</span>, 1806 <span class="value">EAP-AKA</span>, <span class="value">EAP-FAST</span>, 1807 <span class="value">EAP-TLS</span>, <span class="value">EAP-TTLS</span>, 1808 <span class="value">EAP-SIM</span> and <span class="value">PEAP</span>. 1809 </span> 1810 </dd> 1811 1812 <dt class="field">Password</dt> 1813 <dd> 1814 <span class="field_meta"> 1815 (optional) 1816 <span class="type">string</span> 1817 </span> 1818 Password of user. If not specified, defaults to prompting the user. 1819 </dd> 1820 1821 <dt class="field">SaveCredentials</dt> 1822 <dd> 1823 <span class="field_meta"> 1824 (optional, defaults to <span class="value">false</span>) 1825 <span class="type">boolean</span> 1826 </span> 1827 If <span class="value">false</span>, require user to enter credentials 1828 each time they connect. Specifying <span class="field">Identity</span> 1829 and/or <span class="field">Password</span> when 1830 <span class="field">SaveCredentials</span> is 1831 <span class="value">false</span> is not allowed. 1832 </dd> 1833 1834 <dt class="field">ServerCARefs</dt> 1835 <dd> 1836 <span class="field_meta"> 1837 (optional) 1838 <span class="type">array of string</span> 1839 </span> 1840 Non-empty list of references to CA certificates in <span class="field">Certificates</span> to be used for verifying the host's certificate chain. At least one of the CA certificates must match. If this field is set, <span class="field">ServerCARef</span> must be unset. If neither <span class="field">ServerCARefs</span> nor <span class="field">ServerCARef</span> 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 <span class="field">UseSystemCAs</span> for this. 1841 </dd> 1842 1843 <dt class="field">ServerCARef</dt> 1844 <dd> 1845 <span class="field_meta"> 1846 (optional) 1847 <span class="type">string</span> 1848 </span> 1849 DEPRECATED, use <span class="field">ServerCARefs</span> instead.<br/> 1850 Reference to a CA certificate in <span class="field">Certificates</span>. If this field is set, <span class="field">ServerCARefs</span> must be unset. If neither <span class="field">ServerCARefs</span> nor <span class="field">ServerCARef</span> 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 <span class="field">UseSystemCAs</span> for this. 1851 </dd> 1852 1853 <dt class="field">UseSystemCAs</dt> 1854 <dd> 1855 <span class="field_meta"> 1856 (optional, defaults to <span class="value">true</span>) 1857 <span class="type">boolean</span> 1858 </span> 1859 Required server certificate to be signed by "system default certificate 1860 authorities". If both <span class="field">ServerCARefs</span> (or <span class="field">ServerCARef</span>) 1861 and <span class="field">UseSystemCAs</span> are supplied, a server 1862 certificate will be allowed if it either has a chain of trust to a system 1863 CA or to one of the given CA certificates. If <span class="field">UseSystemCAs</span> 1864 is <span class="value">false</span>, and no <span class="field">ServerCARef</span> is set, the certificate 1865 must be a self signed certificate, and no CA signature is required. 1866 </dd> 1867 </dl> 1868 1869 <p class="rule"> 1870 <span class="rule_id"></span> 1871 At most one of <span class="field">ServerCARefs</span> and <span class="field">ServerCARef</span> can be set. 1872 </p> 1873 </section> 1874 1875 <section> 1876 <h1>WiMAX Networks</h1> 1877 <p> 1878 For WiMAX connections, <span class="field">Type</span> must be set to 1879 <span class="value">WiMAX</span> and the 1880 field <span class="field">WiMAX</span> must be set to an object of 1881 type <span class="type">WiMAX</span>. Currently only used for 1882 representing an existing configuration; ONC configuration of 1883 of <span class="field">WiMAX</span> networks is not yet fully supported. 1884 Contains the following fields: 1885 </p> 1886 1887 <dl class="field_list"> 1888 <dt class="field">AutoConnect</dt> 1889 <dd> 1890 <span class="field_meta"> 1891 (optional, defaults to <span class="value">false</span>) 1892 <span class="type">boolean</span> 1893 </span> 1894 Indicating that the network should be connected to automatically when 1895 possible. 1896 </dd> 1897 1898 <dt class="field">EAP</dt> 1899 <dd> 1900 <span class="field_meta"> 1901 (required) 1902 <span class="type">EAP</span> 1903 </span> 1904 EAP settings. 1905 </dd> 1906 1907 <dt class="field">SignalStrength</dt> 1908 <dd> 1909 <span class="field_meta"> 1910 (optional, read-only) 1911 <span class="type">integer</span> 1912 </span> 1913 The current signal strength for this network in the range [0, 100], 1914 provided by the system. If the network is not in range this field will 1915 be set to '0' or not present. 1916 </dd> 1917 </dl> 1918 1919 </section> 1920 1921 <section> 1922 <h1>Cellular Networks</h1> 1923 <p> 1924 For Cellular connections, <span class="field">Type</span> must be set to 1925 <span class="value">Cellular</span> and the 1926 field <span class="field">Cellular</span> must be set to an object of 1927 type <span class="type">Cellular</span>. Currently only used for 1928 representing an existing configuration; ONC configuration of 1929 of <span class="field">Cellular</span> networks is not yet supported. 1930 Contains the following fields: 1931 </p> 1932 1933 <dl class="field_list"> 1934 <dt class="field">AutoConnect</dt> 1935 <dd> 1936 <span class="field_meta"> 1937 (optional, defaults to <span class="value">false</span>) 1938 <span class="type">boolean</span> 1939 </span> 1940 Indicating that the network should be connected to automatically when 1941 possible. Note, that disabled <span class="field">AllowRoaming</span> 1942 takes precedence over autoconnect. 1943 </dd> 1944 1945 <dt class="field">APN</dt> 1946 <dd> 1947 <span class="field_meta">(optional) 1948 <span class="type">APN</span> 1949 </span> 1950 Currently active <span class="type">APN</span> object to be used with a 1951 GSM carrier for making data connections. 1952 </dd> 1953 1954 <dt class="field">APNList</dt> 1955 <dd> 1956 <span class="field_meta">(optional, read-only) 1957 <span class="type">array of APN</span> 1958 </span> 1959 List of available APN configurations. 1960 </dd> 1961 1962 <dt class="field">ActivationType</dt> 1963 <dd> 1964 <span class="field_meta">(optional) 1965 <span class="type">string</span> 1966 </span> 1967 Activation type. 1968 </dd> 1969 1970 <dt class="field">ActivationState</dt> 1971 <dd> 1972 <span class="field_meta">(optional, read-only) 1973 <span class="type">string</span> 1974 </span> 1975 Carrier account activation state. 1976 <span class="rule"> 1977 <span class="rule_id"></span>Allowed values are 1978 <span class="value">Activated</span>, 1979 <span class="value">Activating</span>, 1980 <span class="value">NotActivated</span>, 1981 <span class="value">PartiallyActivated</span> 1982 </span> 1983 </dd> 1984 1985 <dt class="field">AllowRoaming</dt> 1986 <dd> 1987 <span class="field_meta">(optional) 1988 <span class="type">boolean</span> 1989 </span> 1990 Whether cellular data connections are allowed when the device is roaming. 1991 </dd> 1992 1993 <dt class="field">Carrier</dt> 1994 <dd> 1995 <span class="field_meta">(optional, read-only) 1996 <span class="type">string</span> 1997 </span> 1998 The name of the carrier for which the device is configured. 1999 </dd> 2000 2001 <dt class="field">ESN</dt> 2002 <dd> 2003 <span class="field_meta">(optional, read-only) 2004 <span class="type">string</span> 2005 </span> 2006 The Electronic Serial Number of the cellular modem. 2007 </dd> 2008 2009 <dt class="field">Family</dt> 2010 <dd> 2011 <span class="field_meta">(optional, read-only) 2012 <span class="type">string</span> 2013 </span> 2014 Technology family. 2015 <span class="rule"><span class="rule_id"></span> 2016 Allowed values are 2017 <span class="value">CDMA</span>, 2018 <span class="value">GSM</span> 2019 </span> 2020 </dd> 2021 2022 <dt class="field">FirmwareRevision</dt> 2023 <dd> 2024 <span class="field_meta">(optional, read-only) 2025 <span class="type">string</span> 2026 </span> 2027 The revision of firmware that is loaded in the modem. 2028 </dd> 2029 2030 <dt class="field">FoundNetworks</dt> 2031 <dd> 2032 <span class="field_meta">(optional, read-only, provided only 2033 if <span class="field">Family</span> is <span class="value">GSM</span>) 2034 <span class="type">array of FoundNetwork</span> 2035 </span> 2036 The list of cellular netwoks found in the most recent scan operation. 2037 </dd> 2038 2039 <dt class="field">HardwareRevision</dt> 2040 <dd> 2041 <span class="field_meta">(optional, read-only) 2042 <span class="type">string</span> 2043 </span> 2044 The hardware revision of the cellular modem. 2045 </dd> 2046 2047 <dt class="field">HomeProvider</dt> 2048 <dd> 2049 <span class="field_meta">(optional, read-only) 2050 <span class="type">array of CellularProvider</span> 2051 </span> 2052 Description of the operator that issued the SIM card currently installed 2053 in the modem. 2054 </dd> 2055 2056 <dt class="field">ICCID</dt> 2057 <dd> 2058 <span class="field_meta">(optional, read-only, provided only 2059 if <span class="field">Family</span> is <span class="value">GSM</span> 2060 or <span class="field">NetworkTechnology</span> 2061 is <span class="value">LTE</span>) 2062 <span class="type">string</span> 2063 </span> 2064 For GSM / LTE modems, the Integrated Circuit Card Identifer of the SIM 2065 card installed in the device. 2066 </dd> 2067 2068 <dt class="field">IMEI</dt> 2069 <dd> 2070 <span class="field_meta">(optional, read-only) 2071 <span class="type">string</span> 2072 </span> 2073 The International Mobile Equipment Identity of the cellular modem. 2074 </dd> 2075 2076 <dt class="field">IMSI</dt> 2077 <dd> 2078 <span class="field_meta">(optional, read-only, provided only 2079 if <span class="field">Family</span> is <span class="value">GSM</span>) 2080 <span class="type">string</span> 2081 </span> 2082 For GSM modems, the International Mobile Subscriber Identity of the SIM 2083 card installed in the device. 2084 </dd> 2085 2086 <dt class="field">LastGoodAPN</dt> 2087 <dd> 2088 <span class="field_meta">(optional, read-only) 2089 <span class="type">APN</span> 2090 </span> 2091 The APN information used in the last successful connection attempt. 2092 </dd> 2093 2094 <dt class="field">Manufacturer</dt> 2095 <dd> 2096 <span class="field_meta">(optional, read-only) 2097 <span class="type">string</span> 2098 </span> 2099 The manufacturer of the cellular modem. 2100 </dd> 2101 2102 <dt class="field">MDN</dt> 2103 <dd> 2104 <span class="field_meta">(optional) 2105 <span class="type">string</span> 2106 </span> 2107 The Mobile Directory Number (i.e., phone number) of the device. 2108 </dd> 2109 2110 <dt class="field">MEID</dt> 2111 <dd> 2112 <span class="field_meta">(optional, read-only, provided only 2113 if <span class="field">Family</span> is <span class="value">CDMA</span>) 2114 <span class="type">string</span> 2115 </span> 2116 For CDMA modems, the Mobile Equipment Identifer of the cellular modem. 2117 </dd> 2118 2119 <dt class="field">MIN</dt> 2120 <dd> 2121 <span class="field_meta">(optional, read-only) 2122 <span class="type">string</span> 2123 </span> 2124 The Mobile Identification Number of the device. 2125 </dd> 2126 2127 <dt class="field">ModelID</dt> 2128 <dd> 2129 <span class="field_meta">(optional, read-only) 2130 <span class="type">string</span> 2131 </span> 2132 The hardware model of the cellular modem. 2133 </dd> 2134 2135 <dt class="field">NetworkTechnology</dt> 2136 <dd> 2137 <span class="field_meta">(optional, read-only) 2138 <span class="type">string</span> 2139 </span> 2140 If the modem is registered on a network, then this is set to the 2141 network technology currently in use. 2142 <span class="rule"><span class="rule_id"></span> 2143 Allowed values are 2144 <span class="value">1xRTT</span>, <span class="value">EVDO</span>, 2145 <span class="value">GPRS</span>, <span class="value">EDGE</span>, 2146 <span class="value">UMTS</span>, 2147 <span class="value">HSPA</span>, <span class="value">HSPA+</span>, 2148 <span class="value">LTE</span>, <span class="value">LTE Advanced</span> 2149 </span> 2150 </dd> 2151 2152 <dt class="field">PRLVersion</dt> 2153 <dd> 2154 <span class="field_meta">(optional, read-only) 2155 <span class="type">integer</span> 2156 </span> 2157 The revision of the Preferred Roaming List that is loaded in the modem. 2158 </dd> 2159 2160 <dt class="field">ProviderRequiresRoaming</dt> 2161 <dd> 2162 <span class="field_meta">(optional, read-only) 2163 <span class="type">boolean</span> 2164 </span> 2165 Indicates that the cellular provider (determined based on IMSI and SPN) 2166 requires roaming. 2167 </dd> 2168 2169 <dt class="field">RoamingState</dt> 2170 <dd> 2171 <span class="field_meta">(optional, read-only) 2172 <span class="type">string</span> 2173 </span> 2174 The roaming status of the cellular modem on the current network. 2175 </dd> 2176 2177 <dt class="field">ServingOperator</dt> 2178 <dd> 2179 <span class="field_meta">(optional, read-only, provided only 2180 if <span class="field">Family</span> is <span class="value">GSM</span>) 2181 <span class="type">CellularProvider</span> 2182 </span> 2183 Description of the operator on whose network the modem is currently 2184 registered 2185 </dd> 2186 2187 <dt class="field">SIMLockStatus</dt> 2188 <dd> 2189 <span class="field_meta">(optional, read-only, provided only 2190 if <span class="field">Family</span> is <span class="value">GSM</span>) 2191 <span class="type">SIMLockStatus</span> 2192 </span> 2193 For GSM modems, a dictionary containing two properties describing the 2194 state of the SIM card lock. 2195 </dd> 2196 2197 <dt class="field">SIMPresent</dt> 2198 <dd> 2199 <span class="field_meta">(optional, read-only, provided only 2200 if <span class="field">Family</span> is <span class="value">GSM</span> 2201 or <span class="field">NetworkTechnology</span> 2202 is <span class="value">LTE</span>) 2203 <span class="type">boolean</span> 2204 </span> 2205 For GSM or LTE modems, indicates whether a SIM card is present or not. 2206 </dd> 2207 2208 <dt class="field">SupportNetworkScan</dt> 2209 <dd> 2210 <span class="field_meta">(optional, read-only) 2211 <span class="type">boolean</span> 2212 </span> 2213 True if the cellular network supports scanning. 2214 </dd> 2215 2216 <dt class="field">SupportedCarriers</dt> 2217 <dd> 2218 <span class="field_meta">(optional, read-only) 2219 <span class="type">array of string</span> 2220 </span> 2221 A list of supported carriers. 2222 </dd> 2223 2224 </dl> 2225 2226 <p><span class="type">APN</span> type contains the following:</p> 2227 <dl class="field_list"> 2228 <dt class="field">AccessPointName</dt> 2229 <dd> 2230 <span class="field_meta">(required) 2231 <span class="type">string</span> 2232 </span> 2233 The access point name used when making connections. 2234 </dd> 2235 2236 <dt class="field">Name</dt> 2237 <dd> 2238 <span class="field_meta">(optional) 2239 <span class="type">string</span> 2240 </span> 2241 Description of the APN. 2242 </dd> 2243 2244 <dt class="field">LocalizedName</dt> 2245 <dd> 2246 <span class="field_meta">(optional) 2247 <span class="type">string</span> 2248 </span> 2249 Localized description of the APN. 2250 </dd> 2251 2252 <dt class="field">Username</dt> 2253 <dd> 2254 <span class="field_meta">(optional) 2255 <span class="type">string</span> 2256 </span> 2257 Username for making connections if required. 2258 </dd> 2259 2260 <dt class="field">Password</dt> 2261 <dd> 2262 <span class="field_meta">(optional) 2263 <span class="type">string</span> 2264 </span> 2265 Password for making connections if required. 2266 </dd> 2267 2268 <dt class="field">Language</dt> 2269 <dd> 2270 <span class="field_meta">(optional, rquired if <span class="field"> 2271 LocalizedName</span> is provided) 2272 <span class="type">string</span> 2273 </span> 2274 Two letter language code for Localizedname if provided. 2275 </dd> 2276 </dl> 2277 2278 <p><span class="type">FoundNetwork</span> type contains the following:</p> 2279 <dl class="field_list"> 2280 <dt class="field">Status</dt> 2281 <dd> 2282 <span class="field_meta">(required) 2283 <span class="type">string</span> 2284 </span> 2285 The availability of the network. 2286 </dd> 2287 2288 <dt class="field">NetworkId</dt> 2289 <dd> 2290 <span class="field_meta">(required) 2291 <span class="type">string</span> 2292 </span> 2293 The network id in the form MCC/MNC (without the '/'). 2294 </dd> 2295 2296 <dt class="field">Technology</dt> 2297 <dd> 2298 <span class="field_meta">(required) 2299 <span class="type">string</span> 2300 </span> 2301 Access technology used by the network, 2302 e.g. "GSM", "UMTS", "EDGE", "HSPA", etc. 2303 </dd> 2304 2305 <dt class="field">ShortName</dt> 2306 <dd> 2307 <span class="field_meta">(optional) 2308 <span class="type">string</span> 2309 </span> 2310 Short-format name of the network operator. 2311 </dd> 2312 2313 <dt class="field">LongName</dt> 2314 <dd> 2315 <span class="field_meta">(optional) 2316 <span class="type">string</span> 2317 </span> 2318 Long-format name of the network operator. 2319 </dd> 2320 </dl> 2321 2322 <p><span class="type">CellularProvider</span> type contains the following:</p> 2323 <dl class="field_list"> 2324 <dt class="field">Name</dt> 2325 <dd> 2326 <span class="field_meta">(required) 2327 <span class="type">string</span> 2328 </span> 2329 The operator name. 2330 </dd> 2331 2332 <dt class="field">Code</dt> 2333 <dd> 2334 <span class="field_meta">(required) 2335 <span class="type">string</span> 2336 </span> 2337 The network id in the form MCC/MNC (without the '/'). 2338 </dd> 2339 2340 <dt class="field">Country</dt> 2341 <dd> 2342 <span class="field_meta">(optional) 2343 <span class="type">string</span> 2344 </span> 2345 The two-letter country code. 2346 </dd> 2347 </dl> 2348 2349 <p><span class="type">SIMLockStatus</span> type contains the following:</p> 2350 <dl class="field_list"> 2351 <dt class="field">LockType</dt> 2352 <dd> 2353 <span class="field_meta">(required) 2354 <span class="type">string</span> 2355 </span> 2356 Specifies the type of lock in effect, or an empty string if unlocked. 2357 <span class="rule"><span class="rule_id"></span> 2358 Allowed values are 2359 <span class="value">sim-pin</span>, 2360 <span class="value">sim-puk</span> 2361 </span> 2362 </dd> 2363 2364 <dt class="field">LockEnabled</dt> 2365 <dd> 2366 <span class="field_meta">(required) 2367 <span class="type">boolean</span> 2368 </span> 2369 Indicates whether SIM locking is enabled 2370 </dd> 2371 2372 <dt class="field">RetriesLeft</dt> 2373 <dd> 2374 <span class="field_meta">(optional) 2375 <span class="type">integer</span> 2376 </span> 2377 If <span class="field">LockType</span> is empty 2378 or <span class="value">sim-pin</span>, then this property represents 2379 the number of attempts remaining to supply a correct PIN before the 2380 PIN becomes blocked, at which point a PUK provided by the carrier would 2381 be necessary to unlock the SIM (and <span class="field">LockType</span> 2382 changes to <span class="value">sim-puk</span>). 2383 </dd> 2384 </dl> 2385 2386 </section> 2387 2388 <section> 2389 <h1>Bluetooth / WiFi Direct Networks</h1> 2390 <p> 2391 This format will eventually also cover configuration of Bluetooth and Wi-Fi 2392 Direct network technologies, however they are currently not supported. 2393 </p> 2394 </section> 2395 2396 </section> 2397 2398 <section> 2399 <h1>Certificates</h1> 2400 <p> 2401 Certificate data is stored in a separate section. Each certificate may be 2402 referenced from within the NetworkConfigurations array using a certificate 2403 reference. A certificate reference is its GUID. 2404 </p> 2405 2406 <p> 2407 The top-level field <span class="field">Certificates</span> is an array of 2408 objects of <span class="type">Certificate</span> type. 2409 </p> 2410 2411 <p> 2412 The <span class="type">Certificate</span> type contains the following: 2413 </p> 2414 2415 <dl class="field_list"> 2416 <dt class="field">GUID</dt> 2417 <dd> 2418 <span class="field_meta"> 2419 (required) 2420 <span class="type">string</span> 2421 </span> 2422 A unique identifier for this certificate. Must be a non-empty string. 2423 </dd> 2424 2425 <dt class="field">PKCS12</dt> 2426 <dd> 2427 <span class="field_meta"> 2428 (required if <span class="field">Type</span> is 2429 <span class="value">Client</span>, otherwise ignored) 2430 <span class="type">string</span> 2431 </span> For certificates with 2432 private keys, this is the base64 encoding of the a PKCS#12 file. 2433 </dd> 2434 2435 <dt class="field">Remove</dt> 2436 <dd> 2437 <span class="field_meta"> 2438 (optional, defaults to <span class="value">false</span>) 2439 <span class="type">boolean</span> 2440 </span> 2441 If <span class="value">true</span>, remove this certificate (only GUID 2442 should be set). 2443 </dd> 2444 2445 <dt class="field">TrustBits</dt> 2446 <dd> 2447 <span class="field_meta"> 2448 (optional if <span class="field">Type</span> 2449 is <span class="value">Server</span> 2450 or <span class="value">Authority</span>, otherwise ignored, defaults to 2451 []) 2452 <span class="type">array of string</span> 2453 </span> 2454 An array of trust flags. Clients should ignore unknown flags. For 2455 backwards compatibility, each flag should only increase the trust and 2456 never restrict. The trust flag <span class="value">Web</span> implies that 2457 the certificate is to be trusted for HTTPS SSL identification. A typical 2458 web certificate authority would have <span class="field">Type</span> set 2459 to <span class="value">Authority</span> and 2460 <span class="field">TrustBits</span> set to 2461 <span class="snippet">["Web"]</span>. 2462 </dd> 2463 2464 <dt class="field">Type</dt> 2465 <dd> 2466 <span class="field_meta"> 2467 (required if <span class="field">Remove</span> is 2468 <span class="value">false</span>, otherwise ignored) 2469 <span class="type">string</span> 2470 </span> 2471 <span class="rule"> 2472 <span class="rule_id"></span> 2473 Allowed values are <span class="value">Client</span>, 2474 <span class="value">Server</span>, and 2475 <span class="value">Authority</span>. 2476 </span> 2477 <span class="value">Client</span> indicates the certificate is for 2478 identifying the user or device over HTTPS or for 2479 VPN/802.1X. <span class="value">Server</span> indicates the certificate 2480 identifies an HTTPS or VPN/802.1X peer. 2481 <span class="value">Authority</span> indicates the certificate is a 2482 certificate authority and any certificates it issues should be 2483 trusted. Note that if <span class="field">Type</span> disagrees with the 2484 x509 v3 basic constraints or key usage attributes, the 2485 <span class="field">Type</span> field should be honored. 2486 </dd> 2487 2488 <dt class="field">X509</dt> 2489 <dd> 2490 <span class="field_meta"> 2491 (required if <span class="field">Type</span> is 2492 <span class="value">Server</span> or 2493 <span class="value">Authority</span>, otherwise ignored) 2494 <span class="type">string</span> 2495 </span> For certificate 2496 without private keys, this is the X509 certificate in PEM format. 2497 </dd> 2498 </dl> 2499 2500 <p> 2501 The passphrase of the PKCS#12 encoding must be empty. Encryption of key data 2502 should be handled at the level of the entire file, or the transport of the 2503 file. 2504 </p> 2505 2506 <p> 2507 If a global-scoped network connection refers to a user-scoped certificate, 2508 results are undefined, so this configuration should be prohibited by the 2509 configuration editor. 2510 </p> 2511 </section> 2512 2513 </section> 2514 2515 <section> 2516 <h1>Encrypted Configuration</h1> 2517 <p> 2518 We assume that when this format is imported as part of policy that 2519 file-level encryption will not be necessary because the policy transport is 2520 already encrypted, but when it is imported as a standalone file, it is 2521 desirable to encrypt it. Since this file has private information (user 2522 names) and secrets (passphrases and private keys) in it, and we want it to 2523 be usable as a manual way to distribute network configuration, we must 2524 support encryption. 2525 </p> 2526 2527 <p> 2528 For this standalone export, the entire file will be encrypted in a symmetric 2529 fashion with a passphrase stretched using salted PBKDF2 using at least 20000 2530 iterations, and encrypted using an AES-256 CBC mode cipher with an SHA-1 2531 HMAC on the ciphertext. 2532 </p> 2533 2534 <p> 2535 An encrypted ONC file's top level object will have the 2536 <span class="type">EncryptedConfiguration</span> 2537 type. <span class="type">EncryptedConfiguration</span> type contains the 2538 following: 2539 </p> 2540 2541 <dl class="field_list"> 2542 <dt class="field">Cipher</dt> 2543 <dd> 2544 <span class="field_meta"> 2545 (required) 2546 <span class="type">string</span> 2547 </span> 2548 The type of cipher used. Currently only <span class="value">AES256</span> 2549 is supported. 2550 </dd> 2551 2552 <dt class="field">Ciphertext</dt> 2553 <dd> 2554 <span class="field_meta"> 2555 (required) 2556 <span class="type">string</span> 2557 </span> 2558 The raw ciphertext of the encrypted ONC file, base64 encoded. 2559 </dd> 2560 2561 <dt class="field">HMAC</dt> 2562 <dd> 2563 <span class="field_meta"> 2564 (required) 2565 <span class="type">string</span> 2566 </span> 2567 The HMAC for the ciphertext, base64 encoded. 2568 </dd> 2569 2570 <dt class="field">HMACMethod</dt> 2571 <dd> 2572 <span class="field_meta"> 2573 (required) 2574 <span class="type">string</span> 2575 </span> 2576 The method used to compute the Hash-based Message Authentication Code 2577 (HMAC). Currently only <span class="value">SHA1</span> is supported. 2578 </dd> 2579 2580 <dt class="field">Salt</dt> 2581 <dd> 2582 <span class="field_meta"> 2583 (required) 2584 <span class="type">string</span> 2585 </span> 2586 The salt value used during key stretching. 2587 </dd> 2588 2589 <dt class="field">Stretch</dt> 2590 <dd> 2591 <span class="field_meta"> 2592 (required) 2593 <span class="type">string</span> 2594 </span> 2595 The key stretching algorithm used. Currently 2596 only <span class="value">PBKDF2</span> is supported. 2597 </dd> 2598 2599 <dt class="field">Iterations</dt> 2600 <dd> 2601 <span class="field_meta"> 2602 (required) 2603 <span class="type">integer</span> 2604 </span> 2605 The number of iterations to use during key stretching. 2606 </dd> 2607 2608 <dt class="field">IV</dt> 2609 <dd> 2610 <span class="field_meta"> 2611 (required) 2612 <span class="type">string</span> 2613 </span> 2614 The initial vector (IV) used for Cyclic Block Cipher (CBC) mode, base64 2615 encoded. 2616 </dd> 2617 2618 <dt class="field">Type</dt> 2619 <dd> 2620 <span class="field_meta"> 2621 (required) 2622 <span class="type">string</span> 2623 </span> 2624 The type of the ONC file, which must be set 2625 to <span class="value">EncryptedConfiguration</span>. 2626 </dd> 2627 </dl> 2628 2629 <p class="rule"> 2630 <span class="rule_id"></span> 2631 When decrypted, the ciphertext must contain a JSON object of 2632 type <span class="type">UnencryptedConfiguration</span>. 2633 </p> 2634 </section> 2635 2636 <section> 2637 <h1>String Expansions</h1> 2638 <p> 2639 The values of some fields, such 2640 as <span class="field">WiFi.EAP.Identity</span> 2641 and <span class="field">VPN.*.Username</span>, are subject to string 2642 expansions. These allow one ONC to have basic user-specific variations. 2643 </p> 2644 2645 <p> 2646 The expansions are: 2647 </p> 2648 2649 <ul> 2650 <li> 2651 ${LOGIN_ID} - expands to the email address of the user, but before the 2652 '@'. 2653 </li> 2654 <li> 2655 ${LOGIN_EMAIL} - expands to the email address of the user. 2656 </li> 2657 </ul> 2658 2659 <p> 2660 The following SED would properly handle resolution. 2661 </p> 2662 2663 <ul> 2664 <li> 2665 s/\$\{LOGIN_ID\}/bobquail$1/g 2666 </li> 2667 <li> 2668 s/\$\{LOGIN_EMAIL\}/bobquail (a] example.com$1/g 2669 </li> 2670 </ul> 2671 2672 <p> 2673 Example expansions, assuming the user was bobquail (a] example.com: 2674 </p> 2675 2676 <ul> 2677 <li> 2678 "${LOGIN_ID}" -> "bobquail" 2679 </li> 2680 <li> 2681 "${LOGIN_ID}@corp.example.com" -> "bobquail (a] corp.example.com" 2682 </li> 2683 <li> 2684 "${LOGIN_EMAIL}" -> "bobquail (a] example.com" 2685 </li> 2686 <li> 2687 "${LOGIN_ID}X" -> "bobquailX" 2688 </li> 2689 <li> 2690 "${LOGIN_IDX}" -> "${LOGIN_IDX}" 2691 </li> 2692 <li> 2693 "X${LOGIN_ID}" -> "Xbobquail" 2694 </li> 2695 </ul> 2696 </section> 2697 2698 <section> 2699 <h1>Detection</h1> 2700 <p> 2701 This format should be sent in files ending in the .onc extension. When 2702 transmitted with a MIME type, the MIME type should be 2703 application/x-onc. These two methods make detection of data to be handled in 2704 this format, especially when encryption is used and the payload itself is 2705 not detectable. 2706 </p> 2707 </section> 2708 2709 </section> 2710 2711 <section> 2712 <h1>Alternatives considered</h1> 2713 <p> 2714 For the overall format, we considered XML, ASN.1, and protobufs. JSON and 2715 ASN.1 seem more widely known than protobufs. Since administrators are 2716 likely to want to tweak settings that will not exist in common UIs, we 2717 should provide a format that is well known and human modifiable. ASN.1 is 2718 not human modifiable. Protobufs formats are known by open source developers 2719 but seem less likely to be known by administrators. JSON serialization 2720 seems to have good support across languages. 2721 </p> 2722 2723 <p> 2724 We considered sending the exact connection manager configuration format of 2725 an open source connection manager like connman. There are a few issues 2726 here, for instance, referencing certificates by identifiers not tied to a 2727 particular PKCS#11 token, and tying to one OS's connection manager. 2728 </p> 2729 </section> 2730 2731 <section> 2732 <h1>Detection</h1> 2733 <p> 2734 This format should be sent in files ending in the .onc extension. When 2735 transmitted with a MIME type, the MIME type should be 2736 application/x-onc. These two methods make detection of data to be handled in 2737 this format, especially when encryption is used and the payload itself is 2738 not detectable. 2739 </p> 2740 </section> 2741 2742 <section> 2743 <h1>Mocks</h1> 2744 2745 <section> 2746 <h1>Simple format example: PEAP/MSCHAPv2 network (per device)</h1> 2747 2748 <pre> 2749 { 2750 "Type": "UnencryptedConfiguration", 2751 "NetworkConfigurations": [ 2752 { 2753 "GUID": "{f2c17903-b0e1-8593-b3ca74f977236bd7}", 2754 "Name": "MySSID", 2755 "Type": "WiFi", 2756 "WiFi": { 2757 "AutoConnect": true, 2758 "EAP": { 2759 "Outer": "PEAP", 2760 "UseSystemCAs": true 2761 }, 2762 "HiddenSSID": false, 2763 "SSID": "MySSID", 2764 "Security": "WPA-EAP" 2765 } 2766 } 2767 ], 2768 "Certificates": [] 2769 } 2770 </pre> 2771 2772 <p> 2773 Notice that in this case, we do not provide a username and password - we set 2774 SaveCredentials to <span class="value">false</span> so we are prompted every 2775 time. We could have passed in username and password - but such a file should 2776 be encrypted. 2777 </p> 2778 </section> 2779 2780 <section> 2781 <h1>Complex format example: TLS network with client certs (per device)</h1> 2782 2783 <pre> 2784 { 2785 "Type": "UnencryptedConfiguration", 2786 "NetworkConfigurations": [ 2787 { 2788 "GUID": "{00f79111-51e0-e6e0-76b3b55450d80a1b}", 2789 "Name": "MyTTLSNetwork", 2790 "Type": "WiFi", 2791 "WiFi": { 2792 "AutoConnect": false, 2793 "EAP": { 2794 "ClientCertPattern": { 2795 "EnrollmentURI": [ 2796 "http://fetch-my-certificate.com" 2797 ], 2798 "IssuerCARef": [ 2799 "{6ed8dce9-64c8-d568-d225d7e467e37828}" 2800 ] 2801 }, 2802 "ClientCertType": "Pattern", 2803 "Outer": "EAP-TLS", 2804 "ServerCARef": "{6ed8dce9-64c8-d568-d225d7e467e37828}", 2805 "UseSystemCAs": true 2806 }, 2807 "HiddenSSID": false, 2808 "SSID": "MyTTLSNetwork", 2809 "Security": "WPA-EAP" 2810 } 2811 } 2812 ], 2813 "Certificates": [ 2814 { 2815 "GUID": "{6ed8dce9-64c8-d568-d225d7e467e37828}", 2816 "Type": "Authority", 2817 "X509": "MIIEpzCCA4+gAwIBAgIJAMueiWq5WEIAMA0GCSqGSIb3DQEBBQUAMIGTMQswCQYDVQQGEwJGUjEPMA0GA1UECBMGUmFkaXVzMRIwEAYDVQQHEwlTb21ld2hlcmUxFTATBgNVBAoTDEV4YW1wbGUgSW5jLjEgMB4GCSqGSIb3DQEJARYRYWRtaW5AZXhhbXBsZS5jb20xJjAkBgNVBAMTHUV4YW1wbGUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4XDTExMDEyODA2MjA0MFoXDTEyMDEyODA2MjA0MFowgZMxCzAJBgNVBAYTAkZSMQ8wDQYDVQQIEwZSYWRpdXMxEjAQBgNVBAcTCVNvbWV3aGVyZTEVMBMGA1UEChMMRXhhbXBsZSBJbmMuMSAwHgYJKoZIhvcNAQkBFhFhZG1pbkBleGFtcGxlLmNvbTEmMCQGA1UEAxMdRXhhbXBsZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9EDplhyrVNJIoy1OsVqvD/K67B5PW2bDKKxGznodrzCu8jHsP1Ne3mgrK20vbzQUUBdmxTCWO6x3a3//r4ZuPOuZd1ViycWjt6mRfRbBzNrHzP7NiyFuXjdlz74beHQQLcHwvZ3qFAWZK37uweiLiDPaMaEQlka2Bztqx4PsogmSdoVPSCxi5Cl1XlJmITA03LlKpO79+0rEPRamWO/DMCwvffn2/UUjJLog4/lYe16HQ6iq/6bjhffm2rLXDFKOGZmBVbLNMCfANRMtdFWHYdBXERoUo2zpM9tduOOUNLy7E7kRKVm/wy38s51ChFPlpORrhimN2j1caar+KAv2tAgMBAAGjgfswgfgwHQYDVR0OBBYEFBTIImiXp+57jjgn2N5wq93GgAAtMIHIBgNVHSMEgcAwgb2AFBTIImiXp+57jjgn2N5wq93GgAAtoYGZpIGWMIGTMQswCQYDVQQGEwJGUjEPMA0GA1UECBMGUmFkaXVzMRIwEAYDVQQHEwlTb21ld2hlcmUxFTATBgNVBAoTDEV4YW1wbGUgSW5jLjEgMB4GCSqGSIb3DQEJARYRYWRtaW5AZXhhbXBsZS5jb20xJjAkBgNVBAMTHUV4YW1wbGUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5ggkAy56JarlYQgAwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAnNd0YY7s2YVYPsgEgDS+rBNjcQloTFWgc9Hv4RWBjwcdJdSPIrpBp7LSjC96wH5U4eWpQjlWbOYQ9RBq9Z/RpuAPEjzRV78rIrQrCWQ3lxwywWEb5Th1EVJSN68eNv7Ke5BlZ2l9kfLRKFm5MEBXX9YoHMX0U8I8dPIXfTyevmKOT1PuEta5cQOM6/zH86XWn6WYx3EXkyjpeIbVOw49AqaEY8u70yBmut4MO03zz/pwLjV1BWyIkXhsrtuJyA+ZImvgLK2oAMZtGGFo7b0GW/sWY/P3R6Un3RFy35k6U3kXCDYYhgZEcS36lIqcj5y6vYUUVM732/etCsuOLz6ppw==" 2818 } 2819 ] 2820 } 2821 </pre> 2822 2823 <p> 2824 In this example, the client certificate is not sent in the ONC format, but 2825 rather we send a certificate authority which we know will have signed the 2826 client certificate that is needed, along with an enrollment URI to navigate 2827 to if the required certificate is not yet available on the client. 2828 </p> 2829 </section> 2830 2831 <section> 2832 <h1>Simple format example: HTTPS Certificate Authority</h1> 2833 2834 <p> 2835 In this example a new certificate authority is added to be trusted for HTTPS 2836 server authentication. 2837 </p> 2838 2839 <pre> 2840 { 2841 "Type": "UnencryptedConfiguration", 2842 "NetworkConfigurations": [], 2843 "Certificates": [ 2844 { 2845 "GUID": "{f31f2110-9f5f-61a7-a8bd7c00b94237af}", 2846 "TrustBits": [ "Web" ], 2847 "Type": "Authority", 2848 "X509": "MIIEpzCCA4+gAwIBAgIJAMueiWq5WEIAMA0GCSqGSIb3DQEBBQUAMIGTMQswCQYDVQQGEwJGUjEPMA0GA1UECBMGUmFkaXVzMRIwEAYDVQQHEwlTb21ld2hlcmUxFTATBgNVBAoTDEV4YW1wbGUgSW5jLjEgMB4GCSqGSIb3DQEJARYRYWRtaW5AZXhhbXBsZS5jb20xJjAkBgNVBAMTHUV4YW1wbGUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4XDTExMDEyODA2MjA0MFoXDTEyMDEyODA2MjA0MFowgZMxCzAJBgNVBAYTAkZSMQ8wDQYDVQQIEwZSYWRpdXMxEjAQBgNVBAcTCVNvbWV3aGVyZTEVMBMGA1UEChMMRXhhbXBsZSBJbmMuMSAwHgYJKoZIhvcNAQkBFhFhZG1pbkBleGFtcGxlLmNvbTEmMCQGA1UEAxMdRXhhbXBsZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9EDplhyrVNJIoy1OsVqvD/K67B5PW2bDKKxGznodrzCu8jHsP1Ne3mgrK20vbzQUUBdmxTCWO6x3a3//r4ZuPOuZd1ViycWjt6mRfRbBzNrHzP7NiyFuXjdlz74beHQQLcHwvZ3qFAWZK37uweiLiDPaMaEQlka2Bztqx4PsogmSdoVPSCxi5Cl1XlJmITA03LlKpO79+0rEPRamWO/DMCwvffn2/UUjJLog4/lYe16HQ6iq/6bjhffm2rLXDFKOGZmBVbLNMCfANRMtdFWHYdBXERoUo2zpM9tduOOUNLy7E7kRKVm/wy38s51ChFPlpORrhimN2j1caar+KAv2tAgMBAAGjgfswgfgwHQYDVR0OBBYEFBTIImiXp+57jjgn2N5wq93GgAAtMIHIBgNVHSMEgcAwgb2AFBTIImiXp+57jjgn2N5wq93GgAAtoYGZpIGWMIGTMQswCQYDVQQGEwJGUjEPMA0GA1UECBMGUmFkaXVzMRIwEAYDVQQHEwlTb21ld2hlcmUxFTATBgNVBAoTDEV4YW1wbGUgSW5jLjEgMB4GCSqGSIb3DQEJARYRYWRtaW5AZXhhbXBsZS5jb20xJjAkBgNVBAMTHUV4YW1wbGUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5ggkAy56JarlYQgAwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAnNd0YY7s2YVYPsgEgDS+rBNjcQloTFWgc9Hv4RWBjwcdJdSPIrpBp7LSjC96wH5U4eWpQjlWbOYQ9RBq9Z/RpuAPEjzRV78rIrQrCWQ3lxwywWEb5Th1EVJSN68eNv7Ke5BlZ2l9kfLRKFm5MEBXX9YoHMX0U8I8dPIXfTyevmKOT1PuEta5cQOM6/zH86XWn6WYx3EXkyjpeIbVOw49AqaEY8u70yBmut4MO03zz/pwLjV1BWyIkXhsrtuJyA+ZImvgLK2oAMZtGGFo7b0GW/sWY/P3R6Un3RFy35k6U3kXCDYYhgZEcS36lIqcj5y6vYUUVM732/etCsuOLz6ppw==" 2849 } 2850 ] 2851 } 2852 </pre> 2853 </section> 2854 2855 <section> 2856 <h1>Encrypted format example</h1> 2857 2858 <p> 2859 In this example a simple wireless network is added, but the file is encrypted 2860 with the passphrase "test0000". 2861 </p> 2862 2863 <pre> 2864 { 2865 "Cipher": "AES256", 2866 "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==", 2867 "HMAC": "3ylRy5InlhVzFGakJ/9lvGSyVH0=", 2868 "HMACMethod": "SHA1", 2869 "Iterations": 20000, 2870 "IV": "hcm6OENfqG6C/TVO6p5a8g==", 2871 "Salt": "/3O73QadCzA=", 2872 "Stretch": "PBKDF2", 2873 "Type": "EncryptedConfiguration" 2874 } 2875 </pre> 2876 </section> 2877 2878 </section> 2879 2880 <section> 2881 <h1>Standalone editor</h1> 2882 2883 <p> 2884 The source code for a Chrome packaged app to generate ONC configuration can 2885 be found here: 2886 <a href="https://gerrit.chromium.org/gitweb/?p=chromiumos/platform/spigots.git;a=tree">"https://gerrit.chromium.org/gitweb/?p=chromiumos/platform/spigots.git;a=tree"</a> 2887 </p> 2888 </section> 2889 2890 <section> 2891 <h1>Internationalization and Localization</h1> 2892 2893 <p> 2894 UIs will need to have internationalization and localizations - the file 2895 format will remain in English. 2896 </p> 2897 </section> 2898 2899 <section> 2900 <h1>Security Considerations</h1> 2901 2902 <p> 2903 Data stored inside of open network configuration files is highly sensitive 2904 to users and enterprises. The file format itself provides adequate 2905 encryption options to allow standalone use-cases to be secure. For automatic 2906 updates sent by policy, the policy transport should be made secure. The file 2907 should not be stored unencrypted on disk as part of policy fetching and 2908 should be cleared from memory after use. 2909 </p> 2910 </section> 2911 2912 <section> 2913 <h1>Privacy Considerations</h1> 2914 2915 <p> 2916 Similarly to the security considerations, user names will be present in 2917 these files for certain kinds of connections, so any places where the file 2918 is transmitted or saved to disk should be secure. On client device, when 2919 user names for connections that are user-specific are persisted to disk, 2920 they should be stored in a location that is encrypted. Users can also opt in 2921 these cases to not save their user credentials in the config file and will 2922 instead be prompted when they are needed. 2923 </p> 2924 </section> 2925 </section> 2926 </body> 2927 </html> 2928