<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.18 (Ruby 2.6.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-anima-brski-cloud-10" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.23.0 -->
  <front>
    <title abbrev="BRSKI-CLOUD">BRSKI Cloud Registrar</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-anima-brski-cloud-10"/>
    <author initials="O." surname="Friel" fullname="Owen Friel">
      <organization>Cisco</organization>
      <address>
        <email>ofriel@cisco.com</email>
      </address>
    </author>
    <author initials="R." surname="Shekh-Yusef" fullname="Rifaat Shekh-Yusef">
      <organization>Ernst &amp; Young</organization>
      <address>
        <email>rifaat.s.ietf@gmail.com</email>
      </address>
    </author>
    <author initials="M." surname="Richardson" fullname="Michael Richardson">
      <organization>Sandelman Software Works</organization>
      <address>
        <email>mcr+ietf@sandelman.ca</email>
      </address>
    </author>
    <date year="2024" month="September" day="04"/>
    <abstract>
      <?line 44?>

<t>Bootstrapping Remote Secure Key Infrastructures defines how to onboard a device securely into an operator maintained infrastructure.  It assumes that there is local network infrastructure for the device to discover and help the device.   This document extends the new device behavior so that if no local infrastructure is available, such as in a home or remote office, that the device can use a well-defined "call-home" mechanism to find the operator maintained infrastructure.</t>
      <t>This document defines how to contact a well-known Cloud Registrar, and two ways in which the new device may be redirected towards the operator maintained infrastructure. The Cloud Registrar enables discovery of the operator maintained infrastructure, and may enable establishment of trust with operator maintained infrastructure that does not support BRSKI mechanisms.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-anima-brski-cloud/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        anima Working Group mailing list (<eref target="mailto:anima@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/anima/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/anima/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/anima-wg/brski-cloud"/>.</t>
    </note>
  </front>
  <middle>
    <?line 50?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Bootstrapping Remote Secure Key Infrastructures <xref target="BRSKI"/> BRSKI specifies automated and secure provisioning  of nodes (which are called pledges) with cryptographic keying material (trust  anchors and certificates) to enable authenticated and confidential communication with other similarly enrolled nodes.
This is also called enrolment.</t>
      <t>In BRSKI, the pledge performs enrolment by communicating with a BRSKI Registrar belonging to the owner of the pledge.
The pledge does not know who its owner will be when manufactured.
Instead, in BRSKI it is assumed that the network to which the pledge connects belongs to the owner of the pledge and therefore network-supported discovery mechanisms can resolve generic, non-owner specific names to the owners Registrar.</t>
      <t>To support enrolment of pledges without such an owner based access network, the mechanisms
of BRSKI Cloud are required which assume that pledge and Registrar simply connect to the
Internet.</t>
      <t>This work is in support of <xref section="2.7" sectionFormat="comma" target="BRSKI"/>, which describes how a pledge MAY contact a well-known URI of a Cloud Registrar if a local Registrar cannot be discovered or if the pledge's target use cases do not include a local Registrar.</t>
      <t>This kind of non-network onboarding is sometimes called "Application Onboarding", as the purpose is typically to deploy a credential that will be used by the device in it's intended use.
For instance, a SIP phone might have a client certificate to be used with a SIP proxy.</t>
      <t>This document further specifies use of a BRSKI Cloud Registrar and clarifies operations that are not sufficiently specified in BRSKI.
Two modes of operation are specified in this document.
The Cloud Registrar may redirect the pledge to the owner's Registrar, or the Cloud Registrar may issue a voucher to the pledge that includes the domain of the owner's Enrollment over Secure Transport <xref target="RFC7030"/> (EST) server.</t>
      <section anchor="terminology">
        <name>Terminology</name>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.
<?line -6?>
        </t>
        <t>This document uses the terms pledge, Registrar, MASA, and Voucher from <xref target="BRSKI"/> and <xref target="RFC8366"/>.</t>
        <dl>
          <dt>Cloud Registrar:</dt>
          <dd>
            <t>The default Registrar that is deployed at a URI that is well known to the pledge.</t>
          </dd>
          <dt>EST:</dt>
          <dd>
            <t>Enrollment over Secure Transport <xref target="RFC7030"/></t>
          </dd>
          <dt>Local Domain:</dt>
          <dd>
            <t>The domain where the pledge is physically located and bootstrapping from. This may be different from the pledge owner's domain.</t>
          </dd>
          <dt>Manufacturer:</dt>
          <dd>
            <t>The term manufacturer is used throughout this document as the entity that created the pledge. This is typically the original equipment manufacturer (OEM), but in more complex situations, it could be a value added retailer (VAR), or possibly even a systems integrator. Refer to <xref target="BRSKI"/> for more detailed descriptions of manufacturer, VAR and OEM.</t>
          </dd>
          <dt>Owner Domain:</dt>
          <dd>
            <t>The domain that the pledge needs to discover and bootstrap with.</t>
          </dd>
          <dt>Owner Registrar:</dt>
          <dd>
            <t>The Registrar that is operated by the Owner, or the Owner's delegate.
There may not be an Owner Registrar in all deployment scenarios.</t>
          </dd>
          <dt>OEM:</dt>
          <dd>
            <t>Original Equipment Manufacturer</t>
          </dd>
          <dt>Provisional TLS:</dt>
          <dd>
            <t>A mechanism defined in <xref section="5.1" sectionFormat="comma" target="BRSKI"/> whereby a pledge establishes a provisional TLS connection with a Registrar before the pledge is provisioned with a trust anchor that can be used for verifying the Registrar identity.</t>
          </dd>
          <dt>VAR:</dt>
          <dd>
            <t>Value Added Reseller</t>
          </dd>
          <dt>Cloud VAR Registrar:</dt>
          <dd>
            <t>The non-default Registrar that is operated by a value added reseller (VAR).</t>
          </dd>
        </dl>
      </section>
      <section anchor="target-use-cases">
        <name>Target Use Cases</name>
        <t>This document specifies and standardizes procedures for two high level use cases.</t>
        <ul spacing="normal">
          <li>
            <t>Bootstrap via Cloud Registrar and Owner Registrar: The operator maintained infrastructure supports BRSKI and has a BRSKI Registrar deployed. More details are provided in <xref target="bootstrap-via-cloud-registrar-and-owner-registrar"/>.</t>
          </li>
          <li>
            <t>Bootstrap via Cloud Registrar and Owner EST Service: The operator maintained infrastructure does not support BRSKI, does not have a BRSKI Registrar deployed, but does have an Enrollment over Secure Transport (EST) <xref target="RFC7030"/> service deployed. More detailed are provided in <xref target="bootstrap-via-cloud-registrar-and-owner-est-service"/>.</t>
          </li>
        </ul>
        <t>Common to both uses cases is that they aid with the use of BRSKI in the presence of many small sites, such as teleworkers, with minimum expectations against their network infrastructure.</t>
        <t>This use case also supports situations where a manufacturer sells a number of devices (in bulk) to a Value Added Resller (VAR).
The manufacturer knows which devices have been sold to which VAR, but not who the ultimate owner will be.
The VAR then sells devices to other entities, such as enterprises, and records this.
A typical example is a VoIP phone manufacturer provides telephones to a local system integration company (a VAR).
The VAR records this sale to it's Cloud VAR Registrar system.</t>
        <t>In this use case, this VAR has sold and services a VoIP system to an enterprise (e.g., a SIP PBX).
When a new employee needs a phone at their home office, the VAR ships that unit across town to the employee.  When the employee plugs in the device and turns it on, the device will be provisioned with a LDevID and configuration that connections the phone with the Enterprises' VoIP PBX.
The home employee's network has no special provisions.</t>
        <t>This use case also supports a chain of VARs through chained HTTP redirects.
This also supports a situation where in effect, a large enterprise might also stock devices in a central location.</t>
        <t>The pledge is not expected to know whether the operator maintained infrastructure has a BRSKI Registrar deployed or not.
The pledge determines this based upon the response to its Voucher Request message that it receives from the Cloud Registrar.
The Cloud Registrar is expected to determine whether the operator maintained infrastructure has a BRSKI Registrar deployed based upon the identity presented by the pledge.</t>
        <t>A Cloud Registrar will receive BRSKI communications from all devices configured with its URI.
This could be, for example, all devices of a particular product line from a particular manufacturer.
When this is a significantly large number, a Cloud  Registrar may need to be scaled with the usual web-service scaling mechanisms.</t>
        <section anchor="bootstrap-via-cloud-registrar-and-owner-registrar">
          <name>Bootstrap via Cloud Registrar and Owner Registrar</name>
          <t>A pledge is bootstrapping from a location with no local domain Registrar (for example, the small site or teleworker use case with no local infrastructure to provide for automated discovery), and needs to discover its Owner Registrar.
The Cloud Registrar is used by the pledge to discover the Owner Registrar.
The Cloud Registrar redirects the pledge to the Owner Registrar, and the pledge completes bootstrap against the Owner Registrar.</t>
          <t>A typical example is an employee who is deploying a pledge in a home or small branch office, where the pledge belongs to the employer.
There is no local domain Registrar, the pledge needs to discover and bootstrap with the employer's Registrar which is deployed within the employer's network, and the pledge needs the keying material to trust the Registrar.
For example, an employee is deploying an IP phone in a home office and the phone needs to register to an IP PBX deployed in their employer's office.</t>
          <t>Protocol details for this use case are provided in <xref target="redirect2Registrar"/>.</t>
        </section>
        <section anchor="bootstrap-via-cloud-registrar-and-owner-est-service">
          <name>Bootstrap via Cloud Registrar and Owner EST Service</name>
          <t>A pledge is bootstrapping where the owner organization does not yet have an Owner Registrar deployed, but does have an EST service deployed.
The Cloud Registrar issues a voucher, and the pledge completes trust bootstrap using the Cloud Registrar.
The voucher issued by the cloud includes domain information for the owner's EST service that the pledge should use for certificate enrollment.</t>
          <t>For example, an organization has an EST service deployed, but does not have yet a BRSKI capable Registrar service deployed.
The pledge is deployed in the organization's domain, but does not discover a local domain Registrar or Owner Registrar.
The pledge uses the Cloud Registrar to bootstrap, and the Cloud Registrar provides a voucher that includes instructions on finding the organization's EST service.</t>
          <t>This option can be used to introduce the benefits of BRSKI for an initial period when BRSKI is not available in existing EST-Servers.
Additionally, it can also be used long-term as a security-equivalent solution in which BRSKI and EST-Server are set up in a modular fashion.</t>
          <t>The use of an EST-Server instead of a BRSKI Registrar may mean that not all the EST options required by <xref target="BRSKI"/> may be available and hence this option may not support all BRSKI deployment cases.
For example, certificates to enroll into an ACP <xref target="RFC8994"/> needs to include an AcpNodeName (see <xref target="RFC8994"/>, Section 6.2.2), which non-BRSKI capable EST-Servers may not support.</t>
          <t>Protocol details for this use case are provided in <xref target="voucher2EST"/>.</t>
        </section>
      </section>
    </section>
    <section anchor="architecture">
      <name>Architecture</name>
      <t>The high level architectures for the two high level use cases are illustrated in <xref target="arch-one"/> and <xref target="arch-two"/>.</t>
      <t>In both use cases, the pledge connects to the Cloud Registrar during bootstrap.</t>
      <t>For use case one, as described in <xref target="bootstrap-via-cloud-registrar-and-owner-registrar"/>, the Cloud Registrar redirects the pledge to an Owner Registrar in order to complete bootstrap with the Owner Registrar. When bootstrapping against an Owner Registrar, the Owner Registrar will interact with a CA to assist in issuing certificates to the pledge. This is illustrated in <xref target="arch-one"/>.</t>
      <t>For use case two, as described <xref target="bootstrap-via-cloud-registrar-and-owner-est-service"/>, the Cloud Registrar issues a voucher itself without redirecting the pledge to an Owner Registrar, the Cloud Registrar will inform the pledge what domain to use for accessing EST services in the voucher response. In this model, the pledge interacts directly with the EST service to enroll. The EST service will interact with a CA to assist in issuing a certificate to the pledge. This is illustrated in <xref target="arch-two"/>.</t>
      <t>It is also possible that the Cloud Registrar may redirect the pledge to another Cloud Registrar operated by a VAR, with that VAR's Cloud Registrar then redirecting the pledge to the Owner Registrar.
This scenario is discussed further in sections <xref target="multiple-http-redirects"/> and <xref target="considerationsfor-http-redirect"/>.</t>
      <t>The mechanisms and protocols by which the Registrar or EST service interacts with the CA are transparent to the pledge and are out-of-scope of this document.</t>
      <t>The architectures show the Cloud Registrar and MASA as being logically separate entities.
The two functions could of course be integrated into a single entity.</t>
      <t>There are two different mechanisms for a Cloud Registrar to handle voucher requests.
It can redirect the request to the Owner Registrar for handling, or it can return a voucher
that pins the actual Owner Registrar.
When returning a voucher, additional bootstrapping information is embedded in the voucher.
Both mechanisms are described in detail later in this document.</t>
      <figure anchor="arch-one">
        <name>Architecture: Bootstrap via Cloud Registrar and Owner Registrar</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="272" width="528" viewBox="0 0 528 272" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
              <path d="M 8,80 L 8,112" fill="none" stroke="black"/>
              <path d="M 40,120 L 40,176" fill="none" stroke="black"/>
              <path d="M 80,80 L 80,112" fill="none" stroke="black"/>
              <path d="M 184,160 L 184,208" fill="none" stroke="black"/>
              <path d="M 232,216 L 232,240" fill="none" stroke="black"/>
              <path d="M 272,224 L 272,256" fill="none" stroke="black"/>
              <path d="M 280,160 L 280,208" fill="none" stroke="black"/>
              <path d="M 368,224 L 368,256" fill="none" stroke="black"/>
              <path d="M 424,80 L 424,128" fill="none" stroke="black"/>
              <path d="M 424,160 L 424,192" fill="none" stroke="black"/>
              <path d="M 472,128 L 472,160" fill="none" stroke="black"/>
              <path d="M 520,80 L 520,128" fill="none" stroke="black"/>
              <path d="M 520,160 L 520,192" fill="none" stroke="black"/>
              <path d="M 16,32 L 128,32" fill="none" stroke="black"/>
              <path d="M 176,32 L 392,32" fill="none" stroke="black"/>
              <path d="M 8,80 L 80,80" fill="none" stroke="black"/>
              <path d="M 424,80 L 520,80" fill="none" stroke="black"/>
              <path d="M 88,96 L 416,96" fill="none" stroke="black"/>
              <path d="M 8,112 L 80,112" fill="none" stroke="black"/>
              <path d="M 424,128 L 520,128" fill="none" stroke="black"/>
              <path d="M 184,160 L 280,160" fill="none" stroke="black"/>
              <path d="M 424,160 L 520,160" fill="none" stroke="black"/>
              <path d="M 40,176 L 176,176" fill="none" stroke="black"/>
              <path d="M 288,176 L 416,176" fill="none" stroke="black"/>
              <path d="M 424,192 L 520,192" fill="none" stroke="black"/>
              <path d="M 184,208 L 280,208" fill="none" stroke="black"/>
              <path d="M 272,224 L 368,224" fill="none" stroke="black"/>
              <path d="M 232,240 L 264,240" fill="none" stroke="black"/>
              <path d="M 272,256 L 368,256" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="424,176 412,170.4 412,181.6 " fill="black" transform="rotate(0,416,176)"/>
              <polygon class="arrowhead" points="424,96 412,90.4 412,101.6 " fill="black" transform="rotate(0,416,96)"/>
              <polygon class="arrowhead" points="400,32 388,26.4 388,37.6 " fill="black" transform="rotate(0,392,32)"/>
              <polygon class="arrowhead" points="272,240 260,234.4 260,245.6 " fill="black" transform="rotate(0,264,240)"/>
              <polygon class="arrowhead" points="184,176 172,170.4 172,181.6 " fill="black" transform="rotate(0,176,176)"/>
              <polygon class="arrowhead" points="24,32 12,26.4 12,37.6 " fill="black" transform="rotate(180,16,32)"/>
              <g class="text">
                <text x="8" y="36">|</text>
                <text x="152" y="36">OWNER</text>
                <text x="400" y="36">|</text>
                <text x="476" y="36">MANUFACTURER</text>
                <text x="40" y="68">On-site</text>
                <text x="216" y="68">Cloud</text>
                <text x="44" y="100">Pledge</text>
                <text x="456" y="100">Cloud</text>
                <text x="472" y="116">Registrar</text>
                <text x="224" y="180">Owner</text>
                <text x="468" y="180">MASA</text>
                <text x="108" y="196">VR-sign(N)</text>
                <text x="232" y="196">Registrar</text>
                <text x="348" y="196">sign(VR-sign(N))</text>
                <text x="316" y="244">CA</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
|<--------------OWNER--------------------------->|   MANUFACTURER

 On-site                Cloud
+--------+                                          +-----------+
| Pledge |----------------------------------------->| Cloud     |
+--------+                                          | Registrar |
    |                                               +-----+-----+
    |                                                     |
    |                 +-----------+                 +-----+-----+
    +---------------->|  Owner    |---------------->|   MASA    |
        VR-sign(N)    | Registrar |sign(VR-sign(N)) +-----------+
                      +-----------+
                            |    +-----------+
                            +--->|    CA     |
                                 +-----------+
]]></artwork>
        </artset>
      </figure>
      <figure anchor="arch-two">
        <name>Architecture: Bootstrap via Cloud Registrar and Owner EST Service</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="320" width="528" viewBox="0 0 528 320" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
              <path d="M 8,80 L 8,112" fill="none" stroke="black"/>
              <path d="M 40,120 L 40,224" fill="none" stroke="black"/>
              <path d="M 80,80 L 80,112" fill="none" stroke="black"/>
              <path d="M 184,208 L 184,256" fill="none" stroke="black"/>
              <path d="M 232,264 L 232,288" fill="none" stroke="black"/>
              <path d="M 272,272 L 272,304" fill="none" stroke="black"/>
              <path d="M 280,208 L 280,256" fill="none" stroke="black"/>
              <path d="M 368,272 L 368,304" fill="none" stroke="black"/>
              <path d="M 424,80 L 424,128" fill="none" stroke="black"/>
              <path d="M 424,160 L 424,192" fill="none" stroke="black"/>
              <path d="M 472,128 L 472,160" fill="none" stroke="black"/>
              <path d="M 520,80 L 520,128" fill="none" stroke="black"/>
              <path d="M 520,160 L 520,192" fill="none" stroke="black"/>
              <path d="M 16,32 L 128,32" fill="none" stroke="black"/>
              <path d="M 176,32 L 392,32" fill="none" stroke="black"/>
              <path d="M 8,80 L 80,80" fill="none" stroke="black"/>
              <path d="M 424,80 L 520,80" fill="none" stroke="black"/>
              <path d="M 88,96 L 416,96" fill="none" stroke="black"/>
              <path d="M 8,112 L 80,112" fill="none" stroke="black"/>
              <path d="M 424,128 L 520,128" fill="none" stroke="black"/>
              <path d="M 424,160 L 520,160" fill="none" stroke="black"/>
              <path d="M 424,192 L 520,192" fill="none" stroke="black"/>
              <path d="M 184,208 L 280,208" fill="none" stroke="black"/>
              <path d="M 40,224 L 176,224" fill="none" stroke="black"/>
              <path d="M 184,256 L 280,256" fill="none" stroke="black"/>
              <path d="M 272,272 L 368,272" fill="none" stroke="black"/>
              <path d="M 232,288 L 264,288" fill="none" stroke="black"/>
              <path d="M 272,304 L 368,304" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="424,96 412,90.4 412,101.6 " fill="black" transform="rotate(0,416,96)"/>
              <polygon class="arrowhead" points="400,32 388,26.4 388,37.6 " fill="black" transform="rotate(0,392,32)"/>
              <polygon class="arrowhead" points="272,288 260,282.4 260,293.6 " fill="black" transform="rotate(0,264,288)"/>
              <polygon class="arrowhead" points="184,224 172,218.4 172,229.6 " fill="black" transform="rotate(0,176,224)"/>
              <polygon class="arrowhead" points="24,32 12,26.4 12,37.6 " fill="black" transform="rotate(180,16,32)"/>
              <g class="text">
                <text x="8" y="36">|</text>
                <text x="152" y="36">OWNER</text>
                <text x="400" y="36">|</text>
                <text x="476" y="36">MANUFACTURER</text>
                <text x="40" y="68">On-site</text>
                <text x="216" y="68">Cloud</text>
                <text x="44" y="100">Pledge</text>
                <text x="456" y="100">Cloud</text>
                <text x="472" y="116">Registrar</text>
                <text x="468" y="180">MASA</text>
                <text x="208" y="228">EST</text>
                <text x="220" y="244">Server</text>
                <text x="316" y="292">CA</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
