<?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-13" category="std" consensus="true" updates="8995" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.25.0 -->
  <front>
    <title abbrev="BRSKI-CLOUD">BRSKI Cloud Registrar</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-anima-brski-cloud-13"/>
    <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>Ciena</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="2025" month="February" day="14"/>
    <abstract>
      <?line 52?>

<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, 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 58?>

<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 enrollment.</t>
      <t>In BRSKI, the Pledge performs enrollment 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 owner's Registrar.</t>
      <t>To support enrollment 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 its 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 left out of scope in <xref target="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 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 Reseller (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 its 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>This mechanism is useful to help an employee who is deploying a Pledge in a home or small branch office, where the Pledge belongs to the employer.
As there is no local domain Registrar in the employee's local network, 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.
As a very specific 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 section="6.2.2" sectionFormat="comma" target="RFC8994"/>, 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="multiplehttpredirects"/> and <xref format="counter" 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 outside the 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 includes an est-domain attribute that points to the Owner EST Service.
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="536" viewBox="0 0 536 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 440,128 L 440,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="492" y="148">BRSKI-MASA</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 |
    |                                               +-+---------+
    |                                                 | BRSKI-MASA
    |                 +-----------+                 +-+---------+
    +---------------->|  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="544" viewBox="0 0 544 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 448,128 L 448,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="500" y="148">BRSKI-MASA</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 |
    |                                               +--+--------+
    |                                                  | BRSKI-MASA
    |                                               +--+--------+
    |                                               |   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.
The interation between the Cloud Registrar and the MASA is described by <xref section="5.4" sectionFormat="comma" target="BRSKI"/>.</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 so that it 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. For wireless use cases, existing Wi-Fi onboarding mechanisms such as <xref target="WPS"/> can be used.</t>
        <t>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><xref section="5.9.2" sectionFormat="of" target="BRSKI"/> 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 <xref section="2.5.3" sectionFormat="comma" target="BRSKI"/>, 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 section="2.6" sectionFormat="of" target="RFC7030"/>, 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 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>
    <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 <xref section="5.1" sectionFormat="comma" target="BRSKI"/>, 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, <xref target="RFC6066"/>) when using TLS 1.2.
Support for SNI is mandatory with TLS 1.3.</t>
          <t>Pledges SHOULD send a valid "server_name" extension (SNI) whenever they know the domain name of the registrar they connect to.
A Pledge creating a Provisional TLS connection according to <xref target="BRSKI"/> will often only know the IPv6 link local IP address of a Join Proxy that connects it to the Registrar.
Registrars are accordingly expected to ignore SNI information, as in most cases, the Pledge will not know how to set the SNI correctly.</t>
          <t>The Pledge MUST be manufactured with preloaded 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.
The Registrar returns the following errors:</t>
        <ul spacing="normal">
          <li>
            <t>in the case of an unknown Pledge, a 404 is returned,</t>
          </li>
          <li>
            <t>for a malformed request, 400 is returned</t>
          </li>
          <li>
            <t>in case of server overload, 503 is returned.</t>
          </li>
        </ul>
        <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 errors 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, outside the 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 outside the 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 outside the 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>In order to avoid permanent bootstrap cycles, the Pledge MUST NOT revisit a prior location.
