<?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.19 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-anima-brski-cloud-11" 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-11"/>
    <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="October" day="15"/>
    <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="6" 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-12"/>
        </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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
laVkAAz+AwSrQaAwvAAA

-->

</rfc>