|<--------------OWNER--------------------------->|   MANUFACTURER

 On-site                Cloud
+--------+                                          +-----------+
| Pledge |----------------------------------------->| Cloud     |
+--------+                                          | Registrar |
    |                                               +-----+-----+
    |                                                     |
    |                                               +-----+-----+
    |                                               |   MASA    |
    |                                               +-----------+
    |                 +-----------+
    +---------------->| EST       |
                      | Server    |
                      +-----------+
                            |    +-----------+
                            +--->|    CA     |
                                 +-----------+
]]></artwork>
        </artset>
      </figure>
      <t>As depicted in <xref target="arch-one"/> and <xref target="arch-two"/>, there are a number of parties involve in the process.
The Manufacturer, or Original Equipment Manufacturer (OEM) builds the device, but also is expected to run the MASA, or arrange for it to exist.</t>
      <t>The network operator or enterprise is the intended owner of the new device: the pledge.
This could be the enterprise itself, or in many cases there is some outsourced IT department that might be involved.
They are the operator of the Registrar or EST Server.
They may also operate the CA, or they may contract those services from another entity.</t>
      <t>There is a potential additional party involved who may operate the Cloud Registrar: the value added reseller (VAR).
The VAR works with the OEM to ship products with the right configuration to the owner.
For example, SIP telephones or other conferencing systems may be installed by this VAR, often shipped directly from a warehouse to the customer's remote office location.
The VAR and manufacturer are aware of which devices have been shipped to the VAR through sales channel integrations, and so the manufacturer's Cloud Registrar is able to redirect the pledge through a chain of Cloud Registrars, as explained in <xref target="redirect-response"/>.</t>
      <section anchor="network-connectivity">
        <name>Network Connectivity</name>
        <t>The assumption is that the pledge already has network connectivity prior to connecting to the Cloud Registrar.