<xref target="multiplehttpredirects"/> further outlines risks associated with redirects.
However, in some scenarios, Pledges MAY visit the current location multiple times, for example when handling a 401 Unauthorized response, or when handling a 503 Service Unavailable that includes a Retry-After HTTP header.
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="624" width="496" viewBox="0 0 496 624" 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,608" fill="none" stroke="black"/>
              <path d="M 80,32 L 80,80" fill="none" stroke="black"/>
              <path d="M 192,272 L 192,320" fill="none" stroke="black"/>
              <path d="M 224,328 L 224,608" fill="none" stroke="black"/>
              <path d="M 288,272 L 288,320" fill="none" stroke="black"/>
              <path d="M 400,32 L 400,80" fill="none" stroke="black"/>
              <path d="M 400,272 L 400,320" fill="none" stroke="black"/>
              <path d="M 440,88 L 440,240" fill="none" stroke="black"/>
              <path d="M 440,328 L 440,560" fill="none" stroke="black"/>
              <path d="M 480,272 L 480,320" 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,272 L 288,272" fill="none" stroke="black"/>
              <path d="M 400,272 L 480,272" fill="none" stroke="black"/>
              <path d="M 192,320 L 288,320" fill="none" stroke="black"/>
              <path d="M 400,320 L 480,320" fill="none" stroke="black"/>
              <path d="M 48,352 L 216,352" fill="none" stroke="black"/>
              <path d="M 48,400 L 216,400" fill="none" stroke="black"/>
              <path d="M 232,416 L 432,416" fill="none" stroke="black"/>
              <path d="M 232,464 L 432,464" 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,416 428,410.4 428,421.6 " fill="black" transform="rotate(0,432,416)"/>
              <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,464 228,458.4 228,469.6 " fill="black" transform="rotate(180,232,464)"/>
              <polygon class="arrowhead" points="224,592 212,586.4 212,597.6 " fill="black" transform="rotate(0,216,592)"/>
              <polygon class="arrowhead" points="224,544 212,538.4 212,549.6 " fill="black" transform="rotate(0,216,544)"/>
              <polygon class="arrowhead" points="224,400 212,394.4 212,405.6 " fill="black" transform="rotate(0,216,400)"/>
              <polygon class="arrowhead" points="224,352 212,346.4 212,357.6 " fill="black" transform="rotate(0,216,352)"/>
              <polygon class="arrowhead" points="56,544 44,538.4 44,549.6 " fill="black" transform="rotate(180,48,544)"/>
              <polygon class="arrowhead" points="56,496 44,490.4 44,501.6 " fill="black" transform="rotate(180,48,496)"/>
              <polygon class="arrowhead" points="56,352 44,346.4 44,357.6 " fill="black" transform="rotate(180,48,352)"/>
              <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="292">Owner</text>
                <text x="436" y="292">MASA</text>
                <text x="240" y="308">Registrar</text>
                <text x="60" y="340">4.</text>
                <text x="120" y="340">Provisional</text>
                <text x="184" y="340">TLS</text>
                <text x="60" y="388">5.</text>
                <text x="104" y="388">Voucher</text>
                <text x="168" y="388">Request</text>
                <text x="244" y="404">6.</text>
                <text x="288" y="404">Voucher</text>
                <text x="352" y="404">Request</text>
                <text x="244" y="452">7.</text>
                <text x="288" y="452">Voucher</text>
                <text x="356" y="452">Response</text>
                <text x="60" y="484">8.</text>
                <text x="104" y="484">Voucher</text>
                <text x="172" y="484">Response</text>
                <text x="60" y="532">9.</text>
                <text x="100" y="532">Verify</text>
                <text x="144" y="532">TLS</text>
                <text x="64" y="580">10.</text>
                <text x="100" y="580">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 enrollment 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.</t>
        <t>In step 2, the Pledge sends a voucher request to the Cloud Registrar/MASA.</t>
        <t>In step 3, the the Cloud Registrar/MASA replies to the Pledge with an <xref target="RFC8366bis"/> format voucher 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 IPv4 <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 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>In step 6, the Pledge sends an EST Enroll request with the CSR.</t>
        <t>In step 7, the EST server returns the requested certificate. The Pledge must verify that the issued certificate 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 dependent 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 its 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="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="multiplehttpredirects">
        <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 <xref target="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 will be 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 at this stage.
