<?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-12" 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-12"/>
    <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="January" day="21"/>
    <abstract>
      <?line 51?>

<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 57?>

<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,152" 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 pre-loaded trust anchors that are used to verify the identity of the Cloud Registrar when establishing the TLS connection.
The TLS connection can be verified using a public Web PKI trust anchor using <xref target="RFC9525"/> DNS-ID mechanisms or a pinned certification authority.
This is a local implementation decision.
Refer to <xref target="trust-anchors-for-cloud-registrar"/> for trust anchor security considerations.</t>
          <t>The Cloud Registrar MUST verify the identity of the Pledge by sending a TLS CertificateRequest message to the Pledge during TLS session establishment.
The Cloud Registrar MAY include a certificate_authorities field in the message to specify the set of allowed IDevID issuing CAs that Pledges may use when establishing connections with the Cloud Registrar.</t>
          <t>To protect itself against DoS attacks, the Cloud Registrar SHOULD reject TLS connections when it can determine during TLS authentication that it cannot support the Pledge, for example because the Pledge cannot provide an IDevID signed by a CA recognized/supported by the Cloud Registrar.</t>
        </section>
        <section anchor="pledge-sends-voucher-request-message">
          <name>Pledge Sends Voucher Request Message</name>
          <t>After the Pledge has established a mutually authenticated TLS connection with the Cloud Registrar, the Pledge generates a voucher request message as outlined in BRSKI section 5.2, and sends the voucher request message to the Cloud Registrar.</t>
        </section>
      </section>
      <section anchor="cloud-registrar-processes-voucher-request-message">
        <name>Cloud Registrar Processes Voucher Request Message</name>
        <t>The Cloud Registrar must determine Pledge ownership.
Prior to ownership determination, the Registrar checks the request for correctness and if it is unwilling or unable to handle the request, it MUST return a suitable 4xx or 5xx error response to the Pledge as defined by <xref target="BRSKI"/> and HTTP.
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="592" width="496" viewBox="0 0 496 592" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
              <path d="M 8,32 L 8,80" fill="none" stroke="black"/>
              <path d="M 40,88 L 40,576" fill="none" stroke="black"/>
              <path d="M 80,32 L 80,80" fill="none" stroke="black"/>
              <path d="M 192,256 L 192,304" fill="none" stroke="black"/>
              <path d="M 224,312 L 224,576" fill="none" stroke="black"/>
              <path d="M 288,256 L 288,304" fill="none" stroke="black"/>
              <path d="M 400,32 L 400,80" fill="none" stroke="black"/>
              <path d="M 400,256 L 400,304" fill="none" stroke="black"/>
              <path d="M 440,88 L 440,224" fill="none" stroke="black"/>
              <path d="M 440,312 L 440,576" fill="none" stroke="black"/>
              <path d="M 480,256 L 480,304" fill="none" stroke="black"/>
              <path d="M 488,32 L 488,80" fill="none" stroke="black"/>
              <path d="M 8,32 L 80,32" fill="none" stroke="black"/>
              <path d="M 400,32 L 488,32" fill="none" stroke="black"/>
              <path d="M 8,80 L 80,80" fill="none" stroke="black"/>
              <path d="M 400,80 L 488,80" fill="none" stroke="black"/>
              <path d="M 48,128 L 432,128" fill="none" stroke="black"/>
              <path d="M 48,176 L 432,176" fill="none" stroke="black"/>
              <path d="M 48,224 L 432,224" fill="none" stroke="black"/>
              <path d="M 192,256 L 288,256" fill="none" stroke="black"/>
              <path d="M 400,256 L 480,256" fill="none" stroke="black"/>
              <path d="M 192,304 L 288,304" fill="none" stroke="black"/>
              <path d="M 400,304 L 480,304" fill="none" stroke="black"/>
              <path d="M 48,336 L 216,336" fill="none" stroke="black"/>
              <path d="M 48,384 L 216,384" fill="none" stroke="black"/>
              <path d="M 232,400 L 432,400" fill="none" stroke="black"/>
              <path d="M 232,448 L 432,448" fill="none" stroke="black"/>
              <path d="M 48,480 L 216,480" fill="none" stroke="black"/>
              <path d="M 48,528 L 216,528" fill="none" stroke="black"/>
              <path d="M 48,576 L 216,576" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="440,400 428,394.4 428,405.6 " fill="black" transform="rotate(0,432,400)"/>
              <polygon class="arrowhead" points="440,176 428,170.4 428,181.6 " fill="black" transform="rotate(0,432,176)"/>
              <polygon class="arrowhead" points="440,128 428,122.4 428,133.6 " fill="black" transform="rotate(0,432,128)"/>
              <polygon class="arrowhead" points="240,448 228,442.4 228,453.6 " fill="black" transform="rotate(180,232,448)"/>
              <polygon class="arrowhead" points="224,576 212,570.4 212,581.6 " fill="black" transform="rotate(0,216,576)"/>
              <polygon class="arrowhead" points="224,528 212,522.4 212,533.6 " fill="black" transform="rotate(0,216,528)"/>
              <polygon class="arrowhead" points="224,384 212,378.4 212,389.6 " fill="black" transform="rotate(0,216,384)"/>
              <polygon class="arrowhead" points="224,336 212,330.4 212,341.6 " fill="black" transform="rotate(0,216,336)"/>
              <polygon class="arrowhead" points="56,528 44,522.4 44,533.6 " fill="black" transform="rotate(180,48,528)"/>
              <polygon class="arrowhead" points="56,480 44,474.4 44,485.6 " fill="black" transform="rotate(180,48,480)"/>
              <polygon class="arrowhead" points="56,336 44,330.4 44,341.6 " fill="black" transform="rotate(180,48,336)"/>
              <polygon class="arrowhead" points="56,224 44,218.4 44,229.6 " fill="black" transform="rotate(180,48,224)"/>
              <polygon class="arrowhead" points="56,128 44,122.4 44,133.6 " fill="black" transform="rotate(180,48,128)"/>
              <g class="text">
                <text x="44" y="52">Pledge</text>
                <text x="432" y="52">Cloud</text>
                <text x="440" y="68">Registrar</text>
                <text x="60" y="116">1.</text>
                <text x="164" y="116">Mutually-authenticated</text>
                <text x="272" y="116">TLS</text>
                <text x="60" y="164">2.</text>
                <text x="104" y="164">Voucher</text>
                <text x="168" y="164">Request</text>
                <text x="60" y="212">3.</text>
                <text x="88" y="212">307</text>
                <text x="144" y="212">Location:</text>
                <text x="268" y="212">owner-ra.example.com</text>
                <text x="224" y="276">Owner</text>
                <text x="436" y="276">MASA</text>
                <text x="240" y="292">Registrar</text>
                <text x="60" y="324">4.</text>
                <text x="120" y="324">Provisional</text>
                <text x="184" y="324">TLS</text>
                <text x="60" y="372">5.</text>
                <text x="104" y="372">Voucher</text>
                <text x="168" y="372">Request</text>
                <text x="244" y="388">6.</text>
                <text x="288" y="388">Voucher</text>
                <text x="352" y="388">Request</text>
                <text x="244" y="436">7.</text>
                <text x="288" y="436">Voucher</text>
                <text x="356" y="436">Response</text>
                <text x="60" y="468">8.</text>
                <text x="104" y="468">Voucher</text>
                <text x="172" y="468">Response</text>
                <text x="60" y="516">9.</text>
                <text x="100" y="516">Verify</text>
                <text x="144" y="516">TLS</text>
                <text x="64" y="564">10.</text>
                <text x="100" y="564">etc.</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