The pledge must have an IP address that is able to make DNS queries, and be able to send requests to the Cloud Registrar.
There are many ways to accomplish this, from routable IPv4 or IPv6 addresses, to use of NAT44, to using HTTP or SOCKS proxies.
There are DHCP options that a network operator can configure to accomplish any of these options.
The pledge operator has already connected the pledge to the network, and the mechanism by which this has happened is out of scope of this document.
For many telephony applications, this is typically going to be a wired connection.</t>
        <t>For wireless use cases, some kind of existing Wi-Fi onboarding mechanism such as WPS.
Similarly, what address space the IP address belongs to, whether it is an IPv4 or IPv6 address, or if there are firewalls or proxies deployed between the pledge and the cloud registrar are all out of scope of this document.</t>
      </section>
      <section anchor="pledge-certificate-identity-considerations">
        <name>Pledge Certificate Identity Considerations</name>
        <t>BRSKI section 5.9.2 specifies that the pledge MUST send an EST <xref target="RFC7030"/> CSR Attributes request to the EST server before it requests a client certificate.
For the use case described in <xref target="bootstrap-via-cloud-registrar-and-owner-registrar"/>, the Owner Registrar operates as the EST server as described in BRSKI section 2.5.3, and the pledge sends the CSR Attributes request to the Owner Registrar.
For the use case described in <xref target="bootstrap-via-cloud-registrar-and-owner-est-service"/>, the EST server operates as described in <xref target="RFC7030"/>, and the pledge sends the CSR Attributes request to the EST server.
Note that the pledge only sends the CSR Attributes request to the entity acting as the EST server as per <xref target="RFC7030"/> section 2.6, and MUST NOT send the CSR Attributes request to the Cloud Registrar.
The EST server MAY use this mechanism to instruct the pledge about the identities it should include in the CSR request it sends as part of enrollment.
The EST server may use this mechanism to tell the pledge what Subject or Subject Alternative Name identity information to include in its CSR request.
This can be useful if the Subject must have a specific value in order to complete enrollment with the CA.</t>
        <t>EST <xref target="RFC7030"/> is not clear on how the CSR Attributes response should be structured, and in particular is not clear on how a server can instruct a client to include specific attribute values in its CSR.
<xref target="I-D.ietf-lamps-rfc7030-csrattrs"/> clarifies how a server can use CSR Attributes response to specify specific values for attributes that the client should include in its CSR.</t>
        <t>For example, the pledge may only be aware of its IDevID Subject which includes a manufacturer serial number, but must include a specific fully qualified domain name in the CSR in order to complete domain ownership proofs required by the CA.</t>
        <t>As another example, the Registrar may deem the manufacturer serial number in an IDevID as personally identifiable information, and may want to specify a new random opaque identifier that the pledge should use in its CSR.</t>
      </section>
    </section>
    <section anchor="protocol-operation">
      <name>Protocol Operation</name>
      <t>This section outlines the high level protocol requirements and operations that take place. <xref target="protocol-details"/> outlines the exact sequence of message interactions between the pledge, the Cloud Registrar, the Owner Registrar and the Owner EST server.</t>
      <section anchor="pledge-sends-voucher-request-to-cloud-registrar">
        <name>Pledge Sends Voucher Request to Cloud Registrar</name>
        <section anchor="cloud-registrar-discovery">
          <name>Cloud Registrar Discovery</name>
          <t>BRSKI defines how a pledge MAY contact a well-known URI of a Cloud Registrar if a local domain Registrar cannot be discovered.
Additionally, certain pledge types might never attempt to discover a local domain Registrar and might automatically bootstrap against a Cloud Registrar.</t>
          <t>The details of the URI are manufacturer specific, with BRSKI giving the example "brski-registrar.manufacturer.example.com".</t>
          <t>The pledge SHOULD be provided with the entire URI of the Cloud Registrar, including the protocol and path components, which are typically "https://" and "/.well-known/brski", respectively.</t>
        </section>
        <section anchor="pledge-cloud-registrar-tls-establishment-details">
          <name>Pledge - Cloud Registrar TLS Establishment Details</name>
          <t>According to <xref section="2.7" sectionFormat="comma" target="BRSKI"/>, the pledge MUST use an Implicit Trust Anchor database (see EST <xref target="RFC7030"/>) to authenticate the Cloud Registrar service.
The pledge MUST establish a mutually authenticated TLS connection with the Cloud Registrar.
Unlike the Provisional TLS procedures documented in BRSKI section 5.1, the pledge MUST NOT establish a Provisional TLS connection with the Cloud Registrar.</t>
          <t>Pledges MUST and Cloud/Owner Registrars SHOULD support the use of the "server_name" TLS extension (SNI, RFC6066).
Pledges SHOULD send a valid "server_name" extension whenever they know the domain name of the registrar they connect to, unless it is known that Cloud or Owner Registrars for this pledge implementation will never need to be deployed in a cloud setting requiring the "server_name" extension.</t>
          <t>The pledge MUST be manufactured with pre-loaded trust anchors that are used to verify the identity of the Cloud Registrar when establishing the TLS connection.
The TLS connection can be verified using a public Web PKI trust anchor using <xref target="RFC9525"/> DNS-ID mechanisms or a pinned certification authority.
This is a local implementation decision.
Refer to <xref target="trust-anchors-for-cloud-registrar"/> for trust anchor security considerations.</t>
          <t>The Cloud Registrar MUST verify the identity of the pledge by sending a TLS CertificateRequest message to the pledge during TLS session establishment.
The Cloud Registrar MAY include a certificate_authorities field in the message to specify the set of allowed IDevID issuing CAs that pledges may use when establishing connections with the Cloud Registrar.</t>
          <t>To protect itself against DoS attacks, the Cloud Registrar SHOULD reject TLS connections when it can determine during TLS authentication that it cannot support the pledge, for example because the pledge cannot provide an IDevID signed by a CA recognized/supported by the Cloud Registrar.</t>
        </section>
        <section anchor="pledge-sends-voucher-request-message">
          <name>Pledge Sends Voucher Request Message</name>
          <t>After the pledge has established a mutually authenticated TLS connection with the Cloud Registrar, the pledge generates a voucher request message as outlined in BRSKI section 5.2, and sends the voucher request message to the Cloud Registrar.</t>
        </section>
      </section>
      <section anchor="cloud-registrar-processes-voucher-request-message">
        <name>Cloud Registrar Processes Voucher Request Message</name>
        <t>The Cloud Registrar must determine pledge ownership.
Prior to ownership determination, the Registrar checks the request for correctness and if it is unwilling or unable to handle the request, it MUST return a suitable 4xx or 5xx error response to the pledge as defined by <xref target="BRSKI"/> and HTTP.
In the case of an unknown pledge a 404 is returned, for a malformed request 400 is returned, or in case of server overload 503 is returned.</t>
        <t>If the request is correct and the Registrar is able to handle it, but unable to determine ownership at that time, then it MUST return a 401 Unauthorized response to the pledge.
This signals to the pledge that there is currently no known owner domain for it, but that retrying later might resolve this situation.
In this scenario, the Registrar SHOULD include a Retry-After header that includes a time to defer.
The absense of a Retry-After header indicates to the pledge not to attempt again.
The Pledge MUST restart the bootstrapping process from the beginning.</t>
        <t>A pledge with some kind of indicator (such as a screen or LED) SHOULD consider all 4xx and 5xx errros to be a bootstrapping failure, and indicate this to the operator.</t>
        <t>If the Cloud Registrar successfully determines ownership, then it MUST take one of the following actions:</t>
        <ul spacing="normal">
          <li>
            <t>error: return a suitable 4xx or 5xx error response (as defined by <xref target="BRSKI"/> and HTTP) to the pledge if the request processing failed for any reason</t>
          </li>
          <li>
            <t>redirect to Owner Registrar: redirect the pledge to an Owner Registrar via 307 response code</t>
          </li>
          <li>
            <t>redirect to owner EST server: issue a voucher (containing an est-domain attribute) and return a 200 response code</t>
          </li>
        </ul>
        <section anchor="pledgeOwnershipLookup">
          <name>Pledge Ownership Look Up</name>
          <t>The Cloud Registrar needs some suitable mechanism for knowing the correct owner of a connecting pledge based on the presented identity certificate.