The determination needs to be made based upon whether or not the Pledge is able to validate the certificate for the new server.
If the pledge can not validate, then the connection is considered a provisional connection.</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, Toerless Eckert, 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="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="February" year="2025"/>
            <abstract>
              <t>   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.

   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.  As a result
   of some of the implementation challenges, it came to light that the
   particular way of that RFC7030 (EST) says to use the CSR attributes
   was not universally agreed upon.

   This document therefore also provides a new straightforward approach:
   using a template for CSR contents that may be partially filled in by
   the server.  This also allows an EST server to specify a subject
   Distinguished Name (DN).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-rfc7030-csrattrs-16"/>
        </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>
      </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="2" month="January" year="2025"/>
            <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-05"/>
        </reference>
        <reference anchor="WPS" target="https://www.wi-fi.org/discover-wi-fi/wi-fi-protected-setup">
          <front>
            <title>Wi-Fi Protected Setup (WPS)</title>
            <author>
              <organization>Wi-Fi Alliance</organization>
            </author>
            <date year="2025" month="January"/>
          </front>
        </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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
SY8+MQpcfFOkM3wTxCBqu+Q413QzzRquWIe3ZYK7q6kOPHJin77TX4VCEdwF
RZVpdU39k4ppSudPtNxUg/U3NRdLixbCHzqNEQkOr4UkCZGgHN3XxTBgQucS
+a68/NBvRSa+13wbreGi1OBXrgRU0y5r7a7EdVSFOiE9g1MyHAq4hZNAtqJe
Dz30A2lLh/HVWW0Bca+KaBJPr5WdOzPssBmTmaG6m4uyIz2+KHGPogH6qzVg
ZWbL67yPQ/1PL8d7bJsd77ZNyJSvJxHCWbpMa7V+1UXtrUpGQ6bwA9K7YmEt
rkkRoSvZPnhiid6rnMvxOklWKLkCPIR1U+hexafAtBKXGNeyFg0g0IrNxd/w
oLRVhV8S2aqldphYTwkTpO0DiR8YLnXr2mhQ9WLyoPzYOFnxbgYShyeXDdPy
UwNz/FH1Rb3VodTkPgiJac2FygOq3/ImouCrg7WnGnc4Ul3R4oDYw2YlNqLq
ZHXFPbNogWwSR8RBbqLMw0qhwvka/MTFfP4T85P/5wzli41BXZqJ0W0621O1
yYi0D3SvM75MHYnCY216xV+P9zrFfmvc7jDJtIUR3Jl3SrHgS4iGG7XI1kAv
ri2oyBV1ptE4EU7zDtjOHHa9s7khLcWjvQWX9CONBWXtiAs4kLc9SOHkot01
c8jMsJ052heC7aI0Bz9TNza1ZSWae47qhS8HxjRi6+lVSVw+1viewrNkGZHE
5UfWvB7fl6zbKksrltdK67dNsqRdVTbOA8rfTO+1FL+7phiXPCP26NfCxnUd
TBMcMXyv0BKorbw6cVVxpFrqmy/6+i5PLn3yta1G4UuvPPJrU3fl8+Cz//WR
X9uSKz9v5U+Z1ixAvtsbR+8lhmjUjiHq/a5RS+fBP7/+snIqfp3741b4z2O+
e+Iyf/46X4xJrVYvxkEkiaOxjZ1vf/dUeI5+5jr7vu4vdfWISluffZGrxuPP
rq5O78xBFaLmx+Hif96yX45bEuy9gLzvhH798Hc9Dx/+7lUXxj/8XQ9aR6/7
LtD96+xFwPtvypfD5Ru7TrEKPuK7/guk333bNfAXnvvoP/Hc38A6OR7ZUOB/
Qvzc2x1HST0ddz38EoyhglAkwqhKQkpKxTaZGjTqPZEGewJQYuFkrLdJ8ZVe
57mEqqAjkiqIardLCSgOAyysw6DR7htNXLS6/cB+1aez9ka+dukn94WWuACX
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

-->

</rfc>