+--------+                                       +----------+
| Pledge |                                       | Cloud    |
|        |                                       |Registrar |
+--------+                                       +----------+
    |                                                 |
    | 1. Mutually-authenticated TLS                   |
    |<----------------------------------------------->|
    |                                                 |
    | 2. Voucher Request                              |
    |------------------------------------------------>|
    |                                                 |
    | 3. 307 Location: owner-ra.example.com           |
    |<------------------------------------------------|
    |
    |                  +-----------+             +---------+
    |                  | Owner     |             |  MASA   |
    |                  | Registrar |             |         |
    |                  +-----------+             +---------+
    | 4. Provisional TLS   |                          |
    |<-------------------->|                          |
    |                      |                          |
    | 5. Voucher Request   |                          |
    |--------------------->| 6. Voucher Request       |
    |                      |------------------------->|
    |                      |                          |
    |                      | 7. Voucher Response      |
    |                      |<-------------------------|
    | 8. Voucher Response  |                          |
    |<---------------------|                          |
    |                      |                          |
    | 9. Verify TLS        |                          |
    |<-------------------->|                          |
    |                      |                          |
    | 10. etc.             |                          |
    |--------------------->|                          |
]]></artwork>
        </artset>
        <t>The process starts, in step 1, when the Pledge establishes a Mutual TLS channel with the Cloud Registrar using artifacts created during the manufacturing process of the Pledge.</t>
        <t>In step 2, the Pledge sends a voucher request to the Cloud Registrar.</t>
        <t>The Cloud Registrar determines Pledge ownership look up as outlined in <xref target="PledgeOwnershipLookup"/>, and determines the Owner Registrar domain.
In step 3, the Cloud Registrar redirects the Pledge to the Owner Registrar domain.</t>
        <t>Steps 4 and onwards follow the standard BRSKI flow.
The Pledge establishes a Provisional TLS connection with the Owner Registrar, and sends a voucher request to the Owner Registrar.
The Registrar forwards the voucher request to the MASA.
Assuming the MASA issues a voucher, then the Pledge verifies the TLS connection with the Registrar using the pinned-domain-cert from the voucher and completes the BRSKI flow.</t>
      </section>
      <section anchor="voucher2EST">
        <name>Bootstrap via Cloud Registrar and Owner EST Service</name>
        <t>This flow illustrates the "Bootstrap via Cloud Registrar and Owner EST Service" use case.