For example, if the pledge establishes TLS using an IDevID that is signed by a known manufacturing CA, the Registrar could extract the serial number from the IDevID and use this to look up a database of pledge IDevID serial numbers to owners.</t>
          <t>The mechanism by which the Cloud Registrar determines pledge ownership is, however, out-of-scope of this document.
The Cloud Registrar is strongly tied to the manufacturers' processes for device identity.</t>
        </section>
        <section anchor="bootstrap-via-cloud-registrar-and-owner-registrar-1">
          <name>Bootstrap via Cloud Registrar and Owner Registrar</name>
          <t>Once the Cloud Registrar has determined pledge ownership, the Cloud Registrar MAY redirect the pledge to the Owner Registrar in order to complete bootstrap.
If the owner wants the Cloud Registrar to redirect pledges to their Owner Registrar, the owner must register their Owner Registrar URI with cloud Registrar.
The mechanism by which pledge owners register their Owner Registrar URI with the Cloud Registrar is out-of-scope of this document.</t>
          <t>In case of redirection, the Cloud Registrar replies to the voucher request with an HTTP 307 Temporary Redirect response code, including the owner's local domain in the HTTP Location header.</t>
        </section>
        <section anchor="bootstrap-via-cloud-registrar-and-owner-est-service-1">
          <name>Bootstrap via Cloud Registrar and Owner EST Service</name>
          <t>If the Cloud Registrar issues a voucher, it returns the voucher in an HTTP response with a 200 response code.</t>
          <t>The Cloud Registrar MAY issue a 202 response code if it is willing to issue a voucher, but will take some time to prepare the voucher.</t>
          <t>The voucher MUST include the new "est-domain" field as defined in <xref target="RFC8366bis"/>.
This tells the pledge where the domain of the EST service to use for completing certificate enrollment.</t>
          <t>The voucher MAY include the new "additional-configuration" field.
This field points the pledge to a URI where pledge specific additional configuration information may be retrieved.
For example, a SIP phone might retrieve a manufacturer specific configuration file that contains information about how to do SIP Registration.
One advantage of this mechanism over current mechanisms like DHCP options 120 defined in <xref target="RFC3361"/> or option 125 defined in <xref target="RFC3925"/> is that the voucher is returned in a confidential (TLS-protected) transport, and so can include device-specific credentials for retrieval of the configuration.</t>
          <t>The exact pledge and Registrar behavior for handling and specifying the "additional-configuration" field is out-of-scope of this document.</t>
        </section>
      </section>
      <section anchor="pledge-handles-cloud-registrar-response">
        <name>Pledge Handles Cloud Registrar Response</name>
        <section anchor="redirect-response">
          <name>Bootstrap via Cloud Registrar and Owner Registrar</name>
          <t>The Cloud Registrar has returned a 307 response to a voucher request.
The Cloud Registrar may be redirecting the pledge to the Owner Registrar, or to a different Cloud Registrar operated by a VAR.</t>
          <t>The pledge MUST restart its bootstrapping process by sending a new voucher
request message (with a fresh nonce) using the location provided in the HTTP redirect.</t>
          <t>The pledge SHOULD attempt to validate the identity of the Cloud VAR Registrar specified in the 307 response using its Implicit Trust Anchor Database.
If validation of this identity succeeds using the Implicit Trust Anchor Database, then the pledge MAY accept a subsequent 307 response from this Cloud VAR Registrar.</t>
          <t>The pledge MAY continue to follow a number of 307 redirects provided that each 307 redirect target Registrar identity is validated using the Implicit Trust Anchor Database.</t>
          <t>However, if validation of a 307 redirect target Registrar identity using the Implicit Trust Anchor Database fails, then the pledge MUST NOT accept any further 307 responses from the Registrar.
At this point, the TLS connection that has been established is considered a Provisional TLS, as per <xref section="5.1" sectionFormat="comma" target="BRSKI"/>.
The Pledge then (re)sends a voucher-request on this connection.
This connection is validated using the pinned data from the voucher, which is the standard BRSKI mechanism.</t>
          <t>The pledge MUST process any error messages as defined in <xref target="BRSKI"/>, and in case of error MUST restart the process from its provisioned Cloud Registrar.
The exception is that a 401 Unauthorized code SHOULD cause the pledge to retry a number of times over a period of a few hours.</t>
          <t>The pledge MUST never visit a location that it has already been to, in order to avoid any kind of cycle.
If it happens that a location is repeated, then the pledge MUST fail the bootstrapping attempt and go back to the beginning, which includes listening to other sources of bootstrapping information as specified in <xref target="BRSKI"/> section 4.1 and 5.0.
The pledge MUST also have a limit on the total number of redirects it will a follow, as the cycle detection requires that it keep track of the places it has been.
That limit MUST be in the dozens or more redirects such that no reasonable delegation path would be affected.</t>
          <t>When the pledge cannot validate the connection, then it MUST establish a Provisional TLS connection with the specified local domain Registrar at the location specified.</t>
          <t>The pledge then sends a voucher request message via the local domain Registrar.</t>
          <t>After the pledge receives the voucher, it verifies the TLS connection to the local domain Registrar and continues with enrollment and bootstrap as per standard BRSKI operation.</t>
          <t>The pledge MUST process any error messages as defined in <xref target="BRSKI"/>, and in case of error MUST restart the process from its provisioned Cloud Registrar.</t>
          <t>The exception is that a 401 Unauthorized code SHOULD cause the pledge to retry a number of times over a period of a few hours.</t>
        </section>
        <section anchor="bootstrap-via-cloud-registrar-and-owner-est-service-2">
          <name>Bootstrap via Cloud Registrar and Owner EST Service</name>
          <t>The Cloud Registrar returned a voucher to the pledge.
The pledge MUST perform voucher verification as per BRSKI section 5.6.1.</t>
          <t>The pledge SHOULD extract the "est-domain" field from the voucher, and SHOULD continue with EST enrollment as per standard EST operation. Note that the pledge has been instructed to connect to the EST server specified in the "est-domain" field, and therefore SHOULD use EST mechanisms, and not BRSKI mechanisms, when connecting to the EST server.</t>
        </section>
      </section>
    </section>
    <section anchor="protocol-details">
      <name>Protocol Details</name>
      <section anchor="redirect2Registrar">
        <name>Bootstrap via Cloud Registrar and Owner Registrar</name>
        <t>This flow illustrates the "Bootstrap via Cloud Registrar and Owner Registrar" use case.
A pledge is bootstrapping in a remote location with no local domain Registrar.
The assumption is that the Owner Registrar domain is accessible, and the pledge can establish a network connection with the Owner Registrar.
This may require that the owner network firewall exposes the Owner Registrar on the public internet.</t>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="592" width="496" viewBox="0 0 496 592" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
              <path d="M 8,32 L 8,80" fill="none" stroke="black"/>
              <path d="M 40,88 L 40,576" fill="none" stroke="black"/>
              <path d="M 80,32 L 80,80" fill="none" stroke="black"/>
              <path d="M 192,256 L 192,304" fill="none" stroke="black"/>
              <path d="M 224,312 L 224,576" fill="none" stroke="black"/>
              <path d="M 288,256 L 288,304" fill="none" stroke="black"/>
              <path d="M 400,32 L 400,80" fill="none" stroke="black"/>
              <path d="M 400,256 L 400,304" fill="none" stroke="black"/>
              <path d="M 440,88 L 440,224" fill="none" stroke="black"/>
              <path d="M 440,312 L 440,576" fill="none" stroke="black"/>
              <path d="M 480,256 L 480,304" fill="none" stroke="black"/>
              <path d="M 488,32 L 488,80" fill="none" stroke="black"/>
              <path d="M 8,32 L 80,32" fill="none" stroke="black"/>
              <path d="M 400,32 L 488,32" fill="none" stroke="black"/>
              <path d="M 8,80 L 80,80" fill="none" stroke="black"/>
              <path d="M 400,80 L 488,80" fill="none" stroke="black"/>
              <path d="M 48,128 L 432,128" fill="none" stroke="black"/>
              <path d="M 48,176 L 432,176" fill="none" stroke="black"/>
              <path d="M 48,224 L 432,224" fill="none" stroke="black"/>
              <path d="M 192,256 L 288,256" fill="none" stroke="black"/>
              <path d="M 400,256 L 480,256" fill="none" stroke="black"/>
              <path d="M 192,304 L 288,304" fill="none" stroke="black"/>
              <path d="M 400,304 L 480,304" fill="none" stroke="black"/>
              <path d="M 48,336 L 216,336" fill="none" stroke="black"/>
              <path d="M 48,384 L 216,384" fill="none" stroke="black"/>
              <path d="M 232,400 L 432,400" fill="none" stroke="black"/>
              <path d="M 232,448 L 432,448" fill="none" stroke="black"/>
              <path d="M 48,480 L 216,480" fill="none" stroke="black"/>
              <path d="M 48,528 L 216,528" fill="none" stroke="black"/>
              <path d="M 48,576 L 216,576" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="440,400 428,394.4 428,405.6 " fill="black" transform="rotate(0,432,400)"/>
              <polygon class="arrowhead" points="440,176 428,170.4 428,181.6 " fill="black" transform="rotate(0,432,176)"/>
              <polygon class="arrowhead" points="440,128 428,122.4 428,133.6 " fill="black" transform="rotate(0,432,128)"/>
              <polygon class="arrowhead" points="240,448 228,442.4 228,453.6 " fill="black" transform="rotate(180,232,448)"/>
              <polygon class="arrowhead" points="224,576 212,570.4 212,581.6 " fill="black" transform="rotate(0,216,576)"/>
              <polygon class="arrowhead" points="224,528 212,522.4 212,533.6 " fill="black" transform="rotate(0,216,528)"/>
              <polygon class="arrowhead" points="224,384 212,378.4 212,389.6 " fill="black" transform="rotate(0,216,384)"/>
              <polygon class="arrowhead" points="224,336 212,330.4 212,341.6 " fill="black" transform="rotate(0,216,336)"/>
              <polygon class="arrowhead" points="56,528 44,522.4 44,533.6 " fill="black" transform="rotate(180,48,528)"/>
              <polygon class="arrowhead" points="56,480 44,474.4 44,485.6 " fill="black" transform="rotate(180,48,480)"/>
              <polygon class="arrowhead" points="56,336 44,330.4 44,341.6 " fill="black" transform="rotate(180,48,336)"/>
              <polygon class="arrowhead" points="56,224 44,218.4 44,229.6 " fill="black" transform="rotate(180,48,224)"/>
              <polygon class="arrowhead" points="56,128 44,122.4 44,133.6 " fill="black" transform="rotate(180,48,128)"/>
              <g class="text">
                <text x="44" y="52">Pledge</text>
                <text x="432" y="52">Cloud</text>
                <text x="440" y="68">Registrar</text>
                <text x="60" y="116">1.</text>
                <text x="164" y="116">Mutually-authenticated</text>
                <text x="272" y="116">TLS</text>
                <text x="60" y="164">2.</text>
                <text x="104" y="164">Voucher</text>
                <text x="168" y="164">Request</text>
                <text x="60" y="212">3.</text>
                <text x="88" y="212">307</text>
                <text x="144" y="212">Location:</text>
                <text x="268" y="212">owner-ra.example.com</text>
                <text x="224" y="276">Owner</text>
                <text x="436" y="276">MASA</text>
                <text x="240" y="292">Registrar</text>
                <text x="60" y="324">4.</text>
                <text x="120" y="324">Provisional</text>
                <text x="184" y="324">TLS</text>
                <text x="60" y="372">5.</text>
                <text x="104" y="372">Voucher</text>
                <text x="168" y="372">Request</text>
                <text x="244" y="388">6.</text>
                <text x="288" y="388">Voucher</text>
                <text x="352" y="388">Request</text>
                <text x="244" y="436">7.</text>
                <text x="288" y="436">Voucher</text>
                <text x="356" y="436">Response</text>
                <text x="60" y="468">8.</text>
                <text x="104" y="468">Voucher</text>
                <text x="172" y="468">Response</text>
                <text x="60" y="516">9.</text>
                <text x="100" y="516">Verify</text>
                <text x="144" y="516">TLS</text>
                <text x="64" y="564">10.</text>
                <text x="100" y="564">etc.</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
+--------+                                       +----------+
| Pledge |                                       | Cloud    |
|        |                                       |Registrar |
+--------+                                       +----------+
    |                                                 |
    | 1. Mutually-authenticated TLS                   |
    |<----------------------------------------------->|
    |                                                 |
    | 2. Voucher Request                              |
    |------------------------------------------------>|
    |                                                 |
    | 3. 307 Location: owner-ra.example.com           |
    |<------------------------------------------------|
    |
    |                  +-----------+             +---------+
    |                  | Owner     |             |  MASA   |
    |                  | Registrar |             |         |
    |                  +-----------+             +---------+
    | 4. Provisional TLS   |                          |
    |<-------------------->|                          |
    |                      |                          |
    | 5. Voucher Request   |                          |
    |--------------------->| 6. Voucher Request       |
    |                      |------------------------->|
    |                      |                          |
    |                      | 7. Voucher Response      |
    |                      |<-------------------------|
    | 8. Voucher Response  |                          |
    |<---------------------|                          |
    |                      |                          |
    | 9. Verify TLS        |                          |
    |<-------------------->|                          |
    |                      |                          |
    | 10. etc.             |                          |
    |--------------------->|                          |
]]></artwork>
        </artset>
        <t>The process starts, in step 1, when the pledge establishes a Mutual TLS channel with the Cloud Registrar using artifacts created during the manufacturing process of the pledge.</t>
        <t>In step 2, the pledge sends a voucher request to the Cloud Registrar.</t>
        <t>The Cloud Registrar determines pledge ownership look up as outlined in <xref target="pledgeOwnershipLookup"/>, and determines the Owner Registrar domain.
In step 3, the Cloud Registrar redirects the pledge to the Owner Registrar domain.</t>
        <t>Steps 4 and onwards follow the standard BRSKI flow.
The pledge establishes a Provisional TLS connection with the Owner Registrar, and sends a voucher request to the Owner Registrar.
The Registrar forwards the voucher request to the MASA.
Assuming the MASA issues a voucher, then the pledge verifies the TLS connection with the Registrar using the pinned-domain-cert from the voucher and completes the BRSKI flow.</t>
      </section>
      <section anchor="voucher2EST">
        <name>Bootstrap via Cloud Registrar and Owner EST Service</name>
        <t>This flow illustrates the "Bootstrap via Cloud Registrar and Owner EST Service" use case.
A pledge is bootstrapping in a location with no local domain Registrar.
The Cloud Registrar is instructing the pledge to connect directly to an EST server for enrolment using EST mechanisms.
The assumption is that the EST domain is accessible, and the pledge can establish a network connection with the EST server.</t>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="608" width="496" viewBox="0 0 496 608" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
              <path d="M 8,32 L 8,96" fill="none" stroke="black"/>
              <path d="M 40,104 L 40,592" fill="none" stroke="black"/>
              <path d="M 80,32 L 80,96" fill="none" stroke="black"/>
              <path d="M 184,272 L 184,336" fill="none" stroke="black"/>
              <path d="M 224,344 L 224,384" fill="none" stroke="black"/>
              <path d="M 224,480 L 224,592" fill="none" stroke="black"/>
              <path d="M 272,272 L 272,336" fill="none" stroke="black"/>
              <path d="M 400,32 L 400,96" fill="none" stroke="black"/>
              <path d="M 440,104 L 440,592" fill="none" stroke="black"/>
              <path d="M 488,32 L 488,96" fill="none" stroke="black"/>
              <path d="M 8,32 L 80,32" fill="none" stroke="black"/>
              <path d="M 400,32 L 488,32" fill="none" stroke="black"/>
              <path d="M 8,96 L 80,96" fill="none" stroke="black"/>
              <path d="M 400,96 L 488,96" fill="none" stroke="black"/>
              <path d="M 48,144 L 432,144" fill="none" stroke="black"/>
              <path d="M 48,192 L 432,192" fill="none" stroke="black"/>
              <path d="M 48,240 L 432,240" fill="none" stroke="black"/>
              <path d="M 184,272 L 272,272" fill="none" stroke="black"/>
              <path d="M 184,336 L 272,336" fill="none" stroke="black"/>
              <path d="M 48,384 L 216,384" fill="none" stroke="black"/>
              <path d="M 48,432 L 432,432" fill="none" stroke="black"/>
              <path d="M 48,496 L 216,496" fill="none" stroke="black"/>
              <path d="M 48,544 L 216,544" fill="none" stroke="black"/>
              <path d="M 48,592 L 216,592" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="440,432 428,426.4 428,437.6 " fill="black" transform="rotate(0,432,432)"/>
              <polygon class="arrowhead" points="440,192 428,186.4 428,197.6 " fill="black" transform="rotate(0,432,192)"/>
              <polygon class="arrowhead" points="440,144 428,138.4 428,149.6 " fill="black" transform="rotate(0,432,144)"/>
              <polygon class="arrowhead" points="224,592 212,586.4 212,597.6 " fill="black" transform="rotate(0,216,592)"/>
              <polygon class="arrowhead" points="224,496 212,490.4 212,501.6 " fill="black" transform="rotate(0,216,496)"/>
              <polygon class="arrowhead" points="224,384 212,378.4 212,389.6 " fill="black" transform="rotate(0,216,384)"/>
              <polygon class="arrowhead" points="56,544 44,538.4 44,549.6 " fill="black" transform="rotate(180,48,544)"/>
              <polygon class="arrowhead" points="56,384 44,378.4 44,389.6 " fill="black" transform="rotate(180,48,384)"/>
              <polygon class="arrowhead" points="56,240 44,234.4 44,245.6 " fill="black" transform="rotate(180,48,240)"/>
              <polygon class="arrowhead" points="56,144 44,138.4 44,149.6 " fill="black" transform="rotate(180,48,144)"/>
              <g class="text">
                <text x="44" y="52">Pledge</text>
                <text x="432" y="52">Cloud</text>
                <text x="440" y="68">Registrar</text>
                <text x="416" y="84">/</text>
                <text x="444" y="84">MASA</text>
                <text x="60" y="132">1.</text>
                <text x="164" y="132">Mutually-authenticated</text>
                <text x="272" y="132">TLS</text>
                <text x="60" y="180">2.</text>
                <text x="104" y="180">Voucher</text>
                <text x="168" y="180">Request</text>
                <text x="60" y="228">3.</text>
                <text x="104" y="228">Voucher</text>
                <text x="172" y="228">Response</text>
                <text x="288" y="228">{est-domain:fqdn}</text>
                <text x="224" y="292">RFC7030</text>
                <text x="208" y="308">EST</text>
                <text x="220" y="324">Server</text>
                <text x="60" y="372">4.</text>
                <text x="128" y="372">Authenticated</text>
                <text x="200" y="372">TLS</text>
                <text x="96" y="420">5a.</text>
                <text x="176" y="420">/voucher_status</text>
                <text x="260" y="420">POST</text>
                <text x="320" y="420">success</text>
                <text x="92" y="452">ON</text>
                <text x="136" y="452">FAILURE</text>
                <text x="184" y="452">5b.</text>
                <text x="264" y="452">/voucher_status</text>
                <text x="348" y="452">POST</text>
                <text x="60" y="484">6.</text>
                <text x="88" y="484">EST</text>
                <text x="132" y="484">Enroll</text>
                <text x="60" y="532">7.</text>
                <text x="120" y="532">Certificate</text>
                <text x="60" y="580">8.</text>
                <text x="128" y="580">/enrollstatus</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