A Pledge is bootstrapping in a location with no local domain Registrar.
The Cloud Registrar is instructing the Pledge to connect directly to an EST server for 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="RFC7030">
          <front>
            <title>Enrollment over Secure Transport</title>
            <author fullname="M. Pritikin" initials="M." role="editor" surname="Pritikin"/>
            <author fullname="P. Yee" initials="P." role="editor" surname="Yee"/>
            <author fullname="D. Harkins" initials="D." role="editor" surname="Harkins"/>
            <date month="October" year="2013"/>
            <abstract>
              <t>This document profiles certificate enrollment for clients using Certificate Management over CMS (CMC) messages over a secure transport. This profile, called Enrollment over Secure Transport (EST), describes a simple, yet functional, certificate management protocol targeting Public Key Infrastructure (PKI) clients that need to acquire client certificates and associated Certification Authority (CA) certificates. It also supports client-generated public/private key pairs as well as key pairs generated by the CA.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7030"/>
          <seriesInfo name="DOI" value="10.17487/RFC7030"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="I-D.ietf-lamps-rfc7030-csrattrs">
          <front>
            <title>Clarification and enhancement of RFC7030 CSR Attributes definition</title>
            <author fullname="Michael Richardson" initials="M." surname="Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <author fullname="Owen Friel" initials="O." surname="Friel">
              <organization>Cisco</organization>
            </author>
            <author fullname="David von Oheimb" initials="D." surname="von Oheimb">
              <organization>Siemens</organization>
            </author>
            <author fullname="Dan Harkins" initials="D." surname="Harkins">
              <organization>The Industrial Lounge</organization>
            </author>
            <date day="8" month="January" year="2025"/>
            <abstract>
              <t>   The Enrollment over Secure Transport (EST, RFC7030) is ambiguous in
   its specification of the CSR Attributes Response.  This has resulted
   in implementation challenges and implementor confusion.

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

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

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-rfc7030-csrattrs-15"/>
        </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>WiFi 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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
e3fXHTskCl/Q36dP7Bu7Pb14Wp3n+4YcXMCAVfRSms3extibS4zyHdZTlKYD
/So86ccYGTo7mTxwLp0l+INKprzwruAHGQI5IPbXADlbEUkqaTXjCprGtPus
C25XTQz2RmrRrkboPm+ph2KAcI0gFkkA6KeoQ0ZvBoXIllD/RTQhW6zt8brQ
k5SgjkgZ1/+g5X5UHdcVleLgQqPrkinX69drV+/aNj26R/nCR39xhSvQgP9/
UIOe/nb03Iuj/61EPbzO/0JKVFvEu/P2pYP5X2f5T633vlSJ+uJ1Nn8sSj3l
PdCZON23ZzH977k6oU98z9UOfdJ7X7q//hWG74FKd9i6Pv9okfmeH/veq3gc
PRfe+Bcg2fUaZLhTPA4J22+/97Pu0emH6LvDk3cfz4+jV5O+qX+h/YGOiYjF
TYfdlw++17OJh+fr/vLh90DHtFXKHvveP1wVBJX1OcsPclqPe+8L4PkPVbGe
E/P9p9KznrNw3tRvehffCHe2+UJxMw42Ymd0X3+tmgIMONHBCnzS468ji8Ss
8+Ww/0T6FAWc5Pyw7YhxNXE6p7wM3LxkoNcSx9Rm2IUbiY1dzPcciYAlNlUv
ddkjElWF5Qaoe4QrkEtpUSyma8p/qwGEKQeQpVidJjMB49QpiQolclTp3pu9
byWrkcoKfMxTLE30jqY41Mqb8vDLvTcvNI5IsbMVnNehWKXSRS+ZcVaYzS4X
p2rVlbdv9AWfdXHZ/YVz+DeS8XuWxLXMmmt3il+r8t5vbBN4PucX4xfqhtRS
w9z11AVx94DCxSFS6aN8NjrmHWwfH+8E1LdVT4+QgRABi9Bi6BoWo9Kzp3CD
cAUGUAvp4ZbNR3qlju1sHBafNpAtx6eCrj6Sf6TV7qSNc4mFDlz2iH1BG9IF
U2MV6GDctmavkZyrVbbpKpcQ+Inl5th5bYNVubPN4+6+zrIH8+VtXDWq8HRe
Mx/gQcnKGP2dbSKTNW/R0wUTcGA6xXfym77qBgVVphTQE4LP7pMbAjZOyfUf
51A8SZ0PExpcuWEK49Hi6Vz5KK19TzpT85cZEdN+UwVRqwFrcZHDMBtOB+25
bZ5mV9GrcSwBR5N2vbqVVoxChFIa0cmDhA+q2IjR5pw8qmXuTHywNQ5QpYuk
m1MHxgFlMq+7GGtuRb0gzUcAZwb4plX+06bNyMvhiXOTLlvU2ZFMMY5I71GL
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

-->

</rfc>