+--------+                                       +----------+
| Pledge |                                       | Cloud    |
|        |                                       |Registrar |
|        |                                       | / MASA   |
+--------+                                       +----------+
    |                                                 |
    | 1. Mutually-authenticated TLS                   |
    |<----------------------------------------------->|
    |                                                 |
    | 2. Voucher Request                              |
    |------------------------------------------------>|
    |                                                 |
    | 3. Voucher Response  {est-domain:fqdn}          |
    |<------------------------------------------------|
    |                                                 |
    |                 +----------+                    |
    |                 | RFC7030  |                    |
    |                 | EST      |                    |
    |                 | Server   |                    |
    |                 +----------+                    |
    |                      |                          |
    | 4. Authenticated TLS |                          |
    |<-------------------->|                          |
    |                                                 |
    |     5a. /voucher_status POST  success           |
    |------------------------------------------------>|
    |     ON FAILURE 5b. /voucher_status POST         |
    |                                                 |
    | 6. EST Enroll        |                          |
    |--------------------->|                          |
    |                      |                          |
    | 7. Certificate       |                          |
    |<---------------------|                          |
    |                      |                          |
    | 8. /enrollstatus     |                          |
    |--------------------->|                          |
]]></artwork>
        </artset>
        <t>The process starts, in step 1, when the pledge establishes a Mutual TLS channel with the Cloud Registrar/MASA using artifacts created during the manufacturing process of the pledge.
In step 2, the pledge sends a voucher request to the Cloud Registrar/MASA, and in the response in step 3, the pledge receives an <xref target="RFC8366bis"/> format voucher from the Cloud Registrar/MASA that includes its assigned EST domain in the est-domain attribute.</t>
        <t>In step 4, the pledge establishes a TLS connection with the EST RA specified in the voucher est-domain attribute.
The connection may involve crossing the Internet requiring a DNS look up on the provided name.
It may also be a local address that includes an IP address literal including both <xref target="RFC1918"/> and IPv6 Unique Local Addresses <xref target="RFC4193"/>.
The artifact provided in the pinned-domain-cert is trusted as a trust anchor, and is used to verify the EST server identity.
The EST server identity MUST be verified using the pinned-domain-cert value provided in the voucher as described in <xref target="RFC7030"/> section 3.3.1.</t>
        <t>There is a case where the pinned-domain-cert is the identical End-Entity (EE) Certificate as the EST server.
It also explicitly includes the case where the EST server has a self-signed EE Certificate, but it may also be an EE certificate that is part of a larger PKI.
If the certificate is not a self-signed or EE certificate, then the pledge SHOULD apply <xref target="RFC9525"/> DNS-ID verification on the certificate against the domain provided in the est-domain attribute.
If the est-domain was provided by with an IP address literal, then it is unlikely that it can be verified, and in that case, it is expected that either a self-signed certificate or an EE certificate will be pinned by the voucher.</t>
        <t>The pledge also has the details it needs to be able to create the CSR request to send to the RA based on the details provided in the voucher.</t>
        <t>In steps 5.a and 5.b, the pledge may optionally notify the Cloud Registrar/MASA of the success or failure of its attempt to establish a secure TLS channel with the EST server.</t>
        <t>The pledge then follows that, in step 6, with an EST Enroll request with the CSR and obtains the requested certificate.
The pledge must verify that the issued certificate in step 7 has the expected identifier obtained from the Cloud Registrar/MASA in step 3.</t>
      </section>
    </section>
    <section anchor="lifecycle-considerations">
      <name>Lifecycle Considerations</name>
      <t>BRSKI and the Cloud Registrar support provided in this document are dependant upon the manufacturer maintaining the required infrastructure.</t>
      <t><xref section="10.7" sectionFormat="comma" target="BRSKI"/> and Section 11.5 and 11.6 detail some additional considerations about device vs manufacturer life span.</t>
      <t>The well-known URL that is used is specified by the manufacturer when designing it's firmware, and is therefore completely under the manufacturer's control.
If the manufacturer wishes to change the URL, or discontinue the service, then the manufacturer will need to arrange for a firmware update where appropriate changes are made.</t>
    </section>
    <section anchor="redirected">
      <name>YANG extension for Voucher based redirect</name>
      <t><xref target="RFC8366bis"/> contains the two needed voucher extensions: est-domain and additional-configuration which are needed when a client is redirected to a local EST server.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document makes no IANA requests.</t>
    </section>
    <section anchor="implementation-considerations">
      <name>Implementation Considerations</name>
      <section anchor="captive-portals">
        <name>Captive Portals</name>
        <t>A pledge may be deployed in a network where a captive portal or an intelligent home gateway that provides access control on all connections is also deployed.
Captive portals that do not follow the requirements of <xref target="RFC8952"/> section 1 may forcibly redirect HTTPS connections.
While this is a deprecated practice as it breaks TLS in a way that most users can not deal with, it is still common in many networks.</t>
        <t>When the pledge attempts to connect to the Cloud Registrar, an incorrect connection will be detected because the pledge will be unable to verify the TLS connection to its Cloud Registrar via DNS-ID check <xref section="6.3" sectionFormat="comma" target="RFC9525"/>.
That is, the certificate returned from the captive portal will not match.</t>
        <t>At this point a network operator who controls the captive portal, noticing the connection to what seems a legitimate destination (the Cloud Registrar), may then permit that connection.
This enables the first connection to go through.</t>
        <t>The connection is then redirected to the Registrar via 307, or to an EST server via est-domain in a voucher.
If it is a 307 redirect, then a Provisional TLS connection will be initiated, and it will succeed.
The Provisional TLS connection does not do <xref section="6.3" sectionFormat="comma" target="RFC9525"/> DNS-ID verification at the beginning of the connection, so a forced redirection to a captive portal system will not be detected.
The subsequent BRSKI POST of a voucher will most likely be met by a 404 or 500 HTTP code.</t>
        <t>It is RECOMMENDED therefore that the pledge look for <xref target="RFC8910"/> attributes in DHCP, and if present, use the <xref target="RFC8908"/> API to learn if it is captive.</t>
        <t>The scenarios outlined here when a pledge is deployed behind a captive portal may result in failure scenarios, but do not constitute a security risk, as the pledge is correctly verifying all TLS connections as per <xref target="BRSKI"/>.</t>
      </section>
      <section anchor="multiple-http-redirects">
        <name>Multiple HTTP Redirects</name>
        <t>If the Redirect to Registrar method is used, as described in <xref target="redirect2Registrar"/>, there may be a series of 307 redirects.
An example of why this might occur is that the manufacturer only knows that it resold the device to a particular value added reseller (VAR), and there may be a chain of such VARs.
It is important the pledge avoid being drawn into a loop of redirects.
This could happen if a VAR does not think they are authoritative for a particular device.
A "helpful" programmer might instead decide to redirect back to the manufacturer in an attempt to restart at the top:  perhaps there is another process that updates the manufacturer's database and this process is underway.
Instead, the VAR MUST return a 404 error if it cannot process the device.
This will force the device to stop, timeout, and then try all mechanisms again.</t>
        <t>There are additional considerations regarding TLS certificate validation that must be accounted for as outlined in {redirect-response}.
When the pledge follows a 307 redirect from the default Cloud Registrar, it will attempt to establish a TLS connection with the redirected target Registrar.
The pledge implementation will typically register a callback with the TLS stack, where the TLS stack allows the implementation to validate the identity of the Registrar.
The pledge should check whether the identity of the Registrar can be validated with its Implicit Trust Anchor Database and track the result, but should always return a successful validation result to the TLS stack, thus allowing the <xref target="BRSKI"/> Provisional TLS connection to be established.
The pledge will then send a Voucher Request to the Registrar.
If the Registrar returns a 307 response, the pledge MUST NOT follow this redirect if the Registrar identity was not validated using its Implicit Trust Anchor Database.
If the Registrar identity was validated using the Implicit Trust Anchor Database, then the pledge MAY follow the redirect.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The Cloud Registrar described in this document inherits all the strong security properties that are described in <xref target="BRSKI"/>, and none of the security mechanisms that are defined in <xref target="BRSKI"/> are bypassed or weakened by this document.
The Cloud Registrar also inherits all the potential issues that are described in <xref target="BRSKI"/>.
This includes dependency upon continued operation of the manufacturer provided MASA, as well as potential complications where a manufacturer might interfere with
resale of a device.</t>
      <t>In addition to the dependency upon the MASA, the successful enrollment of a device using a Cloud Registrar depends upon the correct and continued operation of this new service.
This internet accessible service may be operated by the manufacturer and/or by one or more value-added-resellers.
All the considerations for operation of the MASA also apply to operation of the Cloud Registrar.</t>
      <section anchor="security-updates-for-the-pledge">
        <name>Security Updates for the Pledge</name>
        <t>Unlike many other uses of BRSKI, in the Cloud Registrar case it is assumed that the pledge has connected to a network, such as the public Internet, on which some amount of connectivity is possible, but there is no other local configuration available.
(Note: there are many possible configurations in which the device might not have unlimited connectivity to the public Internet, but for which there might be connectivity possible.
For instance, the device could be without a default route or NAT44, but able to make HTTP requests via an HTTP proxy configured via DHCP)</t>
        <t>There is another advantage to being online: the pledge may be able to contact the manufacturer before bootstrapping in order to apply the latest firmware updates.
This may also include updates to the Implicit list of Trust Anchors.
In this way, a pledge that may have been in a dusty box in a warehouse for a long time can be updated to the latest (exploit-free) firmware before attempting bootstrapping.</t>
      </section>
      <section anchor="trust-anchors-for-cloud-registrar">
        <name>Trust Anchors for Cloud Registrar</name>
        <t>The Implicit Trust Anchor database is used to authenticate the Cloud Registrar.
This list is built-in by the manufacturer along with a DNS name to which to connect.
(The manufacturer could even build in IP addresses as a last resort)</t>
        <t>The Cloud Registrar may have a certificate that can be verified using a public (WebPKI) anchor.
If one or more public WebPKI anchors are used, it is recommended to limit the number of WebPKI anchors to only those necessary for establishing trust with the Cloud Registrar.
As another option, the Cloud Registrar may have a certificate that can be verified using a Private/Cloud PKI anchor as described in <xref target="I-D.irtf-t2trg-taxonomy-manufacturer-anchors"/> section 3.
The trust anchor, or trust anchors, to use is an implementation decision and out of scope of this document.</t>
        <t>The pledge may have any kind of Trust Anchor built in: from full multi-level WebPKI to the single self-signed certificate used by the Cloud Registrar.
There are many tradeoffs to having more or less of the PKI present in the pledge, which is addressed in part in <xref target="I-D.irtf-t2trg-taxonomy-manufacturer-anchors"/> in sections 3 and 5.</t>
      </section>
      <section anchor="considerationsfor-http-redirect">
        <name>Considerations for HTTP Redirect</name>
        <t>When the default Cloud Registrar redirects a pledge using HTTP 307 to an Owner Registrar, or another Cloud Registrar operated by a VAR, the pledge MUST establish a Provisional TLS connection with the Registrar as specified in <xref target="BRSKI"/>.
The pledge is unable to determine whether it has been redirected to another Cloud Registrar that is operated by a VAR, or if it has been redirected to an Owner Registrar, and does not differentiate between the two scenarios.</t>
      </section>
      <section anchor="considerations-for-voucher-est-domain">
        <name>Considerations for Voucher est-domain</name>
        <t>A Cloud Registrar supporting the same set of pledges as a MASA may be integrated with the MASA to avoid the need for a network based API between them, and without changing their external behavior as specified here.</t>
        <t>When a Cloud Registrar handles the scenario described in {bootstrapping-with-no-owner-registrar} by the returning "est-domain" attribute in the voucher, the Cloud Registrar actually does all the voucher processing as specified in <xref target="BRSKI"/>.
This is an example deployment scenario where the Cloud Registrar may be operated by the same entity as the MASA, and it may even be integrated with the MASA.</t>
        <t>When a voucher is issued by the Cloud Registrar and that voucher contains an "est-domain" attribute, the pledge MUST verify the TLS connection with this EST server using the "pinned-domain-cert" attribute in the voucher.</t>
        <t>The reduced operational security mechanisms outlined in <xref target="BRSKI"/> sections 7.3 and 11 MAY be supported when the pledge connects with the EST server.
These mechanisms reduce the security checks that take place when the pledge enrolls with the EST server.
Refer to <xref target="BRSKI"/> sections 7.3 and 11 for further details.</t>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>The authors would like to thank for following for their detailed reviews: (ordered
by last name): Esko Dijk, Sheng Jiang.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC6066">
          <front>
            <title>Transport Layer Security (TLS) Extensions: Extension Definitions</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd"/>
            <date month="January" year="2011"/>
            <abstract>
              <t>This document provides specifications for existing TLS extensions. It is a companion document for RFC 5246, "The Transport Layer Security (TLS) Protocol Version 1.2". The extensions specified are server_name, max_fragment_length, client_certificate_url, trusted_ca_keys, truncated_hmac, and status_request. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6066"/>
          <seriesInfo name="DOI" value="10.17487/RFC6066"/>
        </reference>
        <reference anchor="RFC8366">
          <front>
            <title>A Voucher Artifact for Bootstrapping Protocols</title>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="M. Pritikin" initials="M." surname="Pritikin"/>
            <author fullname="T. Eckert" initials="T." surname="Eckert"/>
            <date month="May" year="2018"/>
            <abstract>
              <t>This document defines a strategy to securely assign a pledge to an owner using an artifact signed, directly or indirectly, by the pledge's manufacturer. This artifact is known as a "voucher".</t>
              <t>This document defines an artifact format as a YANG-defined JSON document that has been signed using a Cryptographic Message Syntax (CMS) structure. Other YANG-derived formats are possible. The voucher artifact is normally generated by the pledge's manufacturer (i.e., the Manufacturer Authorized Signing Authority (MASA)).</t>
              <t>This document only defines the voucher artifact, leaving it to other documents to describe specialized protocols for accessing it.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8366"/>
          <seriesInfo name="DOI" value="10.17487/RFC8366"/>
        </reference>
        <reference anchor="RFC8994">
          <front>
            <title>An Autonomic Control Plane (ACP)</title>
            <author fullname="T. Eckert" initials="T." role="editor" surname="Eckert"/>
            <author fullname="M. Behringer" initials="M." role="editor" surname="Behringer"/>
            <author fullname="S. Bjarnason" initials="S." surname="Bjarnason"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>Autonomic functions need a control plane to communicate, which depends on some addressing and routing. This Autonomic Control Plane should ideally be self-managing and be as independent as possible of configuration. This document defines such a plane and calls it the "Autonomic Control Plane", with the primary use as a control plane for autonomic functions. It also serves as a "virtual out-of-band channel" for Operations, Administration, and Management (OAM) communications over a network that provides automatically configured, hop-by-hop authenticated and encrypted communications via automatically configured IPv6 even when the network is not configured or is misconfigured.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8994"/>
          <seriesInfo name="DOI" value="10.17487/RFC8994"/>
        </reference>
        <reference anchor="BRSKI">
          <front>
            <title>Bootstrapping Remote Secure Key Infrastructure (BRSKI)</title>
            <author fullname="M. Pritikin" initials="M." surname="Pritikin"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="T. Eckert" initials="T." surname="Eckert"/>
            <author fullname="M. Behringer" initials="M." surname="Behringer"/>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document specifies automated bootstrapping of an Autonomic Control Plane. To do this, a Secure Key Infrastructure is bootstrapped. This is done using manufacturer-installed X.509 certificates, in combination with a manufacturer's authorizing service, both online and offline. We call this process the Bootstrapping Remote Secure Key Infrastructure (BRSKI) protocol. Bootstrapping a new device can occur when using a routable address and a cloud service, only link-local connectivity, or limited/disconnected networks. Support for deployment models with less stringent security requirements is included. Bootstrapping is complete when the cryptographic identity of the new key infrastructure is successfully deployed to the device. The established secure connection can be used to deploy a locally issued certificate to the device as well.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8995"/>
          <seriesInfo name="DOI" value="10.17487/RFC8995"/>
        </reference>
        <reference anchor="RFC8366bis">
          <front>
            <title>A Voucher Artifact for Bootstrapping Protocols</title>
            <author fullname="Kent Watsen" initials="K." surname="Watsen">
              <organization>Watsen Networks</organization>
            </author>
            <author fullname="Michael Richardson" initials="M." surname="Richardson">
              <organization>Sandelman Software</organization>
            </author>
            <author fullname="Max Pritikin" initials="M." surname="Pritikin">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Toerless Eckert" initials="T. T." surname="Eckert">
              <organization>Futurewei Technologies Inc.</organization>
            </author>
            <author fullname="Qiufang Ma" initials="Q." surname="Ma">
              <organization>Huawei</organization>
            </author>
            <date day="8" month="July" year="2024"/>
            <abstract>
              <t>   This document defines a strategy to securely assign a pledge to an
   owner using an artifact signed, directly or indirectly, by the
   pledge's manufacturer.  This artifact is known as a "voucher".

   This document defines an artifact format as a YANG-defined JSON or
   CBOR document that has been signed using a variety of cryptographic
   systems.

   The voucher artifact is normally generated by the pledge's
   manufacturer (i.e., the Manufacturer Authorized Signing Authority
   (MASA)).

   This document updates RFC8366, merging a number of extensions into
   the YANG.  The RFC8995 voucher request is also merged into this
   document.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-anima-rfc8366bis-12"/>
        </reference>
        <reference anchor="RFC7030">
          <front>
            <title>Enrollment over Secure Transport</title>
            <author fullname="M. Pritikin" initials="M." role="editor" surname="Pritikin"/>
            <author fullname="P. Yee" initials="P." role="editor" surname="Yee"/>
            <author fullname="D. Harkins" initials="D." role="editor" surname="Harkins"/>
            <date month="October" year="2013"/>
            <abstract>
              <t>This document profiles certificate enrollment for clients using Certificate Management over CMS (CMC) messages over a secure transport. This profile, called Enrollment over Secure Transport (EST), describes a simple, yet functional, certificate management protocol targeting Public Key Infrastructure (PKI) clients that need to acquire client certificates and associated Certification Authority (CA) certificates. It also supports client-generated public/private key pairs as well as key pairs generated by the CA.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7030"/>
          <seriesInfo name="DOI" value="10.17487/RFC7030"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="I-D.ietf-lamps-rfc7030-csrattrs">
          <front>
            <title>Clarification and enhancement of RFC7030 CSR Attributes definition</title>
            <author fullname="Michael Richardson" initials="M." surname="Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <author fullname="Owen Friel" initials="O." surname="Friel">
              <organization>Cisco</organization>
            </author>
            <author fullname="David von Oheimb" initials="D." surname="von Oheimb">
              <organization>Siemens</organization>
            </author>
            <author fullname="Dan Harkins" initials="D." surname="Harkins">
              <organization>The Industrial Lounge</organization>
            </author>
            <date day="3" month="September" year="2024"/>
            <abstract>
              <t>   The Enrollment over Secure Transport (EST, RFC7030) is ambiguous in
   its specification of the CSR Attributes Response.  This has resulted
   in implementation challenges and implementor confusion.

   This document updates RFC7030 (EST) and clarifies how the CSR
   Attributes Response can be used by an EST server to specify both CSR
   attribute OIDs and also CSR attribute values, in particular X.509
   extension values, that the server expects the client to include in
   subsequent CSR request.

   Moreover, it provides new convenient and straightforward approach:
   using a template for CSR contents that may be partially filled in by
   the server.  This also allows specifying a subject Distinguished Name
   (DN).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-rfc7030-csrattrs-11"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC9525">
          <front>
            <title>Service Identity in TLS</title>
            <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
            <author fullname="R. Salz" initials="R." surname="Salz"/>
            <date month="November" year="2023"/>
            <abstract>
              <t>Many application technologies enable secure communication between two entities by means of Transport Layer Security (TLS) with Internet Public Key Infrastructure using X.509 (PKIX) certificates. This document specifies procedures for representing and verifying the identity of application services in such interactions.</t>
              <t>This document obsoletes RFC 6125.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9525"/>
          <seriesInfo name="DOI" value="10.17487/RFC9525"/>
        </reference>
        <reference anchor="I-D.irtf-t2trg-taxonomy-manufacturer-anchors">
          <front>
            <title>A Taxonomy of operational security considerations for manufacturer installed keys and Trust Anchors</title>
            <author fullname="Michael Richardson" initials="M." surname="Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <date day="26" month="August" year="2024"/>
            <abstract>
              <t>   This document provides a taxonomy of methods used by manufacturers of
   silicon and devices to secure private keys and public trust anchors.
   This deals with two related activities: how trust anchors and private
   keys are installed into devices during manufacturing, and how the
   related manufacturer held private keys are secured against
   disclosure.

   This document does not evaluate the different mechanisms, but rather
   just serves to name them in a consistent manner in order to aid in
   communication.

   RFCEDITOR: please remove this paragraph.  This work is occurring in
   https://github.com/mcr/idevid-security-considerations

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-irtf-t2trg-taxonomy-manufacturer-anchors-04"/>
        </reference>
        <reference anchor="RFC3361">
          <front>
            <title>Dynamic Host Configuration Protocol (DHCP-for-IPv4) Option for Session Initiation Protocol (SIP) Servers</title>
            <author fullname="H. Schulzrinne" initials="H." surname="Schulzrinne"/>
            <date month="August" year="2002"/>
          </front>
          <seriesInfo name="RFC" value="3361"/>
          <seriesInfo name="DOI" value="10.17487/RFC3361"/>
        </reference>
        <reference anchor="RFC3925">
          <front>
            <title>Vendor-Identifying Vendor Options for Dynamic Host Configuration Protocol version 4 (DHCPv4)</title>
            <author fullname="J. Littlefield" initials="J." surname="Littlefield"/>
            <date month="October" year="2004"/>
            <abstract>
              <t>The Dynamic Host Configuration Protocol (DHCP) options for Vendor Class and Vendor-Specific Information can be limiting or ambiguous when a DHCP client represents multiple vendors. This document defines two new options, modeled on the IPv6 options for vendor class and vendor-specific information, that contain Enterprise Numbers to remove ambiguity. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3925"/>
          <seriesInfo name="DOI" value="10.17487/RFC3925"/>
        </reference>
        <reference anchor="RFC1918">
          <front>
            <title>Address Allocation for Private Internets</title>
            <author fullname="Y. Rekhter" initials="Y." surname="Rekhter"/>
            <author fullname="B. Moskowitz" initials="B." surname="Moskowitz"/>
            <author fullname="D. Karrenberg" initials="D." surname="Karrenberg"/>
            <author fullname="G. J. de Groot" initials="G. J." surname="de Groot"/>
            <author fullname="E. Lear" initials="E." surname="Lear"/>
            <date month="February" year="1996"/>
            <abstract>
              <t>This document describes address allocation for private internets. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="5"/>
          <seriesInfo name="RFC" value="1918"/>
          <seriesInfo name="DOI" value="10.17487/RFC1918"/>
        </reference>
        <reference anchor="RFC4193">
          <front>
            <title>Unique Local IPv6 Unicast Addresses</title>
            <author fullname="R. Hinden" initials="R." surname="Hinden"/>
            <author fullname="B. Haberman" initials="B." surname="Haberman"/>
            <date month="October" year="2005"/>
            <abstract>
              <t>This document defines an IPv6 unicast address format that is globally unique and is intended for local communications, usually inside of a site. These addresses are not expected to be routable on the global Internet. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4193"/>
          <seriesInfo name="DOI" value="10.17487/RFC4193"/>
        </reference>
        <reference anchor="RFC8952">
          <front>
            <title>Captive Portal Architecture</title>
            <author fullname="K. Larose" initials="K." surname="Larose"/>
            <author fullname="D. Dolson" initials="D." surname="Dolson"/>
            <author fullname="H. Liu" initials="H." surname="Liu"/>
            <date month="November" year="2020"/>
            <abstract>
              <t>This document describes a captive portal architecture. Network provisioning protocols such as DHCP or Router Advertisements (RAs), an optional signaling protocol, and an HTTP API are used to provide the solution.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8952"/>
          <seriesInfo name="DOI" value="10.17487/RFC8952"/>
        </reference>
        <reference anchor="RFC8910">
          <front>
            <title>Captive-Portal Identification in DHCP and Router Advertisements (RAs)</title>
            <author fullname="W. Kumari" initials="W." surname="Kumari"/>
            <author fullname="E. Kline" initials="E." surname="Kline"/>
            <date month="September" year="2020"/>
            <abstract>
              <t>In many environments offering short-term or temporary Internet access (such as coffee shops), it is common to start new connections in a captive portal mode. This highly restricts what the user can do until the user has satisfied the captive portal conditions.</t>
              <t>This document describes a DHCPv4 and DHCPv6 option and a Router Advertisement (RA) option to inform clients that they are behind some sort of captive portal enforcement device, and that they will need to satisfy the Captive Portal conditions to get Internet access. It is not a full solution to address all of the issues that clients may have with captive portals; it is designed to be one component of a standardized approach for hosts to interact with such portals. While this document defines how the network operator may convey the captive portal API endpoint to hosts, the specific methods of satisfying and interacting with the captive portal are out of scope of this document.</t>
              <t>This document replaces RFC 7710, which used DHCP code point 160. Due to a conflict, this document specifies 114. Consequently, this document also updates RFC 3679.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8910"/>
          <seriesInfo name="DOI" value="10.17487/RFC8910"/>
        </reference>
        <reference anchor="RFC8908">
          <front>
            <title>Captive Portal API</title>
            <author fullname="T. Pauly" initials="T." role="editor" surname="Pauly"/>
            <author fullname="D. Thakore" initials="D." role="editor" surname="Thakore"/>
            <date month="September" year="2020"/>
            <abstract>
              <t>This document describes an HTTP API that allows clients to interact with a Captive Portal system. With this API, clients can discover how to get out of captivity and fetch state about their Captive Portal sessions.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8908"/>
          <seriesInfo name="DOI" value="10.17487/RFC8908"/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
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
uA7dh9yQUfyW8ST31RF3r1TaeLMyqPeT7Hzdec5cWSWt/f5yY8Y0Kh6TCAYc
DYsNWUWa0007QVcq7X0V4pAIISHoAF71cmMZQKoo+lq6HSoM+9SCItYIQHx2
Wq2FjKzdvrsB3vMmxLTDSFxM393415lPgWmqDZc6KoXRHRpWu80eV/29Y9TH
1z53V39H9qCrh/8KVURWC9pmdVc+YSCcY99UVsBpkBNR7qfgZkle7UDvheHb
9Vz/3Iawj0rLiqB7mhskYIrBIO3qNPpisl2ndC01WjZgiBrn9L232RPfytfc
kr8GTnLx7tmI9s3VaAT77kwx3bLzTv1FQWd93XEkIJ1HUOKPltxmpIm5FfFV
U3JLk/NIxK5BkdDA8+akfALDGAAZpLk0C1TBhZ5nlTBKWM2142e8nMCnjCwi
KBQLBnXtitsotaYYrBs07CXZCyCMoJi7sL04wVniiD4FzrXBEZUrbFvRAjPM
+ARQZbLlxn1SHUsq3YhUupGqdKhaCk40xO+8rNqHydd9I0px6KYu2890dlN1
xPlO1Jq5XCrEaXQDbX1OrhHWhjaWNWHx7eqVGQ2oU0xMbFZMKtS4SsA00C8e
XEBWen/B0N3DRY9zzZQGcYeJc/exn3iFygVfVx5cQEdeCE1T5HaaotYVWrbN
HsDYj5jegsGDboDxYB/rDI/lvVTviNNB4/fIpPNt4wQl5XKEUi6wwdjUKquD
y8topVqx2dwmLnpOPhMZtjL+Tsv4sj1ZEzcqoqsUC3EM61LcTZtIk+g+T53S
hPfaETbKrXV0aWh4z570OJHbt9BRoT2z8JKyrb+TbsZ+J7BsD8IQrajRvmMR
SWLyBRSoB4YXgzrTRUNfcsVFi5bkXrBWoq1vJsCUAO9h61Rsxxt7vW1Q4Sfc
mDsOOQ2/jGUhFv4jmoUy0fqmq6DSDL2lzQpwug3ujiSXzgzexUsuPqi/Um+w
ZGsI75Dj3l96KdKaZbPWbvNW9jEUXWb1aF4Zc+B3JkARbZfTDgL4MM1H66d5
W9eS3PTqAM7GCbIH7rukQQBN8MPc6E2W1yPYfieLJAhIMx5M0aCrAcj7R1Tg
PK9AnzfNl6WP5C0Amy7DRRj7eDGXmmPs3LKlXdUHPc2h9dzSdhj+ni75+z+Z
yeXvzw8k04KUr5DZ+2b6lxSp40NIpdW/eqaxZTjYvHSbLnp+MnZamqDYvDEC
cvyC8B0vngUAYXV9teXM7+gyADrN/g7twa1FHPntLrD4EhBdVtktPPSEx/Kr
70r9oNutqno+qo/qajGq0w9lUa62o/C8tfV/lB9CBxonuzSuAPA3dfLljD1X
DXBs+J4bFG9ixiU3l/r+JRHtEOLD/o7ZcMVWv2Aj53U24nuR5EiF1BFopF90
5x8Q8fV1kb+JZRZ8ODPlfG65SzbdfkPYCIvKg1Q2nF1ckS6zSHrhu1Y5Skzu
1rMvOzCMaKvD75nkHnCErK3uRB6/5ONXsUaE9z7gNTgjtTo+B5GbHsdAUB/k
OHZwUytab51Nh/mubCGPezuWtQ2/x3YhCeyFvu4xsT/CdnY9D+4jdW0SGuHQ
nj1puLxjb85B1Ttkd32TjyRo7zeKOIe3cmFM2Dmce9Hix1ZuIIZTe5Ie1LK1
KE7k0gttEUtSgVRodxk1X95sgtucOE1SexQRLzbq0XJxLg6Do78+2M6K962K
F4XWZTkZB7srxAHXiDA6aiRkDUW2bZulNBGsgwhAg5VGCsAIFzEqytZVp8pJ
2IOBq4u6Yfi7COMcom7ZgNRODjA6arVtNfgSdAjfidQS/PUOdo5ckN3n9upd
Zz19CZv2GJ2/3hNqAyNTgmL4GisQ/WjgzyNoeCkpQN0cWZyvQTquy4GADXaD
us09+qPAsjxYRhBR9O6cvXZSZP+ZilQDYt5MQ7sYY28dXpK4tLPR0som346f
SXoPOYnw8kx3B0ozkVs2ZLuTv27oautgZl5h7L5xt3BElwe2U8Y5mb17ouCG
oV3bQcrXXnuSakf+rpMpxnRoHkqIGHw8FrXNzP5lryj3pB0nB0OstLriC8ZQ
8qcFxw59Q3+xyTOdh0I/t5m5s8fJPtk7ZjYAxCPFFvXlg+PkzL4vk1fZv4Et
fQ2bXyT/K0vJABj8B+mA+X0wvAAA

-->

</rfc>
