rfc9641.original.xml | rfc9641.xml | |||
---|---|---|---|---|
<?xml version='1.0' encoding='utf-8'?> | <?xml version='1.0' encoding='UTF-8'?> | |||
<!DOCTYPE rfc [ | <!DOCTYPE rfc [ | |||
<!ENTITY nbsp " "> | <!ENTITY nbsp " "> | |||
<!ENTITY zwsp "​"> | <!ENTITY zwsp "​"> | |||
<!ENTITY nbhy "‑"> | <!ENTITY nbhy "‑"> | |||
<!ENTITY wj "⁠"> | <!ENTITY wj "⁠"> | |||
]> | ]> | |||
<?rfc toc="yes"?> | ||||
<?rfc symrefs="yes"?> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" consensus="true" | |||
<?rfc sortrefs="yes" ?> | submissionType="IETF" ipr="trust200902" docName="draft-ietf-netconf-trust-anchor | |||
<?rfc compact="yes"?> | s-28" number="9641" updates="" obsoletes="" tocInclude="true" symRefs="true" sor | |||
<?rfc subcompact="no"?> | tRefs="true" version="3" xml:lang="en"> | |||
<?rfc linkmailto="no" ?> | ||||
<?rfc editing="no" ?> | ||||
<?rfc comments="yes" ?> | ||||
<?rfc inline="yes"?> | ||||
<?rfc rfcedstyle="yes"?> | ||||
<?rfc-ext allow-markup-in-artwork="yes" ?> | ||||
<?rfc-ext include-index="no" ?> | ||||
<!--<?rfc strict="no"?> --> | ||||
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" consensus="true" | ||||
submissionType="IETF" ipr="trust200902" docName="draft-ietf-netconf-trust-anchor | ||||
s-28" tocInclude="true" symRefs="true" sortRefs="true" version="3"> | ||||
<!-- xml2rfc v2v3 conversion 3.17.4 --> | ||||
<front> | <front> | |||
<title>A YANG Data Model for a Truststore</title> | <title abbrev="A YANG Data Model for a Truststore">A YANG Data Model for a | |||
<seriesInfo name="Internet-Draft" value="draft-ietf-netconf-trust-anchors-28 | Truststore</title> | |||
"/> | <seriesInfo name="RFC" value="9641"/> | |||
<author initials="K." surname="Watsen" fullname="Kent Watsen"> | <author initials="K." surname="Watsen" fullname="Kent Watsen"> | |||
<organization>Watsen Networks</organization> | <organization>Watsen Networks</organization> | |||
<address> | <address> | |||
<email>kent+ietf@watsen.net</email> | <email>kent+ietf@watsen.net</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<date/> | <date year="2024" month="October"/> | |||
<area>Operations</area> | <area>OPS</area> | |||
<workgroup>NETCONF Working Group</workgroup> | <workgroup>netconf</workgroup> | |||
<keyword>IETF</keyword> | ||||
<abstract> | <abstract> | |||
<t>This document presents a YANG module for configuring | <t>This document presents a YANG module for configuring | |||
bags of certificates and bags of public keys that can be | bags of certificates and bags of public keys that can be | |||
referenced by other data models for trust. Notifications | referenced by other data models for trust. Notifications | |||
are sent when certificates are about to expire.</t> | are sent when certificates are about to expire.</t> | |||
</abstract> | </abstract> | |||
<note> | ||||
<name>Editorial Note (To be removed by RFC Editor)</name> | ||||
<t>This draft contains placeholder values that need to be replaced | ||||
with finalized values at the time of publication. This note summarize | ||||
s | ||||
all of the substitutions that are needed. No other RFC Editor | ||||
instructions are specified elsewhere in this document.</t> | ||||
<t>Artwork in this document contains shorthand references to drafts in | ||||
progress. Please apply the following replacements: | ||||
</t> | ||||
<ul spacing="normal"> | ||||
<li> | ||||
<tt>AAAA</tt> --> the assigned RFC value for draft-ietf-netconf-cry | ||||
pto-types</li> | ||||
<li> | ||||
<tt>BBBB</tt> --> the assigned RFC value for this draft</li> | ||||
</ul> | ||||
<t>Artwork in this document contains placeholder values for the date | ||||
of publication of this draft. Please apply the following replacement: | ||||
</t> | ||||
<ul spacing="normal"> | ||||
<li> | ||||
<tt>2024-03-16</tt> --> the publication date of this draft</li> | ||||
</ul> | ||||
<t>The "Relation to other RFCs" section <xref target="collective-effort"/> | ||||
contains | ||||
the text "one or more YANG modules" and, later, "modules". This text | ||||
is sourced | ||||
from a file in a context where it is unknown how many modules a draft | ||||
defines. | ||||
The text is not wrong as is, but it may be improved by stating more di | ||||
rectly how | ||||
many modules are defined.</t> | ||||
<t>The "Relation to other RFCs" section <xref target="collective-effort"/> | ||||
contains | ||||
a self-reference to this draft, along with a corresponding reference i | ||||
n | ||||
the Appendix. Please replace the self-reference in this section with | ||||
"This RFC" | ||||
(or similar) and remove the self-reference in the "Normative/Informati | ||||
ve References" | ||||
section, whichever it is in.</t> | ||||
<t>Tree-diagrams in this draft may use the '\' line-folding mode defined i | ||||
n RFC 8792. | ||||
However, nicer-to-the-eye is when the '\\' line-folding mode is used. | ||||
The AD suggested | ||||
suggested putting a request here for the RFC Editor to help convert "u | ||||
gly" '\' folded | ||||
examples to use the '\\' folding mode. "Help convert" may be interpre | ||||
ted as, identify | ||||
what looks ugly and ask the authors to make the adjustment.</t> | ||||
<t>The following Appendix section is to be removed prior to publication: | ||||
</t> | ||||
<ul spacing="normal"> | ||||
<li> | ||||
<xref target="change-log"/>. Change Log</li> | ||||
</ul> | ||||
</note> | ||||
</front> | </front> | |||
<middle> | <middle> | |||
<section> | <section> | |||
<name>Introduction</name> | <name>Introduction</name> | |||
<t>This document presents a YANG 1.1 <xref target="RFC7950"/> module havin g | <t>This document presents a YANG 1.1 <xref target="RFC7950"/> module that has | |||
the following characteristics: | the following characteristics: | |||
</t> | </t> | |||
<ul empty="true" spacing="normal"> | <ul spacing="normal"> | |||
<li>Provide a central truststore for storing raw public keys and/or cert ificates.</li> | <li>Provide a central truststore for storing raw public keys and/or cert ificates.</li> | |||
<li>Provide support for storing named bags of raw public keys and/or nam ed bags | <li>Provide support for storing named bags of raw public keys and/or nam ed bags | |||
of certificates.</li> | of certificates.</li> | |||
<li>Provide types that can be used to reference raw public keys or certi ficates | <li>Provide types that can be used to reference raw public keys or certi ficates | |||
stored in the central truststore.</li> | stored in the central truststore.</li> | |||
<li>Provide groupings that enable raw public keys and certificates to be | <li>Provide groupings that enable raw public keys and certificates to be | |||
configured inline or as references to truststore instances.</li> | configured inline or as references to truststore instances.</li> | |||
<li>Enable the truststore to be instantiated in other data models, in ad dition | <li>Enable the truststore to be instantiated in other data models, in ad dition | |||
to or in lieu of the central truststore instance.</li> | to or in lieu of the central truststore instance.</li> | |||
</ul> | </ul> | |||
<section anchor="collective-effort"> | <section anchor="collective-effort"> | |||
<name>Relation to other RFCs</name> | <name>Relation to Other RFCs</name> | |||
<t>This document presents one or more YANG modules <xref target="RFC7950 | <t>This document presents a YANG module <xref target="RFC7950"/> | |||
"/> | that is part of a collection of RFCs that work together | |||
that are part of a collection of RFCs that work together | to ultimately support the configuration of both the clients | |||
to, ultimately, support the configuration of both the clients | and servers of both the Network Configuration Protocol (NETCONF) <xr | |||
and servers of both the NETCONF <xref target="RFC6241"/> and | ef target="RFC6241"/> and | |||
RESTCONF <xref target="RFC8040"/> protocols.</t> | RESTCONF <xref target="RFC8040"/>.</t> | |||
<t> The dependency relationship between the primary YANG groupings | <t> The dependency relationship between the primary YANG groupings | |||
defined in the various RFCs is presented in the below diagram. | defined in the various RFCs is presented in the below diagram. | |||
In some cases, a draft may define secondary groupings that | In some cases, a document may define secondary groupings that | |||
introduce dependencies not illustrated in the diagram. | introduce dependencies not illustrated in the diagram. | |||
The labels in the diagram are a shorthand name for the defining | The labels in the diagram are shorthand names for the defining | |||
RFC. The citation reference for shorthand name is provided below | RFCs. The citation references for shorthand names are provided belo | |||
w | ||||
the diagram.</t> | the diagram.</t> | |||
<t>Please note that the arrows in the diagram point from referencer | <t>Please note that the arrows in the diagram point from referencer | |||
to referenced. For example, the "crypto-types" RFC does not | to referenced. For example, the "crypto-types" RFC does not | |||
have any dependencies, whilst the "keystore" RFC depends on the | have any dependencies, whilst the "keystore" RFC depends on the | |||
"crypto-types" RFC.</t> | "crypto-types" RFC.</t> | |||
<artwork><![CDATA[ | <artwork><![CDATA[ | |||
crypto-types | crypto-types | |||
^ ^ | ^ ^ | |||
/ \ | / \ | |||
/ \ | / \ | |||
skipping to change at line 146 ¶ | skipping to change at line 93 ¶ | |||
| | | +-----+ +---------+ | | | | | +-----+ +---------+ | | |||
| | | | | | | | | | | | | | |||
| +-----------|--------|--------------+ | | | | +-----------|--------|--------------+ | | | |||
| | | | | | | | | | | | | | |||
+-----------+ | | | | | | +-----------+ | | | | | | |||
| | | | | | | | | | | | | | |||
| | | | | | | | | | | | | | |||
netconf-client-server restconf-client-server | netconf-client-server restconf-client-server | |||
]]></artwork> | ]]></artwork> | |||
<!-- RFC Editor: is there anyway to flush-left the table in PDF/HTML vie | <table align="left"> | |||
ws? --> | ||||
<table> | ||||
<name>Label in Diagram to RFC Mapping</name> | <name>Label in Diagram to RFC Mapping</name> | |||
<tbody> | <tbody> | |||
<tr> | <tr> | |||
<th>Label in Diagram</th> | <th>Label in Diagram</th> | |||
<th>Originating RFC</th> | <th>Reference</th> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>crypto-types</td> | <td>crypto-types</td> | |||
<td> | <td> | |||
<xref target="I-D.ietf-netconf-crypto-types"/></td> | <xref target="RFC9640"/></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>truststore</td> | <td>truststore</td> | |||
<td> | <td> | |||
<xref target="I-D.ietf-netconf-trust-anchors"/></td> | RFC 9641</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>keystore</td> | <td>keystore</td> | |||
<td> | <td> | |||
<xref target="I-D.ietf-netconf-keystore"/></td> | <xref target="RFC9642"/></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>tcp-client-server</td> | <td>tcp-client-server</td> | |||
<td> | <td> | |||
<xref target="I-D.ietf-netconf-tcp-client-server"/></td> | <xref target="RFC9643"/></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>ssh-client-server</td> | <td>ssh-client-server</td> | |||
<td> | <td> | |||
<xref target="I-D.ietf-netconf-ssh-client-server"/></td> | <xref target="RFC9644"/></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>tls-client-server</td> | <td>tls-client-server</td> | |||
<td> | <td> | |||
<xref target="I-D.ietf-netconf-tls-client-server"/></td> | <xref target="RFC9645"/></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>http-client-server</td> | <td>http-client-server</td> | |||
<td> | <td> | |||
<xref target="I-D.ietf-netconf-http-client-server"/></td> | <xref target="I-D.ietf-netconf-http-client-server"/></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>netconf-client-server</td> | <td>netconf-client-server</td> | |||
<td> | <td> | |||
<xref target="I-D.ietf-netconf-netconf-client-server"/></td> | <xref target="I-D.ietf-netconf-netconf-client-server"/></td> | |||
skipping to change at line 204 ¶ | skipping to change at line 150 ¶ | |||
<tr> | <tr> | |||
<td>restconf-client-server</td> | <td>restconf-client-server</td> | |||
<td> | <td> | |||
<xref target="I-D.ietf-netconf-restconf-client-server"/></td> | <xref target="I-D.ietf-netconf-restconf-client-server"/></td> | |||
</tr> | </tr> | |||
</tbody> | </tbody> | |||
</table> | </table> | |||
</section> | </section> | |||
<section> | <section> | |||
<name>Specification Language</name> | <name>Specification Language</name> | |||
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL | <t> | |||
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", | The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQU | |||
"MAY", and "OPTIONAL" in this document are to be interpreted as | IRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | |||
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/ | NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14> | |||
> | RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | |||
when, and only when, they appear in all capitals, as shown here.</t> | "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" 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. | ||||
</t> | ||||
</section> | </section> | |||
<section> | <section> | |||
<name>Adherence to the NMDA</name> | <name>Adherence to the NMDA</name> | |||
<t>This document is compliant with the Network Management Datastore Arch itecture | <t>This document is compliant with the Network Management Datastore Arch itecture | |||
(NMDA) <xref target="RFC8342"/>. For instance, trust anchors instal led | (NMDA) <xref target="RFC8342"/>. For instance, trust anchors instal led | |||
during manufacturing (e.g., for trusted well-known services), are ex pected | during manufacturing (e.g., for trusted, well-known services) are ex pected | |||
to appear in <operational> (see <xref target="built-ins"/>).</ t> | to appear in <operational> (see <xref target="built-ins"/>).</ t> | |||
</section> | </section> | |||
<section> | <section> | |||
<name>Conventions</name> | <name>Conventions</name> | |||
<t>Various examples in this document use "BASE64VALUE=" as a | <t>Various examples in this document use "BASE64VALUE=" as a | |||
placeholder value for binary data that has been base64 | placeholder value for binary data that has been base64 | |||
encoded (see Section 4 in <xref target="RFC4648"/>). This | encoded (see <xref target="RFC7950" sectionFormat="of" section="9.8" | |||
placeholder value is used because real base64 encoded structures | />). This | |||
placeholder value is used because real base64-encoded structures | ||||
are often many lines long and hence distracting to the example | are often many lines long and hence distracting to the example | |||
being presented.</t> | being presented.</t> | |||
<t>This document uses the adjective "central" to the word "truststore" | <t> Various examples in this document use the XML | |||
to refer to the top-level instance of the "truststore-grouping", whe | <xref target="W3C.REC-xml-20081126"/> encoding. Other encodings, such as JSON | |||
n | <xref target="RFC8259"/>, | |||
could alternatively be used.</t> | ||||
<t>Various examples in this document contain long lines that may be folde | ||||
d, | ||||
as described in <xref target="RFC8792"/>.</t> | ||||
<t>This document uses the adjective "central" with the word "truststore" | ||||
to refer to the top-level instance of the "truststore-grouping" grou | ||||
ping when | ||||
the "central-truststore-supported" feature is enabled. Please be | the "central-truststore-supported" feature is enabled. Please be | |||
aware that consuming YANG modules MAY instantiate the "truststore-gr ouping" | aware that consuming YANG modules <bcp14>MAY</bcp14> instantiate the "truststore-grouping" grouping | |||
in other locations. All such other instances are not the "central" | in other locations. All such other instances are not the "central" | |||
instance.</t> | instance.</t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section> | <section> | |||
<name>The "ietf-truststore" Module</name> | <name>The "ietf-truststore" Module</name> | |||
<t>This section defines a YANG 1.1 <xref target="RFC7950"/> module called | <t>This section defines a YANG 1.1 <xref target="RFC7950"/> module called | |||
"ietf-truststore". A high-level overview of the module is provided in | "ietf-truststore". A high-level overview of the module is provided in | |||
<xref target="truststore-verview"/>. Examples illustrating the module' s use | <xref target="truststore-verview"/>. Examples illustrating the module' s use | |||
are provided in <xref target="truststore-examples">Examples</xref>. Th e YANG | are provided in <xref target="truststore-examples"/> ("Example Usage") . The YANG | |||
module itself is defined in <xref target="truststore-yang-module"/>.</ t> | module itself is defined in <xref target="truststore-yang-module"/>.</ t> | |||
<section anchor="truststore-verview"> | <section anchor="truststore-verview"> | |||
<name>Data Model Overview</name> | <name>Data Model Overview</name> | |||
<t>This section provides an overview of the "ietf-truststore" module | <t>This section provides an overview of the "ietf-truststore" module | |||
in terms of its features, typedefs, groupings, and protocol-accessib le | in terms of its features, typedefs, groupings, and protocol-accessib le | |||
nodes.</t> | nodes.</t> | |||
<section anchor="features" toc="exclude"> | <section anchor="features" toc="exclude"> | |||
<name>Features</name> | <name>Features</name> | |||
<t>The following diagram lists all the "feature" statements | <t>The following diagram lists all the "feature" statements | |||
defined in the "ietf-truststore" module:</t> | defined in the "ietf-truststore" module:</t> | |||
<artwork><![CDATA[ | <sourcecode type="yangtree"><![CDATA[ | |||
Features: | Features: | |||
+-- central-truststore-supported | +-- central-truststore-supported | |||
+-- inline-definitions-supported | +-- inline-definitions-supported | |||
+-- certificates | +-- certificates | |||
+-- public-keys | +-- public-keys | |||
]]></artwork> | ]]></sourcecode> | |||
<!--<aside>--> | ||||
<t>The diagram above uses syntax that is similar to but not | <t>The diagram above uses syntax that is similar to but not | |||
defined in <xref target="RFC8340"/>.</t> | defined in <xref target="RFC8340"/>.</t> | |||
<!--</aside>--> | ||||
</section> | </section> | |||
<section anchor="typedefs" toc="exclude"> | <section anchor="typedefs" toc="exclude"> | |||
<name>Typedefs</name> | <name>Typedefs</name> | |||
<t>The following diagram lists the "typedef" statements defined in | <t>The following diagram lists the "typedef" statements defined in | |||
the "ietf-truststore" module:</t> | the "ietf-truststore" module:</t> | |||
<artwork><![CDATA[ | <sourcecode type="yangtree"><![CDATA[ | |||
Typedefs: | Typedefs: | |||
leafref | leafref | |||
+-- central-certificate-bag-ref | +-- central-certificate-bag-ref | |||
+-- central-certificate-ref | +-- central-certificate-ref | |||
+-- central-public-key-bag-ref | +-- central-public-key-bag-ref | |||
+-- central-public-key-ref | +-- central-public-key-ref | |||
]]></artwork> | ]]></sourcecode> | |||
<!--<aside>--> | ||||
<t>The diagram above uses syntax that is similar to but not | <t>The diagram above uses syntax that is similar to but not | |||
defined in <xref target="RFC8340"/>.</t> | defined in <xref target="RFC8340"/>.</t> | |||
<!--</aside>--> | ||||
<t>Comments:</t> | <t>Comments:</t> | |||
<ul> | <ul> | |||
<li>All the typedefs defined in the "ietf-truststore" module | <li>All the typedefs defined in the "ietf-truststore" module | |||
extend the base "leafref" type defined in <xref target="RFC7950" />.</li> | extend the base "leafref" type defined in <xref target="RFC7950" />.</li> | |||
<li>The leafrefs refer to certificates, public keys, and bags | <li>The leafrefs refer to certificates, public keys, and bags | |||
in the central truststore, when this module is implemented.</li> | in the central truststore when this module is implemented.</li> | |||
<li>These typedefs are provided as an aid to consuming | <li>These typedefs are provided to aid consuming | |||
modules that import the "ietf-truststore" module.</li> | modules that import the "ietf-truststore" module.</li> | |||
</ul> | </ul> | |||
</section> | </section> | |||
<section toc="exclude"> | <section toc="exclude"> | |||
<name>Groupings</name> | <name>Groupings</name> | |||
<t>The "ietf-truststore" module defines the following "grouping" state ments:</t> | <t>The "ietf-truststore" module defines the following "grouping" state ments:</t> | |||
<ul spacing="compact"> | <ul spacing="normal"> | |||
<li>central-certificate-ref-grouping</li> | <li>central-certificate-ref-grouping</li> | |||
<li>central-public-key-ref-grouping</li> | <li>central-public-key-ref-grouping</li> | |||
<li>inline-or-truststore-certs-grouping</li> | <li>inline-or-truststore-certs-grouping</li> | |||
<li>inline-or-truststore-public-keys-grouping</li> | <li>inline-or-truststore-public-keys-grouping</li> | |||
<li>truststore-grouping</li> | <li>truststore-grouping</li> | |||
</ul> | </ul> | |||
<t>Each of these groupings are presented in the following subsections. </t> | <t>Each of these groupings are presented in the following subsections. </t> | |||
<section anchor="central-certificate-ref-grouping"> | <section anchor="central-certificate-ref-grouping"> | |||
<name>The "central-certificate-ref-grouping" Grouping</name> | <name>The "central-certificate-ref-grouping" Grouping</name> | |||
<t>The following tree diagram <xref target="RFC8340"/> illustrates t he | <t>The following tree diagram <xref target="RFC8340"/> illustrates t he | |||
"central-certificate-ref-grouping" grouping:</t> | "central-certificate-ref-grouping" grouping:</t> | |||
<artwork><![CDATA[ | <sourcecode type="yangtree"><![CDATA[ | |||
grouping central-certificate-ref-grouping: | grouping central-certificate-ref-grouping: | |||
+-- certificate-bag? ts:central-certificate-bag-ref | +-- certificate-bag? ts:central-certificate-bag-ref | |||
| {central-truststore-supported,certificates}? | | {central-truststore-supported,certificates}? | |||
+-- certificate? ts:central-certificate-ref | +-- certificate? ts:central-certificate-ref | |||
{central-truststore-supported,certificates}? | {central-truststore-supported,certificates}? | |||
]]></artwork> | ]]></sourcecode> | |||
<t>Comments:</t> | <t>Comments:</t> | |||
<ul> | <ul> | |||
<li>The "central-certificate-ref-grouping" grouping is provided | <li>The "central-certificate-ref-grouping" grouping is provided | |||
solely as convenience to consuming modules that wish to | solely as a convenience to consuming modules that wish to | |||
enable the configuration of a reference to a certificate | enable the configuration of a reference to a certificate | |||
in a certificate-bag in the truststore.</li> | in a certificate-bag in the truststore.</li> | |||
<li>The "certificate-bag" leaf uses the "central-certificate-bag-r ef" | <li>The "certificate-bag" leaf uses the "central-certificate-bag-r ef" | |||
typedef defined in <xref target="typedefs"/>.</li> | typedef defined in <xref target="typedefs"/>.</li> | |||
<li>The "certificate" leaf uses the "central-certificate-ref" | <li>The "certificate" leaf uses the "central-certificate-ref" | |||
typedef defined in <xref target="typedefs"/>.</li> | typedef defined in <xref target="typedefs"/>.</li> | |||
</ul> | </ul> | |||
</section> | </section> | |||
<section anchor="central-public-key-ref-grouping"> | <section anchor="central-public-key-ref-grouping"> | |||
<name>The "central-public-key-ref-grouping" Grouping</name> | <name>The "central-public-key-ref-grouping" Grouping</name> | |||
<t>The following tree diagram <xref target="RFC8340"/> illustrates t he | <t>The following tree diagram <xref target="RFC8340"/> illustrates t he | |||
"central-public-key-ref-grouping" grouping:</t> | "central-public-key-ref-grouping" grouping:</t> | |||
<artwork><![CDATA[ | <sourcecode type="yangtree"><![CDATA[ | |||
grouping central-public-key-ref-grouping: | grouping central-public-key-ref-grouping: | |||
+-- public-key-bag? ts:central-public-key-bag-ref | +-- public-key-bag? ts:central-public-key-bag-ref | |||
| {central-truststore-supported,public-keys}? | | {central-truststore-supported,public-keys}? | |||
+-- public-key? ts:central-public-key-ref | +-- public-key? ts:central-public-key-ref | |||
{central-truststore-supported,public-keys}? | {central-truststore-supported,public-keys}? | |||
]]></artwork> | ]]></sourcecode> | |||
<t>Comments:</t> | <t>Comments:</t> | |||
<ul> | <ul> | |||
<li>The "central-public-key-ref-grouping" grouping is provided | <li>The "central-public-key-ref-grouping" grouping is provided | |||
solely as convenience to consuming modules that wish to | solely as a convenience to consuming modules that wish to | |||
enable the configuration of a reference to a public-key | enable the configuration of a reference to a public-key | |||
in a public-key-bag in the truststore.</li> | in a public-key-bag in the truststore.</li> | |||
<li>The "public-key-bag" leaf uses the "public-key-bag-ref" | <li>The "public-key-bag" leaf uses the "central-public-key-bag-ref | |||
" | ||||
typedef defined in <xref target="typedefs"/>.</li> | typedef defined in <xref target="typedefs"/>.</li> | |||
<li>The "public-key" leaf uses the "public-key-ref" | <li>The "public-key" leaf uses the "central-public-key-ref" | |||
typedef defined in <xref target="typedefs"/>.</li> | typedef defined in <xref target="typedefs"/>.</li> | |||
</ul> | </ul> | |||
</section> | </section> | |||
<section anchor="inline-or-truststore-certs-grouping"> | <section anchor="inline-or-truststore-certs-grouping"> | |||
<name>The "inline-or-truststore-certs-grouping" Grouping</name> | <name>The "inline-or-truststore-certs-grouping" Grouping</name> | |||
<t>The following tree diagram <xref target="RFC8340"/> illustrates t he | <t>The following tree diagram <xref target="RFC8340"/> illustrates t he | |||
"inline-or-truststore-certs-grouping" grouping:</t> | "inline-or-truststore-certs-grouping" grouping:</t> | |||
<artwork><![CDATA[ | <sourcecode type="yangtree"><![CDATA[ | |||
grouping inline-or-truststore-certs-grouping: | grouping inline-or-truststore-certs-grouping: | |||
+-- (inline-or-truststore) | +-- (inline-or-truststore) | |||
+--:(inline) {inline-definitions-supported}? | +--:(inline) {inline-definitions-supported}? | |||
| +-- inline-definition | | +-- inline-definition | |||
| +-- certificate* [name] | | +-- certificate* [name] | |||
| +-- name? string | | +-- name string | |||
| +---u ct:trust-anchor-cert-grouping | | +---u ct:trust-anchor-cert-grouping | |||
+--:(central-truststore) | +--:(central-truststore) | |||
{central-truststore-supported,certificates}? | {central-truststore-supported,certificates}? | |||
+-- central-truststore-reference? | +-- central-truststore-reference? | |||
ts:central-certificate-bag-ref | ts:central-certificate-bag-ref | |||
]]></artwork> | ]]></sourcecode> | |||
<t>Comments:</t> | <t>Comments:</t> | |||
<ul> | <ul> | |||
<li>The "inline-or-truststore-certs-grouping" grouping is provided | <li>The "inline-or-truststore-certs-grouping" grouping is provided | |||
solely as convenience to consuming modules that wish to offer | solely as a convenience to consuming modules that wish to offe r | |||
an option whether a bag of certificates can be defined inline | an option whether a bag of certificates can be defined inline | |||
or as a reference to a bag in the truststore.</li> | or as a reference to a bag in the truststore.</li> | |||
<li>A "choice" statement is used to expose the various options. | <li>A "choice" statement is used to expose the various options. | |||
Each option is enabled by a "feature" statement. Additional | Each option is enabled by a "feature" statement. Additional | |||
"case" statements MAY be augmented in if, e.g., there is a | "case" statements <bcp14>MAY</bcp14> be augmented in if, e.g., there is a | |||
need to reference a bag in an alternate location.</li> | need to reference a bag in an alternate location.</li> | |||
<li>For the "inline-definition" option, the "certificate" node | <li>For the "inline-definition" option, the "certificate" node | |||
uses the "trust-anchor-cert-grouping" grouping discussed in | uses the "trust-anchor-cert-grouping" grouping discussed in | |||
<xref section="2.1.4.7" target="I-D.ietf-netconf-crypto-types" | <xref section="2.1.4.8" sectionFormat="of" target="RFC9640"/>.</li | |||
/>.</li> | > | |||
<li>For the "central-truststore" option, the "central-truststore-r | <li>For the "central-truststore" option, the "central-truststore-r | |||
eference" is an | eference" node is an | |||
instance of the "certificate-bag-ref" discussed in <xref targe | instance of the "central-certificate-bag-ref" discussed in <xr | |||
t="typedefs"/>.</li> | ef target="typedefs"/>.</li> | |||
</ul> | </ul> | |||
</section> | </section> | |||
<section anchor="inline-or-truststore-public-keys-grouping"> | <section anchor="inline-or-truststore-public-keys-grouping"> | |||
<name>The "inline-or-truststore-public-keys-grouping" Grouping</name > | <name>The "inline-or-truststore-public-keys-grouping" Grouping</name > | |||
<t>The following tree diagram <xref target="RFC8340"/> illustrates t he | <t>The following tree diagram <xref target="RFC8340"/> illustrates t he | |||
"inline-or-truststore-public-keys-grouping" grouping:</t> | "inline-or-truststore-public-keys-grouping" grouping:</t> | |||
<artwork><![CDATA[ | <sourcecode type="yangtree"><![CDATA[ | |||
grouping inline-or-truststore-public-keys-grouping: | grouping inline-or-truststore-public-keys-grouping: | |||
+-- (inline-or-truststore) | +-- (inline-or-truststore) | |||
+--:(inline) {inline-definitions-supported}? | +--:(inline) {inline-definitions-supported}? | |||
| +-- inline-definition | | +-- inline-definition | |||
| +-- public-key* [name] | | +-- public-key* [name] | |||
| +-- name? string | | +-- name string | |||
| +---u ct:public-key-grouping | | +---u ct:public-key-grouping | |||
+--:(central-truststore) | +--:(central-truststore) | |||
{central-truststore-supported,public-keys}? | {central-truststore-supported,public-keys}? | |||
+-- central-truststore-reference? | +-- central-truststore-reference? | |||
ts:central-public-key-bag-ref | ts:central-public-key-bag-ref | |||
]]></artwork> | ]]></sourcecode> | |||
<t>Comments:</t> | <t>Comments:</t> | |||
<ul> | <ul> | |||
<li>The "inline-or-truststore-public-keys-grouping" grouping is pr ovided | <li>The "inline-or-truststore-public-keys-grouping" grouping is pr ovided | |||
solely as convenience to consuming modules that wish to offer | solely as a convenience to consuming modules that wish to offe r | |||
an option whether a bag of public keys can be defined inline | an option whether a bag of public keys can be defined inline | |||
or as a reference to a bag in the truststore.</li> | or as a reference to a bag in the truststore.</li> | |||
<li>A "choice" statement is used to expose the various options. | <li>A "choice" statement is used to expose the various options. | |||
Each option is enabled by a "feature" statement. Additional | Each option is enabled by a "feature" statement. Additional | |||
"case" statements MAY be augmented in if, e.g., there is a | "case" statements <bcp14>MAY</bcp14> be augmented in if, e.g., there is a | |||
need to reference a bag in an alternate location.</li> | need to reference a bag in an alternate location.</li> | |||
<li>For the "inline-definition" option, the "public-key" node uses the | <li>For the "inline-definition" option, the "public-key" node uses the | |||
"public-key-grouping" grouping discussed in <xref section="2.1 .4.4" target="I-D.ietf-netconf-crypto-types"/>.</li> | "public-key-grouping" grouping discussed in <xref section="2.1 .4.4" sectionFormat="of" target="RFC9640"/>.</li> | |||
<li>For the "central-truststore" option, the "central-truststore-r eference" is an | <li>For the "central-truststore" option, the "central-truststore-r eference" is an | |||
instance of the "certificate-bag-ref" discussed in <xref targe t="typedefs"/>.</li> | instance of the "certificate-bag-ref" discussed in <xref targe t="typedefs"/>.</li> | |||
</ul> | </ul> | |||
</section> | </section> | |||
<section anchor="truststore-grouping"> | <section anchor="truststore-grouping"> | |||
<name>The "truststore-grouping" Grouping</name> | <name>The "truststore-grouping" Grouping</name> | |||
<t>The following tree diagram <xref target="RFC8340"/> illustrates t he | <t>The following tree diagram <xref target="RFC8340"/> illustrates t he | |||
"truststore-grouping" grouping:</t> | "truststore-grouping" grouping:</t> | |||
<artwork><![CDATA[ | <sourcecode type="yangtree"><![CDATA[ | |||
grouping truststore-grouping: | grouping truststore-grouping: | |||
+-- certificate-bags {certificates}? | +-- certificate-bags {certificates}? | |||
| +-- certificate-bag* [name] | | +-- certificate-bag* [name] | |||
| +-- name? string | | +-- name string | |||
| +-- description? string | | +-- description? string | |||
| +-- certificate* [name] | | +-- certificate* [name] | |||
| +-- name? string | | +-- name string | |||
| +---u ct:trust-anchor-cert-grouping | | +---u ct:trust-anchor-cert-grouping | |||
+-- public-key-bags {public-keys}? | +-- public-key-bags {public-keys}? | |||
+-- public-key-bag* [name] | +-- public-key-bag* [name] | |||
+-- name? string | +-- name string | |||
+-- description? string | +-- description? string | |||
+-- public-key* [name] | +-- public-key* [name] | |||
+-- name? string | +-- name string | |||
+---u ct:public-key-grouping | +---u ct:public-key-grouping | |||
]]></artwork> | ]]></sourcecode> | |||
<t>Comments:</t> | <t>Comments:</t> | |||
<ul> | <ul> | |||
<li>The "truststore-grouping" grouping defines a truststore instan ce | <li>The "truststore-grouping" grouping defines a truststore instan ce | |||
as being composed of certificates and/or public keys, both of which | as being composed of certificates and/or public keys, both of which | |||
are enabled by "feature" statements. The structure supporting | are enabled by "feature" statements. The structures supportin | |||
certificates and public keys is essentially the same, having a | g | |||
n | certificates and public keys are essentially the same, having | |||
an | ||||
outer list of "bags" containing an inner list of objects | outer list of "bags" containing an inner list of objects | |||
(certificates or public keys). The bags enable trust anchors | (i.e., certificates or public keys). The bags enable trust an chors | |||
serving a common purpose to be grouped and referenced together .</li> | serving a common purpose to be grouped and referenced together .</li> | |||
<li>For certificates, each certificate is defined by the | <li>For certificates, each certificate is defined by the | |||
"trust-anchor-cert-grouping" grouping <xref section="2.1.4.7" | "trust-anchor-cert-grouping" grouping (<xref section="2.1.4.8" | |||
target="I-D.ietf-netconf-crypto-types"/>. The "cert-data" | sectionFormat="of" target="RFC9640"/>). The "cert-data" | |||
node is a CMS structure that can be composed of a chain of one | node is a Cryptographic Message Syntax (CMS) structure that ca | |||
or | n be composed of a chain of one or | |||
more certificates. Additionally, the "certificate-expiration" | more certificates. Additionally, the "certificate-expiration" | |||
notification enables the server to alert clients when certific ates | notification enables the server to alert clients when certific ates | |||
are nearing or have already expired.</li> | are nearing expiration or have already expired.</li> | |||
<li>For public keys, each public key is defined by the | <li>For public keys, each public key is defined by the | |||
"public-key-grouping" grouping <xref section="2.1.4.4" target= "I-D.ietf-netconf-crypto-types"/>. The "public-key" | "public-key-grouping" grouping (<xref section="2.1.4.4" sectio nFormat="of" target="RFC9640"/>). The "public-key" | |||
node can be one of any number of structures specified by the | node can be one of any number of structures specified by the | |||
"public-key-format" identity node.</li> | "public-key-format" identity node.</li> | |||
</ul> | </ul> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="proto-access-nodes" toc="exclude"> | <section anchor="proto-access-nodes" toc="exclude"> | |||
<name>Protocol-accessible Nodes</name> | <name>Protocol-Accessible Nodes</name> | |||
<t>The following tree diagram <xref target="RFC8340"/> lists all the | <t>The following tree diagram <xref target="RFC8340"/> lists all the | |||
protocol-accessible nodes defined in the "ietf-truststore" module, without | protocol-accessible nodes defined in the "ietf-truststore" module without | |||
expanding the "grouping" statements:</t> | expanding the "grouping" statements:</t> | |||
<artwork><![CDATA[ | <sourcecode type="yangtree"><![CDATA[ | |||
module: ietf-truststore | module: ietf-truststore | |||
+--rw truststore {central-truststore-supported}? | +--rw truststore {central-truststore-supported}? | |||
+---u truststore-grouping | +---u truststore-grouping | |||
]]></artwork> | ]]></sourcecode> | |||
<t>The following tree diagram <xref target="RFC8340"/> lists all the | <t>The following tree diagram <xref target="RFC8340"/> lists all the | |||
protocol-accessible nodes defined in the "ietf-truststore" module, with | protocol-accessible nodes defined in the "ietf-truststore" module with | |||
all "grouping" statements expanded, enabling the truststore's full | all "grouping" statements expanded, enabling the truststore's full | |||
structure to be seen:</t> | structure to be seen:</t> | |||
<artwork><![CDATA[ | <sourcecode type="yangtree"><![CDATA[ | |||
module: ietf-truststore | module: ietf-truststore | |||
+--rw truststore {central-truststore-supported}? | +--rw truststore {central-truststore-supported}? | |||
+--rw certificate-bags {certificates}? | +--rw certificate-bags {certificates}? | |||
| +--rw certificate-bag* [name] | | +--rw certificate-bag* [name] | |||
| +--rw name string | | +--rw name string | |||
| +--rw description? string | | +--rw description? string | |||
| +--rw certificate* [name] | | +--rw certificate* [name] | |||
| +--rw name string | | +--rw name string | |||
| +--rw cert-data trust-anchor-cert-cms | | +--rw cert-data trust-anchor-cert-cms | |||
| +---n certificate-expiration | | +---n certificate-expiration | |||
| {certificate-expiration-notification}? | | {certificate-expiration-notification}? | |||
| +-- expiration-date yang:date-and-time | | +-- expiration-date yang:date-and-time | |||
+--rw public-key-bags {public-keys}? | +--rw public-key-bags {public-keys}? | |||
+--rw public-key-bag* [name] | +--rw public-key-bag* [name] | |||
+--rw name string | +--rw name string | |||
+--rw description? string | +--rw description? string | |||
+--rw public-key* [name] | +--rw public-key* [name] | |||
+--rw name string | +--rw name string | |||
+--rw public-key-format identityref | +--rw public-key-format identityref | |||
+--rw public-key binary | +--rw public-key binary | |||
]]></artwork> | ]]></sourcecode> | |||
<t>Comments:</t> | <t>Comments:</t> | |||
<ul> | <ul> | |||
<li>Protocol-accessible nodes are those nodes that are accessible | <li>Protocol-accessible nodes are those nodes that are accessible | |||
when the module is "implemented", as described in <xref section= "5.6.5" target="RFC7950"/>.</li> | when the module is "implemented", as described in <xref section= "5.6.5" sectionFormat="of" target="RFC7950"/>.</li> | |||
<li>The protocol-accessible nodes for the "ietf-truststore" module | <li>The protocol-accessible nodes for the "ietf-truststore" module | |||
are an instance of the "truststore-grouping" grouping discussed in | are instances of the "truststore-grouping" grouping discussed in | |||
<xref target="truststore-grouping"/>.</li> | <xref target="truststore-grouping"/>.</li> | |||
<li>The top-level node "truststore" is additionally constrained | <li>The top-level "truststore" node is additionally constrained | |||
by the feature "central-truststore-supported".</li> | by the "central-truststore-supported" feature.</li> | |||
<li>The "truststore-grouping" grouping is discussed in | <li>The "truststore-grouping" grouping is discussed in | |||
<xref target="truststore-grouping"/>.</li> | <xref target="truststore-grouping"/>.</li> | |||
<li>The reason for why the "truststore-grouping" exists separate | <li>The reason for why the "truststore-grouping" grouping exists sep arate | |||
from the protocol-accessible nodes definition is to enable | from the protocol-accessible nodes definition is to enable | |||
instances of the truststore to be instantiated in other | instances of the truststore to be instantiated in other | |||
locations, as may be needed or desired by some modules.</li> | locations, as may be needed or desired by some modules.</li> | |||
</ul> | </ul> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="truststore-examples"> | <section anchor="truststore-examples"> | |||
<name>Example Usage</name> | <name>Example Usage</name> | |||
<t>The examples in this section are encoded using XML, such as might | <t>The examples in this section are encoded using XML, such as might | |||
be the case when using the NETCONF protocol. Other encodings MAY | be the case when using the NETCONF protocol. Other encodings <bcp14> MAY</bcp14> | |||
be used, such as JSON when using the RESTCONF protocol.</t> | be used, such as JSON when using the RESTCONF protocol.</t> | |||
<section anchor="ts-inst" toc="exclude"> | <section anchor="ts-inst" toc="exclude"> | |||
<name>A Truststore Instance</name> | <name>A Truststore Instance</name> | |||
<t>This section presents an example illustrating trust anchors | <t>This section presents an example illustrating trust anchors | |||
in <intended>, as per <xref target="proto-access-nodes"/>. | in <intended>, as per <xref target="proto-access-nodes"/>. | |||
Please see <xref target="built-ins"/> for an example illustrating | Please see <xref target="built-ins"/> for an example illustrating | |||
built-in values in <operational>.</t> | built-in values in <operational>.</t> | |||
<t>The example contained in this section defines eight bags of trust | <t>The example contained in this section defines eight bags of trust | |||
anchors. There are four certificate-based bags and four public | anchors. There are four certificate-based bags and four public-ke | |||
key based bags. The following diagram provides an overview of the | y-based | |||
bags. The following diagram provides an overview of the | ||||
contents in the example:</t> | contents in the example:</t> | |||
<artwork><![CDATA[ | <sourcecode type="yangtree"><![CDATA[ | |||
Certificate Bags | Certificate Bags | |||
+-- Trust anchor certs for authenticating a set of remote servers | +-- Trust anchor certs for authenticating a set of remote servers | |||
+-- End entity certs for authenticating a set of remote servers | +-- End entity certs for authenticating a set of remote servers | |||
+-- Trust anchor certs for authenticating a set of remote clients | +-- Trust anchor certs for authenticating a set of remote clients | |||
+-- End entity certs for authenticating a set of remote clients | +-- End entity certs for authenticating a set of remote clients | |||
Public Key Bags | Public Key Bags | |||
+-- SSH keys to authenticate a set of remote SSH server | +-- SSH keys to authenticate a set of remote SSH servers | |||
+-- SSH keys to authenticate a set of remote SSH clients | +-- SSH keys to authenticate a set of remote SSH clients | |||
+-- Raw public keys to authenticate a set of remote SSH server | +-- Raw public keys to authenticate a set of remote SSH servers | |||
+-- Raw public keys to authenticate a set of remote SSH clients | +-- Raw public keys to authenticate a set of remote SSH clients | |||
]]></artwork> | ]]></sourcecode> | |||
<t>Following is the full example:</t> | <sourcecode type="xml"><![CDATA[ | |||
<artwork><![CDATA[ | ||||
=============== NOTE: '\' line wrapping per RFC 8792 ================ | =============== NOTE: '\' line wrapping per RFC 8792 ================ | |||
<truststore | <truststore | |||
xmlns="urn:ietf:params:xml:ns:yang:ietf-truststore" | xmlns="urn:ietf:params:xml:ns:yang:ietf-truststore" | |||
xmlns:ct="urn:ietf:params:xml:ns:yang:ietf-crypto-types"> | xmlns:ct="urn:ietf:params:xml:ns:yang:ietf-crypto-types"> | |||
<!-- A bag of Certificate Bags --> | <!-- A bag of Certificate Bags --> | |||
<certificate-bags> | <certificate-bags> | |||
<!-- Trust Anchor Certs for Authenticating Servers --> | <!-- Trust Anchor Certs for Authenticating Servers --> | |||
<certificate-bag> | <certificate-bag> | |||
<name>trusted-server-ca-certs</name> | <name>trusted-server-ca-certs</name> | |||
<description> | <description> | |||
Trust anchors (i.e. CA certs) used to authenticate server | Trust anchors (i.e., CA certs) used to authenticate server | |||
certificates. A server certificate is authenticated if its | certificates. A server certificate is authenticated if its | |||
end-entity certificate has a chain of trust to one of these | end-entity certificate has a chain of trust to one of these | |||
certificates. | certificates. | |||
</description> | </description> | |||
<certificate> | <certificate> | |||
<name>Server Cert Issuer #1</name> | <name>Server Cert Issuer #1</name> | |||
<cert-data>BASE64VALUE=</cert-data> | <cert-data>BASE64VALUE=</cert-data> | |||
</certificate> | </certificate> | |||
<certificate> | <certificate> | |||
<name>Server Cert Issuer #2</name> | <name>Server Cert Issuer #2</name> | |||
skipping to change at line 589 ¶ | skipping to change at line 537 ¶ | |||
<certificate> | <certificate> | |||
<name>My Application #2</name> | <name>My Application #2</name> | |||
<cert-data>BASE64VALUE=</cert-data> | <cert-data>BASE64VALUE=</cert-data> | |||
</certificate> | </certificate> | |||
</certificate-bag> | </certificate-bag> | |||
<!-- Trust Anchor Certs for Authenticating Clients --> | <!-- Trust Anchor Certs for Authenticating Clients --> | |||
<certificate-bag> | <certificate-bag> | |||
<name>trusted-client-ca-certs</name> | <name>trusted-client-ca-certs</name> | |||
<description> | <description> | |||
Trust anchors (i.e. CA certs) used to authenticate client | Trust anchors (i.e., CA certs) used to authenticate client | |||
certificates. A client certificate is authenticated if its | certificates. A client certificate is authenticated if its | |||
end-entity certificate has a chain of trust to one of these | end-entity certificate has a chain of trust to one of these | |||
certificates. | certificates. | |||
</description> | </description> | |||
<certificate> | <certificate> | |||
<name>Client Identity Issuer #1</name> | <name>Client Identity Issuer #1</name> | |||
<cert-data>BASE64VALUE=</cert-data> | <cert-data>BASE64VALUE=</cert-data> | |||
</certificate> | </certificate> | |||
<certificate> | <certificate> | |||
<name>Client Identity Issuer #2</name> | <name>Client Identity Issuer #2</name> | |||
skipping to change at line 709 ¶ | skipping to change at line 657 ¶ | |||
</public-key> | </public-key> | |||
<public-key> | <public-key> | |||
<name>Raw Public Key #2</name> | <name>Raw Public Key #2</name> | |||
<public-key-format>ct:subject-public-key-info-format</public\ | <public-key-format>ct:subject-public-key-info-format</public\ | |||
-key-format> | -key-format> | |||
<public-key>BASE64VALUE=</public-key> | <public-key>BASE64VALUE=</public-key> | |||
</public-key> | </public-key> | |||
</public-key-bag> | </public-key-bag> | |||
</public-key-bags> | </public-key-bags> | |||
</truststore> | </truststore> | |||
]]></artwork> | ]]></sourcecode> | |||
</section> | </section> | |||
<section toc="exclude"> | <section toc="exclude"> | |||
<name>A Certificate Expiration Notification</name> | <name>A Certificate Expiration Notification</name> | |||
<t>The following example illustrates the "certificate-expiration" | <t>The following example illustrates the "certificate-expiration" | |||
notification (per <xref section="2.1.4.6" target="I-D.ietf-netconf | notification (per <xref section="2.1.4.7" sectionFormat="of" targe | |||
-crypto-types"/>) | t="RFC9640"/>) | |||
for a certificate configured in the truststore in <xref target="ts | for a certificate configured in the truststore described in <xref targ | |||
-inst"/>.</t> | et="ts-inst"/>.</t> | |||
<artwork><![CDATA[ | <sourcecode type="xml"><![CDATA[ | |||
=============== NOTE: '\' line wrapping per RFC 8792 ================ | =============== NOTE: '\' line wrapping per RFC 8792 ================ | |||
<notification | <notification | |||
xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0"> | xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0"> | |||
<eventTime>2018-05-25T00:01:00Z</eventTime> | <eventTime>2018-05-25T00:01:00Z</eventTime> | |||
<truststore xmlns="urn:ietf:params:xml:ns:yang:ietf-truststore"> | <truststore xmlns="urn:ietf:params:xml:ns:yang:ietf-truststore"> | |||
<certificate-bags> | <certificate-bags> | |||
<certificate-bag> | <certificate-bag> | |||
<name>trusted-client-ee-certs</name> | <name>trusted-client-ee-certs</name> | |||
<certificate> | <certificate> | |||
<name>George Jetson</name> | <name>George Jetson</name> | |||
<certificate-expiration> | <certificate-expiration> | |||
<expiration-date>2024-01-05T14:18:53-05:00</expiration-d\ | <expiration-date>2024-01-05T14:18:53-05:00</expiration-d\ | |||
ate> | ate> | |||
</certificate-expiration> | </certificate-expiration> | |||
</certificate> | </certificate> | |||
</certificate-bag> | </certificate-bag> | |||
</certificate-bags> | </certificate-bags> | |||
</truststore> | </truststore> | |||
</notification> | </notification> | |||
]]></sourcecode> | ||||
]]></artwork> | ||||
</section> | </section> | |||
<section toc="exclude"> | <section toc="exclude"> | |||
<name>The "Local or Truststore" Groupings</name> | <name>The "Inline or Truststore" Groupings</name> | |||
<t>This section illustrates the various "inline-or-truststore" groupin gs | <t>This section illustrates the various "inline-or-truststore" groupin gs | |||
defined in the "ietf-truststore" module, specifically the | defined in the "ietf-truststore" module, specifically the | |||
"inline-or-truststore-certs-grouping" | "inline-or-truststore-certs-grouping" | |||
(<xref target="inline-or-truststore-certs-grouping"/>) and | (<xref target="inline-or-truststore-certs-grouping"/>) and | |||
"inline-or-truststore-public-keys-grouping" | "inline-or-truststore-public-keys-grouping" | |||
(<xref target="inline-or-truststore-public-keys-grouping"/>) | (<xref target="inline-or-truststore-public-keys-grouping"/>) | |||
groupings.</t> | groupings.</t> | |||
<t>These examples assume the existence of an example module called "ex -truststore-usage" | <t>These examples assume the existence of an example module called "ex -truststore-usage" | |||
having the namespace "https://example.com/ns/example-truststore-us | that has the namespace "https://example.com/ns/example-truststore- | |||
age".</t> | usage".</t> | |||
<t>The ex-truststore-usage module is first presented using tree diagra | <t>The "ex-truststore-usage" module is first presented using tree diag | |||
ms | rams | |||
<xref target="RFC8340"/>, followed by an instance example illustra ting | <xref target="RFC8340"/>, followed by an instance example illustra ting | |||
all the "inline-or-truststore" groupings in use, followed by the Y ANG | all the "inline-or-truststore" groupings in use, followed by the Y ANG | |||
module itself.</t> | module itself.</t> | |||
<t>The following tree diagram illustrates "ex-truststore-usage" withou t | <t>The following tree diagram illustrates the "ex-truststore-usage" mo dule without | |||
expanding the "grouping" statements:</t> | expanding the "grouping" statements:</t> | |||
<artwork><![CDATA[ | <sourcecode type="yangtree"><![CDATA[ | |||
module: ex-truststore-usage | module: ex-truststore-usage | |||
+--rw truststore-usage | +--rw truststore-usage | |||
+--rw cert* [name] | +--rw cert* [name] | |||
| +--rw name string | | +--rw name string | |||
| +---u ts:inline-or-truststore-certs-grouping | | +---u ts:inline-or-truststore-certs-grouping | |||
+--rw public-key* [name] | +--rw public-key* [name] | |||
+--rw name string | +--rw name string | |||
+---u ts:inline-or-truststore-public-keys-grouping | +---u ts:inline-or-truststore-public-keys-grouping | |||
]]></artwork> | ]]></sourcecode> | |||
<t>The following tree diagram illustrates the "ex-truststore-usage" | <t>The following tree diagram illustrates the "ex-truststore-usage" | |||
module, with all "grouping" statements expanded, enabling the | module with all "grouping" statements expanded, enabling the | |||
truststore's full structure to be seen:</t> | truststore's full structure to be seen:</t> | |||
<artwork><![CDATA[ | <sourcecode type="yangtree"><![CDATA[ | |||
module: ex-truststore-usage | module: ex-truststore-usage | |||
+--rw truststore-usage | +--rw truststore-usage | |||
+--rw cert* [name] | +--rw cert* [name] | |||
| +--rw name string | | +--rw name string | |||
| +--rw (inline-or-truststore) | | +--rw (inline-or-truststore) | |||
| +--:(inline) {inline-definitions-supported}? | | +--:(inline) {inline-definitions-supported}? | |||
| | +--rw inline-definition | | | +--rw inline-definition | |||
| | +--rw certificate* [name] | | | +--rw certificate* [name] | |||
| | +--rw name string | | | +--rw name string | |||
| | +--rw cert-data | | | +--rw cert-data | |||
skipping to change at line 802 ¶ | skipping to change at line 749 ¶ | |||
+--:(inline) {inline-definitions-supported}? | +--:(inline) {inline-definitions-supported}? | |||
| +--rw inline-definition | | +--rw inline-definition | |||
| +--rw public-key* [name] | | +--rw public-key* [name] | |||
| +--rw name string | | +--rw name string | |||
| +--rw public-key-format identityref | | +--rw public-key-format identityref | |||
| +--rw public-key binary | | +--rw public-key binary | |||
+--:(central-truststore) | +--:(central-truststore) | |||
{central-truststore-supported,public-keys}? | {central-truststore-supported,public-keys}? | |||
+--rw central-truststore-reference? | +--rw central-truststore-reference? | |||
ts:central-public-key-bag-ref | ts:central-public-key-bag-ref | |||
]]></artwork> | ]]></sourcecode> | |||
<t>The following example provides two equivalent instances of | <t>The following example provides two equivalent instances of | |||
each grouping, the first being a reference to a truststore | each grouping, the first being a reference to a truststore | |||
and the second being defined inline. The instance having | and the second being defined inline. The instance having | |||
a reference to a truststore is consistent with the truststore | a reference to a truststore is consistent with the truststore | |||
defined in <xref target="ts-inst"/>. The two instances are | defined in <xref target="ts-inst"/>. The two instances are | |||
equivalent, as the inlined instance example contains | equivalent, as the inlined instance example contains | |||
the same values defined by the truststore instance referenced | the same values defined by the truststore instance referenced | |||
by its sibling example.</t> | by its sibling example.</t> | |||
<artwork><![CDATA[ | <sourcecode type="xml"><![CDATA[ | |||
=============== NOTE: '\' line wrapping per RFC 8792 ================ | =============== NOTE: '\' line wrapping per RFC 8792 ================ | |||
<truststore-usage | <truststore-usage | |||
xmlns="https://example.com/ns/example-truststore-usage" | xmlns="https://example.com/ns/example-truststore-usage" | |||
xmlns:ct="urn:ietf:params:xml:ns:yang:ietf-crypto-types"> | xmlns:ct="urn:ietf:params:xml:ns:yang:ietf-crypto-types"> | |||
<!-- The following two equivalent examples illustrate --> | <!-- The following two equivalent examples illustrate --> | |||
<!-- the "inline-or-truststore-certs-grouping" grouping: --> | <!-- the "inline-or-truststore-certs-grouping" grouping: --> | |||
<cert> | <cert> | |||
<name>example 1a</name> | <name>example 1a</name> | |||
<central-truststore-reference>trusted-client-ca-certs</central-t\ | <central-truststore-reference>trusted-client-ca-certs</central-t\ | |||
ruststore-reference> | ruststore-reference> | |||
</cert> | </cert> | |||
<cert> | <cert> | |||
<name>example 1b</name> | <name>example 1b</name> | |||
<inline-definition> | <inline-definition> | |||
<name>my-trusted-client-ca-certs</name> | ||||
<certificate> | <certificate> | |||
<name>Client Identity Issuer #1</name> | <name>Client Identity Issuer #1</name> | |||
<cert>BASE64VALUE=</cert> | <cert-data>BASE64VALUE=</cert-data> | |||
</certificate> | </certificate> | |||
<certificate> | <certificate> | |||
<name>Client Identity Issuer #2</name> | <name>Client Identity Issuer #2</name> | |||
<cert>BASE64VALUE=</cert> | <cert-data>BASE64VALUE=</cert-data> | |||
</certificate> | </certificate> | |||
</inline-definition> | </inline-definition> | |||
</cert> | </cert> | |||
<!-- The following two equivalent examples illustrate the --> | <!-- The following two equivalent examples illustrate the --> | |||
<!-- "inline-or-truststore-public-keys-grouping" grouping: --> | <!-- "inline-or-truststore-public-keys-grouping" grouping: --> | |||
<public-key> | <public-key> | |||
<name>example 2a</name> | <name>example 2a</name> | |||
<central-truststore-reference>trusted-ssh-public-keys</central-t\ | <central-truststore-reference>trusted-ssh-public-keys</central-t\ | |||
ruststore-reference> | ruststore-reference> | |||
</public-key> | </public-key> | |||
<public-key> | <public-key> | |||
<name>example 2b</name> | <name>example 2b</name> | |||
<inline-definition> | <inline-definition> | |||
<name>trusted-ssh-public-keys</name> | ||||
<public-key> | <public-key> | |||
<name>corp-fw1</name> | <name>corp-fw1</name> | |||
<public-key-format> | <public-key-format>ct:ssh-public-key-format</public-key-form\ | |||
ct:ssh-public-key-format | at> | |||
</public-key-format> | ||||
<public-key>BASE64VALUE=</public-key> | <public-key>BASE64VALUE=</public-key> | |||
</public-key> | </public-key> | |||
<public-key> | <public-key> | |||
<name>corp-fw2</name> | <name>corp-fw2</name> | |||
<public-key-format> | <public-key-format>ct:ssh-public-key-format</public-key-form\ | |||
ct:ssh-public-key-format | at> | |||
</public-key-format> | ||||
<public-key>BASE64VALUE=</public-key> | <public-key>BASE64VALUE=</public-key> | |||
</public-key> | </public-key> | |||
</inline-definition> | </inline-definition> | |||
</public-key> | </public-key> | |||
</truststore-usage> | </truststore-usage> | |||
]]></artwork> | ]]></sourcecode> | |||
<t>Following is the "ex-truststore-usage" module's YANG definition:</t > | <t>Following is the "ex-truststore-usage" module's YANG definition:</t > | |||
<artwork><![CDATA[ | <sourcecode type="yang"><![CDATA[ | |||
module ex-truststore-usage { | module ex-truststore-usage { | |||
yang-version 1.1; | yang-version 1.1; | |||
namespace "https://example.com/ns/example-truststore-usage"; | namespace "https://example.com/ns/example-truststore-usage"; | |||
prefix etu; | prefix etu; | |||
import ietf-truststore { | import ietf-truststore { | |||
prefix ts; | prefix ts; | |||
reference | reference | |||
"RFC BBBB: A YANG Data Model for a Truststore"; | "RFC 9641: A YANG Data Model for a Truststore"; | |||
} | } | |||
organization | organization | |||
"Example Corporation"; | "Example Corporation"; | |||
contact | contact | |||
"Author: YANG Designer <mailto:yang.designer@example.com>"; | "Author: YANG Designer <mailto:yang.designer@example.com>"; | |||
description | description | |||
"This example module illustrates notable groupings defined | "This example module illustrates notable groupings defined | |||
in the 'ietf-truststore' module."; | in the 'ietf-truststore' module."; | |||
revision 2024-03-16 { | revision 2024-03-16 { | |||
description | description | |||
"Initial version"; | "Initial version."; | |||
reference | reference | |||
"RFC BBBB: A YANG Data Model for a Truststore"; | "RFC 9641: A YANG Data Model for a Truststore"; | |||
} | } | |||
container truststore-usage { | container truststore-usage { | |||
description | description | |||
"An illustration of the various truststore groupings."; | "An illustration of the various truststore groupings."; | |||
list cert { | list cert { | |||
key "name"; | key "name"; | |||
leaf name { | leaf name { | |||
type string; | type string; | |||
description | description | |||
skipping to change at line 933 ¶ | skipping to change at line 876 ¶ | |||
description | description | |||
"An arbitrary name for this cert."; | "An arbitrary name for this cert."; | |||
} | } | |||
uses ts:inline-or-truststore-public-keys-grouping; | uses ts:inline-or-truststore-public-keys-grouping; | |||
description | description | |||
"A public key that may be configured locally or be | "A public key that may be configured locally or be | |||
a reference to a public key in the truststore."; | a reference to a public key in the truststore."; | |||
} | } | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="truststore-yang-module"> | <section anchor="truststore-yang-module"> | |||
<name>YANG Module</name> | <name>YANG Module</name> | |||
<t>This YANG module imports modules from <xref target="RFC8341"/> | <t>This YANG module imports modules from <xref target="RFC8341"/> | |||
and <xref target="I-D.ietf-netconf-crypto-types"/>.</t> | and <xref target="RFC9640"/>.</t> | |||
<t keepWithNext="true"><CODE BEGINS> file "ietf-truststore@2024-03 | ||||
-16.yang"</t> | <sourcecode type="yang" name="ietf-truststore@2024-03-16.yang" markers=" | |||
<artwork><![CDATA[ | true"><![CDATA[ | |||
module ietf-truststore { | module ietf-truststore { | |||
yang-version 1.1; | yang-version 1.1; | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-truststore"; | namespace "urn:ietf:params:xml:ns:yang:ietf-truststore"; | |||
prefix ts; | prefix ts; | |||
import ietf-netconf-acm { | import ietf-netconf-acm { | |||
prefix nacm; | prefix nacm; | |||
reference | reference | |||
"RFC 8341: Network Configuration Access Control Model"; | "RFC 8341: Network Configuration Access Control Model"; | |||
} | } | |||
skipping to change at line 952 ¶ | skipping to change at line 895 ¶ | |||
module ietf-truststore { | module ietf-truststore { | |||
yang-version 1.1; | yang-version 1.1; | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-truststore"; | namespace "urn:ietf:params:xml:ns:yang:ietf-truststore"; | |||
prefix ts; | prefix ts; | |||
import ietf-netconf-acm { | import ietf-netconf-acm { | |||
prefix nacm; | prefix nacm; | |||
reference | reference | |||
"RFC 8341: Network Configuration Access Control Model"; | "RFC 8341: Network Configuration Access Control Model"; | |||
} | } | |||
import ietf-crypto-types { | import ietf-crypto-types { | |||
prefix ct; | prefix ct; | |||
reference | reference | |||
"RFC AAAA: YANG Data Types and Groupings for Cryptography"; | "RFC 9640: YANG Data Types and Groupings for Cryptography"; | |||
} | } | |||
organization | organization | |||
"IETF NETCONF (Network Configuration) Working Group"; | "IETF NETCONF (Network Configuration) Working Group"; | |||
contact | contact | |||
"WG Web : https://datatracker.ietf.org/wg/netconf | "WG Web: https://datatracker.ietf.org/wg/netconf | |||
WG List : NETCONF WG list <mailto:netconf@ietf.org> | WG List: NETCONF WG list <mailto:netconf@ietf.org> | |||
Author : Kent Watsen <kent+ietf@watsen.net>"; | Author: Kent Watsen <kent+ietf@watsen.net>"; | |||
description | description | |||
"This module defines a 'truststore' to centralize management | "This module defines a 'truststore' to centralize management | |||
of trust anchors including certificates and public keys. | of trust anchors, including certificates and public keys. | |||
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 (RFC 2119) | ||||
(RFC 8174) when, and only when, they appear in all | ||||
capitals, as shown here. | ||||
Copyright (c) 2024 IETF Trust and the persons identified | Copyright (c) 2024 IETF Trust and the persons identified | |||
as authors of the code. All rights reserved. | as authors of the code. All rights reserved. | |||
Redistribution and use in source and binary forms, with | Redistribution and use in source and binary forms, with | |||
or without modification, is permitted pursuant to, and | or without modification, is permitted pursuant to, and | |||
subject to the license terms contained in, the Revised | subject to the license terms contained in, the Revised | |||
BSD License set forth in Section 4.c of the IETF Trust's | BSD License set forth in Section 4.c of the IETF Trust's | |||
Legal Provisions Relating to IETF Documents | Legal Provisions Relating to IETF Documents | |||
(https://trustee.ietf.org/license-info). | (https://trustee.ietf.org/license-info). | |||
This version of this YANG module is part of RFC BBBB | This version of this YANG module is part of RFC 9641 | |||
(https://www.rfc-editor.org/info/rfcBBBB); see the RFC | (https://www.rfc-editor.org/info/rfc9641); see the RFC | |||
itself for full legal notices. | itself for full legal notices."; | |||
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 (RFC 2119) | ||||
(RFC 8174) when, and only when, they appear in all | ||||
capitals, as shown here."; | ||||
revision 2024-03-16 { | revision 2024-03-16 { | |||
description | description | |||
"Initial version"; | "Initial version."; | |||
reference | reference | |||
"RFC BBBB: A YANG Data Model for a Truststore"; | "RFC 9641: A YANG Data Model for a Truststore"; | |||
} | } | |||
/****************/ | /****************/ | |||
/* Features */ | /* Features */ | |||
/****************/ | /****************/ | |||
feature central-truststore-supported { | feature central-truststore-supported { | |||
description | description | |||
"The 'central-truststore-supported' feature indicates that | "The 'central-truststore-supported' feature indicates that | |||
the server supports the truststore (i.e., implements the | the server supports the truststore (i.e., implements the | |||
'ietf-truststore' module)."; | 'ietf-truststore' module)."; | |||
} | } | |||
feature inline-definitions-supported { | feature inline-definitions-supported { | |||
description | description | |||
"The 'inline-definitions-supported' feature indicates that | "The 'inline-definitions-supported' feature indicates that | |||
the server supports locally-defined trust anchors."; | the server supports locally defined trust anchors."; | |||
} | } | |||
feature certificates { | feature certificates { | |||
description | description | |||
"The 'certificates' feature indicates that the server | "The 'certificates' feature indicates that the server | |||
implements the /truststore/certificate-bags subtree."; | implements the /truststore/certificate-bags subtree."; | |||
} | } | |||
feature public-keys { | feature public-keys { | |||
description | description | |||
skipping to change at line 1050 ¶ | skipping to change at line 990 ¶ | |||
} | } | |||
typedef central-certificate-ref { | typedef central-certificate-ref { | |||
type leafref { | type leafref { | |||
path "/ts:truststore/ts:certificate-bags/ts:certificate-bag" | path "/ts:truststore/ts:certificate-bags/ts:certificate-bag" | |||
+ "[ts:name = current()/../certificate-bag]/" | + "[ts:name = current()/../certificate-bag]/" | |||
+ "ts:certificate/ts:name"; | + "ts:certificate/ts:name"; | |||
} | } | |||
description | description | |||
"This typedef defines a reference to a specific certificate | "This typedef defines a reference to a specific certificate | |||
in a certificate bag in the central truststore. This typedef | in a certificate bag in the central truststore. This typedef | |||
requires that there exist a sibling 'leaf' node called | requires that there exist a sibling 'leaf' node called | |||
'certificate-bag' that SHOULD have the typedef | 'certificate-bag' that SHOULD have the | |||
'central-certificate-bag-ref'."; | 'central-certificate-bag-ref' typedef."; | |||
} | } | |||
typedef central-public-key-bag-ref { | typedef central-public-key-bag-ref { | |||
type leafref { | type leafref { | |||
path "/ts:truststore/ts:public-key-bags/" | path "/ts:truststore/ts:public-key-bags/" | |||
+ "ts:public-key-bag/ts:name"; | + "ts:public-key-bag/ts:name"; | |||
} | } | |||
description | description | |||
"This typedef defines a reference to a public key bag | "This typedef defines a reference to a public key bag | |||
in the central truststore."; | in the central truststore."; | |||
skipping to change at line 1076 ¶ | skipping to change at line 1016 ¶ | |||
typedef central-public-key-ref { | typedef central-public-key-ref { | |||
type leafref { | type leafref { | |||
path "/ts:truststore/ts:public-key-bags/ts:public-key-bag" | path "/ts:truststore/ts:public-key-bags/ts:public-key-bag" | |||
+ "[ts:name = current()/../public-key-bag]/" | + "[ts:name = current()/../public-key-bag]/" | |||
+ "ts:public-key/ts:name"; | + "ts:public-key/ts:name"; | |||
} | } | |||
description | description | |||
"This typedef defines a reference to a specific public key | "This typedef defines a reference to a specific public key | |||
in a public key bag in the truststore. This typedef | in a public key bag in the truststore. This typedef | |||
requires that there exist a sibling 'leaf' node called | requires that there exist a sibling 'leaf' node called | |||
'public-key-bag' that SHOULD have the typedef | 'public-key-bag' SHOULD have the | |||
'central-public-key-bag-ref'."; | 'central-public-key-bag-ref' typedef."; | |||
} | } | |||
/*****************/ | /*****************/ | |||
/* Groupings */ | /* Groupings */ | |||
/*****************/ | /*****************/ | |||
// *-ref groupings | // *-ref groupings | |||
grouping central-certificate-ref-grouping { | grouping central-certificate-ref-grouping { | |||
description | description | |||
"Grouping for the reference to a certificate in a | "Grouping for the reference to a certificate in a | |||
certificate-bag in the central truststore."; | certificate-bag in the central truststore."; | |||
leaf certificate-bag { | leaf certificate-bag { | |||
nacm:default-deny-write; | nacm:default-deny-write; | |||
if-feature "central-truststore-supported"; | if-feature "central-truststore-supported"; | |||
if-feature "certificates"; | if-feature "certificates"; | |||
type ts:central-certificate-bag-ref; | type ts:central-certificate-bag-ref; | |||
must "../certificate"; | must '../certificate'; | |||
description | description | |||
"Reference to a certificate-bag in the truststore."; | "Reference to a certificate-bag in the truststore."; | |||
} | } | |||
leaf certificate { | leaf certificate { | |||
nacm:default-deny-write; | nacm:default-deny-write; | |||
if-feature "central-truststore-supported"; | if-feature "central-truststore-supported"; | |||
if-feature "certificates"; | if-feature "certificates"; | |||
type ts:central-certificate-ref; | type ts:central-certificate-ref; | |||
must "../certificate-bag"; | must '../certificate-bag'; | |||
description | description | |||
"Reference to a specific certificate in the | "Reference to a specific certificate in the | |||
referenced certificate-bag."; | referenced certificate-bag."; | |||
} | } | |||
} | } | |||
grouping central-public-key-ref-grouping { | grouping central-public-key-ref-grouping { | |||
description | description | |||
"Grouping for the reference to a public key in a | "Grouping for the reference to a public key in a | |||
public-key-bag in the central truststore."; | public-key-bag in the central truststore."; | |||
leaf public-key-bag { | leaf public-key-bag { | |||
nacm:default-deny-write; | nacm:default-deny-write; | |||
if-feature "central-truststore-supported"; | if-feature "central-truststore-supported"; | |||
if-feature "public-keys"; | if-feature "public-keys"; | |||
type ts:central-public-key-bag-ref; | type ts:central-public-key-bag-ref; | |||
description | description | |||
"Reference of a public key bag in the truststore including | "Reference of a public key bag in the truststore, including | |||
the certificate to authenticate the TLS client."; | the certificate to authenticate the TLS client."; | |||
} | } | |||
leaf public-key { | leaf public-key { | |||
nacm:default-deny-write; | nacm:default-deny-write; | |||
if-feature "central-truststore-supported"; | if-feature "central-truststore-supported"; | |||
if-feature "public-keys"; | if-feature "public-keys"; | |||
type ts:central-public-key-ref; | type ts:central-public-key-ref; | |||
description | description | |||
"Reference to a specific public key in the | "Reference to a specific public key in the | |||
referenced public-key-bag."; | referenced public-key-bag."; | |||
} | } | |||
} | } | |||
// inline-or-truststore-* groupings | // inline-or-truststore-* groupings | |||
grouping inline-or-truststore-certs-grouping { | grouping inline-or-truststore-certs-grouping { | |||
description | description | |||
"A grouping for the configuration of a list of certificates. | "A grouping for the configuration of a list of certificates. | |||
The list of certificate may be defined inline or as a | The list of certificates may be defined inline or as a | |||
reference to a certificate bag in the central truststore. | reference to a certificate bag in the central truststore. | |||
Servers that wish to define alternate truststore locations | Servers that wish to define alternate truststore locations | |||
MUST augment in custom 'case' statements enabling | MUST augment in custom 'case' statements, enabling | |||
references to those alternate truststore locations."; | references to those alternate truststore locations."; | |||
choice inline-or-truststore { | choice inline-or-truststore { | |||
nacm:default-deny-write; | nacm:default-deny-write; | |||
mandatory true; | mandatory true; | |||
description | description | |||
"A choice between an inlined definition and a definition | "A choice between an inlined definition and a definition | |||
that exists in the truststore."; | that exists in the truststore."; | |||
case inline { | case inline { | |||
if-feature "inline-definitions-supported"; | if-feature "inline-definitions-supported"; | |||
container inline-definition { | container inline-definition { | |||
skipping to change at line 1191 ¶ | skipping to change at line 1130 ¶ | |||
description | description | |||
"A reference to a certificate bag that exists in the | "A reference to a certificate bag that exists in the | |||
central truststore."; | central truststore."; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
grouping inline-or-truststore-public-keys-grouping { | grouping inline-or-truststore-public-keys-grouping { | |||
description | description | |||
"A grouping that allows the public keys to be either | "A grouping that allows the public keys to either be | |||
configured locally, within the using data model, or be a | configured locally, within the data model being used, or be a | |||
reference to a public key bag stored in the truststore. | reference to a public key bag stored in the truststore. | |||
Servers that wish to define alternate truststore locations | Servers that wish to define alternate truststore locations | |||
SHOULD augment in custom 'case' statements enabling | SHOULD augment in custom 'case' statement, enabling | |||
references to those alternate truststore locations."; | references to those alternate truststore locations."; | |||
choice inline-or-truststore { | choice inline-or-truststore { | |||
nacm:default-deny-write; | nacm:default-deny-write; | |||
mandatory true; | mandatory true; | |||
description | description | |||
"A choice between an inlined definition and a definition | "A choice between an inlined definition and a definition | |||
that exists in the truststore."; | that exists in the truststore."; | |||
case inline { | case inline { | |||
if-feature "inline-definitions-supported"; | if-feature "inline-definitions-supported"; | |||
container inline-definition { | container inline-definition { | |||
skipping to change at line 1295 ¶ | skipping to change at line 1234 ¶ | |||
container public-key-bags { | container public-key-bags { | |||
nacm:default-deny-write; | nacm:default-deny-write; | |||
if-feature "public-keys"; | if-feature "public-keys"; | |||
description | description | |||
"A collection of public key bags."; | "A collection of public key bags."; | |||
list public-key-bag { | list public-key-bag { | |||
key "name"; | key "name"; | |||
description | description | |||
"A bag of public keys. Each bag of keys SHOULD be for | "A bag of public keys. Each bag of keys SHOULD be for | |||
a specific purpose. For instance, one bag could be used | a specific purpose. For instance, one bag could be used | |||
authenticate a specific set of servers, while another | to authenticate a specific set of servers, while another | |||
could be used to authenticate a specific set of clients."; | could be used to authenticate a specific set of clients."; | |||
leaf name { | leaf name { | |||
type string; | type string; | |||
description | description | |||
"An arbitrary name for this bag of public keys."; | "An arbitrary name for this bag of public keys."; | |||
} | } | |||
leaf description { | leaf description { | |||
type string; | type string; | |||
description | description | |||
"A description for this bag public keys. The | "A description for this bag of public keys. The | |||
intended purpose for the bag MUST be described."; | intended purpose for the bag MUST be described."; | |||
} | } | |||
list public-key { | list public-key { | |||
key "name"; | key "name"; | |||
description | description | |||
"A public key."; | "A public key."; | |||
leaf name { | leaf name { | |||
type string; | type string; | |||
description | description | |||
"An arbitrary name for this public key."; | "An arbitrary name for this public key."; | |||
} | } | |||
uses ct:public-key-grouping; | uses ct:public-key-grouping; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
/*********************************/ | /*********************************/ | |||
/* Protocol accessible nodes */ | /* Protocol-accessible nodes */ | |||
/*********************************/ | /*********************************/ | |||
container truststore { | container truststore { | |||
if-feature central-truststore-supported; | if-feature "central-truststore-supported"; | |||
nacm:default-deny-write; | nacm:default-deny-write; | |||
description | description | |||
"The truststore contains bags of certificates and | "The truststore contains bags of certificates and | |||
public keys."; | public keys."; | |||
uses truststore-grouping; | uses truststore-grouping; | |||
} | } | |||
} | } | |||
]]></artwork> | ]]></sourcecode> | |||
<t keepWithPrevious="true"><CODE ENDS></t> | ||||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="built-ins"> | <section anchor="built-ins"> | |||
<name>Support for Built-in Trust Anchors</name> | <name>Support for Built-In Trust Anchors</name> | |||
<t>In some implementations, a server may define some built-in trust anchor s. | <t>In some implementations, a server may define some built-in trust anchor s. | |||
For instance, there may be built-in trust anchors enabling the server to | For instance, there may be built-in trust anchors enabling the server to | |||
securely connect to well-known services (e.g., an SZTP <xref target="R | securely connect to well-known services (e.g., a Secure Zero-Touch Pro | |||
FC8572"/> | visioning (SZTP) <xref target="RFC8572"/> | |||
bootstrap server) or public CA certificates to connect to arbitrary We | bootstrap server) or public Certification Authority (CA) certificates | |||
b | to connect to arbitrary web | |||
services using public PKI.</t> | services using PKI.</t> | |||
<t>Built-in trust anchors are expected to be set by a vendor-specific proc ess. | <t>Built-in trust anchors are expected to be set by a vendor-specific proc ess. | |||
Any ability for operators to set and/or modify built-in trust anchors is outside the | Any ability for operators to set and/or modify built-in trust anchors is outside the | |||
scope of this document.</t> | scope of this document.</t> | |||
<t>The primary characteristic of the built-in trust anchors is that they a re | <t>The primary characteristic of the built-in trust anchors is that they a re | |||
provided by the server, as opposed to configuration. As such, they ar e present in | provided by the server, as opposed to configuration. As such, they ar e present in | |||
<operational> (<xref section="5.3" target="RFC8342"/>), and < system> | <operational> (<xref section="5.3" sectionFormat="of" target="RF C8342"/>) and <system> | |||
<xref target="I-D.ietf-netmod-system-config"/>, if implemented.</t> | <xref target="I-D.ietf-netmod-system-config"/>, if implemented.</t> | |||
<t>The example below illustrates what the truststore in <operational> ; | <t>The example below illustrates what the truststore in <operational> ; | |||
might look like for a server in its factory default state. Note that the | might look like for a server in its factory default state. Note that the | |||
built-in trust anchor bags have the "or:origin" annotation value "or:s | built-in trust anchor bags have the "or:origin" annotation value "or:syste | |||
ystem".</t> | m".</t> | |||
<artwork><![CDATA[ | <sourcecode type="xml"><![CDATA[ | |||
<truststore | <truststore | |||
xmlns="urn:ietf:params:xml:ns:yang:ietf-truststore" | xmlns="urn:ietf:params:xml:ns:yang:ietf-truststore" | |||
xmlns:ct="urn:ietf:params:xml:ns:yang:ietf-crypto-types" | xmlns:ct="urn:ietf:params:xml:ns:yang:ietf-crypto-types" | |||
xmlns:or="urn:ietf:params:xml:ns:yang:ietf-origin" | xmlns:or="urn:ietf:params:xml:ns:yang:ietf-origin" | |||
or:origin="or:intended"> | or:origin="or:intended"> | |||
<certificate-bags> | <certificate-bags> | |||
<certificate-bag or:origin="or:system"> | <certificate-bag or:origin="or:system"> | |||
<name>Built-In Manufacturer Trust Anchor Certificates</name> | <name>Built-In Manufacturer Trust Anchor Certificates</name> | |||
<description> | <description> | |||
skipping to change at line 1401 ¶ | skipping to change at line 1339 ¶ | |||
<cert-data>BASE64VALUE=</cert-data> | <cert-data>BASE64VALUE=</cert-data> | |||
</certificate> | </certificate> | |||
<certificate> | <certificate> | |||
<name>Public Root CA Cert 3</name> | <name>Public Root CA Cert 3</name> | |||
<cert-data>BASE64VALUE=</cert-data> | <cert-data>BASE64VALUE=</cert-data> | |||
</certificate> | </certificate> | |||
</certificate-bag> | </certificate-bag> | |||
</certificate-bags> | </certificate-bags> | |||
</truststore> | </truststore> | |||
]]></artwork> | ]]></sourcecode> | |||
<!-- | ||||
<t>Built-in bags of trust anchors and/or specific trust anchors, that ar | ||||
e | ||||
referenced by configuration (e.g., a "leafref"), MUST be present in a | ||||
datastore in order for the datastore to be valid.</t> | ||||
<t>Built-in bags and/or their trust anchors MAY be copied into other par | ||||
ts | ||||
of the configuration but, by doing so, they lose their association to | ||||
the | ||||
built-in entries and any assurances afforded by knowing they are/were | ||||
built-in.</t> | ||||
<t>The following example illustrates how a single built-in public CA | ||||
certificate from the previous example has been propagated to <inten | ||||
ded>:</t> | ||||
<t> | ||||
<figure> | ||||
<artwork><![CDATA[ | ||||
<truststore | ||||
xmlns="urn:ietf:params:xml:ns:yang:ietf-truststore" | ||||
xmlns:ct="urn:ietf:params:xml:ns:yang:ietf-crypto-types"> | ||||
<certificate-bags> | ||||
<certificate-bag> | ||||
<name>Built-In Public Trust Anchor Certificates</name> | ||||
<description> | ||||
Certificates built into the device for authenticating | ||||
certificates issued by public certificate authorities, | ||||
such as the end-entity certificate for web servers. | ||||
Only the subset of the certificates that are referenced | ||||
by other configuration nodes need to be copied. For | ||||
instance, only "Public Root CA Cert 3" is present here. | ||||
No new certificates can be added, nor existing certificate | ||||
values changed. Missing certificates have no effect on | ||||
"operational" when the configuration is applied. | ||||
</description> | ||||
<certificate> | ||||
<name>Public Root CA Cert 3</name> | ||||
<cert-data>BASE64VALUE=</cert-data> | ||||
</certificate> | ||||
</certificate-bag> | ||||
</certificate-bags> | ||||
</truststore> | ||||
]]></artwork> | ||||
</figure> | ||||
</t> | ||||
--> | ||||
</section> | </section> | |||
<section> | <section> | |||
<name>Security Considerations</name> | <name>Security Considerations</name> | |||
<section> | <section> | |||
<name>Security of Data at Rest</name> | <name>Security of Data at Rest</name> | |||
<t>The YANG module defined in this document defines a mechanism called a | <t>The YANG module specified in this document defines a mechanism called a | |||
"truststore" that, by its name, suggests that its contents are prote cted | "truststore" that, by its name, suggests that its contents are prote cted | |||
from unauthorized modification.</t> | from unauthorized modification.</t> | |||
<t>Security controls for the API (i.e., data in motion) are | <t>Security controls for the API (i.e., data in motion) are | |||
discussed in <xref target="sec-mod"/>, but controls for the | discussed in <xref target="sec-mod"/>, but controls for the | |||
data at rest (e.g., on disk) cannot be specified by the YANG module. </t> | data at rest (e.g., on disk) cannot be specified by the YANG module. </t> | |||
<t>In order to satisfy the expectations of a "truststore", server | <t>In order to satisfy the expectations of a "truststore", server | |||
implementations MUST ensure that the truststore contents are protect ed | implementations <bcp14>MUST</bcp14> ensure that the truststore conte nts are protected | |||
from unauthorized modifications when at rest.</t> | from unauthorized modifications when at rest.</t> | |||
</section> | </section> | |||
<section> | <section> | |||
<name>Unconstrained Public Key Usage</name> | <name>Unconstrained Public Key Usage</name> | |||
<t>This module enables the configuration of public keys without | <t>This module enables the configuration of public keys without | |||
constraints on their usage, e.g., what operations the key is | constraints on their usage, e.g., what operations the key is | |||
allowed to be used for (encryption, verification, both).</t> | allowed to be used for (encryption, verification, or both).</t> | |||
<t>Trust anchors configured via this module are implicitly trusted | <t>Trust anchors configured via this module are implicitly trusted | |||
to validate certification paths that may include any name, be | to validate certification paths that may include any name, be | |||
used for any purpose, subject to constraints imposed | used for any purpose, or be subject to constraints imposed | |||
by an intermediate CA or by context in which the truststore is | by an intermediate CA or by context in which the truststore is | |||
used. Implementations are free to use alternative or auxiliary | used. Implementations are free to use alternative or auxiliary | |||
structures and validation rules to define constraints that | structures and validation rules to define constraints that | |||
limit the applicability of a trust anchor.</t> | limit the applicability of a trust anchor.</t> | |||
</section> | </section> | |||
<section anchor="sec-mod"> | <section anchor="sec-mod"> | |||
<name>Considerations for the "ietf-truststore" YANG Module</name> | <name>Considerations for the "ietf-truststore" YANG Module</name> | |||
<t>This section follows the template defined in <xref section="3.7.1" ta | <t>This section is modeled after the template defined in <xref section=" | |||
rget="RFC8407"/>.</t> | 3.7.1" sectionFormat="of" target="RFC8407"/>.</t> | |||
<t>The YANG module defined in this document is designed to be accessed v | <t>The "ietf-truststore" YANG module defines "grouping" and "container" | |||
ia YANG | statements that are designed to be accessed via YANG-based management protocols | |||
based management protocols, such as NETCONF <xref target="RFC6241"/> | , such as NETCONF <xref target="RFC6241"/> and | |||
and | RESTCONF <xref target="RFC8040"/>. These protocols have mandatory-t | |||
RESTCONF <xref target="RFC8040"/>. Both of these protocols have man | o-implement | |||
datory-to-implement | secure transport layers (e.g., Secure Shell (SSH) <xref target="RFC4 | |||
secure transport layers (e.g., SSH, TLS) with mutual authentication. | 252"/>, TLS <xref target="RFC8446"/>, and QUIC <xref target="RFC9000"/>) and man | |||
</t> | datory-to-implement mutual authentication.</t> | |||
<t>The Network Access Control Model (NACM) <xref target="RFC8341"/> prov | <t>The Network Configuration Access Control Model (NACM) <xref target="R | |||
ides the means | FC8341"/> provides the means | |||
to restrict access for particular users to a pre-configured subset o | to restrict access for particular users to a preconfigured subset of all | |||
f all available | available | |||
protocol operations and content.</t> | protocol operations and content.</t> | |||
<t>Please be aware that this YANG module uses groupings from | <t>Please be aware that this YANG module uses groupings from | |||
other YANG modules that define nodes that may be considered | other YANG modules that define nodes that may be considered | |||
sensitive or vulnerable in network environments. Please | sensitive or vulnerable in network environments. Please | |||
review the Security Considerations for dependent YANG modules | review the security considerations for dependent YANG modules | |||
for information as to which nodes may be considered sensitive | for information as to which nodes may be considered sensitive | |||
or vulnerable in network environments.</t> | or vulnerable in network environments.</t> | |||
<t>Most of the readable data nodes defined in this YANG module | <t>Most of the readable data nodes defined in this YANG module | |||
are not considered sensitive or vulnerable in network environments. | are not considered sensitive or vulnerable in network environments. | |||
However, the "cert-data" node uses the NACM "default-deny-all" | However, the "cert-data" node uses the NACM "default-deny-all" | |||
extension, for reasons described in <xref section="3.9" target="I-D. ietf-netconf-crypto-types"/>.</t> | extension for reasons described in <xref section="3.8" sectionFormat ="of" target="RFC9640"/>.</t> | |||
<t>All the writable data nodes defined by this module, both in the | <t>All the writable data nodes defined by this module, both in the | |||
"grouping" statements as well as the protocol-accessible "truststore " | "grouping" statements as well as the protocol-accessible "truststore " | |||
instance, may be considered sensitive or vulnerable in some network | instance, may be considered sensitive or vulnerable in some network | |||
environments. For instance, any modification to a trust anchor or | environments. For instance, any modification to a trust anchor or | |||
reference to a trust anchor may dramatically alter the implemented | reference to a trust anchor may dramatically alter the implemented | |||
security policy. For this reason, the NACM extension "default-deny- write" | security policy. For this reason, the NACM "default-deny-write" ext ension | |||
has been set for all data nodes defined in this module.</t> | has been set for all data nodes defined in this module.</t> | |||
<t>This module does not define any "rpc" or "action" statements, and | <t>This module does not define any "rpc" or "action" statements, and | |||
thus the security considerations for such is not provided here.</t> | thus, the security considerations for such are not provided here.</t > | |||
</section> | </section> | |||
</section> | </section> | |||
<section> | <section> | |||
<name>IANA Considerations</name> | <name>IANA Considerations</name> | |||
<section> | <section> | |||
<name>The "IETF XML" Registry</name> | <name>The IETF XML Registry</name> | |||
<t>This document registers one URI in the "ns" subregistry of | <t>IANA has registered the following URI in the "ns" registry defined of | |||
the IETF XML Registry <xref target="RFC3688"/>. Following the | the "IETF XML Registry" <xref target="RFC3688"/>.</t> | |||
format in <xref target="RFC3688"/>, the following registration | <dl newline="false" spacing="compact"> | |||
is requested:</t> | <dt>URI:</dt> <dd>urn:ietf:params:xml:ns:yang:ietf-truststore</dd> | |||
<artwork><![CDATA[ | <dt>Registrant Contact:</dt> <dd>The IESG</dd> | |||
URI: urn:ietf:params:xml:ns:yang:ietf-truststore | <dt>XML:</dt> <dd>N/A; the requested URI is an XML namespace.</dd> | |||
Registrant Contact: The IESG | </dl> | |||
XML: N/A, the requested URI is an XML namespace. | ||||
]]></artwork> | ||||
</section> | </section> | |||
<section> | <section> | |||
<name>The "YANG Module Names" Registry</name> | <name>The YANG Module Names Registry</name> | |||
<t>This document registers one YANG module in the | <t>IANA has registered the following YANG module in the "YANG Module Nam | |||
YANG Module Names registry <xref target="RFC6020"/>. | es" registry defined in <xref target="RFC6020"/>.</t> | |||
Following the format in <xref target="RFC6020"/>, the | <dl newline="false" spacing="compact"> | |||
following registration is requested:</t> | <dt>Name:</dt> <dd>ietf-truststore</dd> | |||
<artwork><![CDATA[ | <dt>Namespace:</dt> <dd>urn:ietf:params:xml:ns:yang:ietf-truststore</dd> | |||
name: ietf-truststore | <dt>Prefix:</dt> <dd>ts</dd> | |||
namespace: urn:ietf:params:xml:ns:yang:ietf-truststore | <dt>Reference:</dt> <dd>RFC 9641</dd> | |||
prefix: ts | </dl> | |||
reference: RFC BBBB | ||||
]]></artwork> | ||||
</section> | </section> | |||
</section> | </section> | |||
</middle> | </middle> | |||
<back> | <back> | |||
<displayreference target="I-D.ietf-netconf-http-client-server" | ||||
to="HTTP-CLIENT-SERVER"/> | ||||
<displayreference target="I-D.ietf-netconf-netconf-client-server" | ||||
to="NETCONF-CLIENT-SERVER"/> | ||||
<displayreference target="I-D.ietf-netconf-restconf-client-server" | ||||
to="RESTCONF-CLIENT-SERVER"/> | ||||
<displayreference target="I-D.ietf-netmod-system-config" to="NETMOD-SYSTEM-C | ||||
ONFIG"/> | ||||
<references> | <references> | |||
<name>References</name> | <name>References</name> | |||
<references> | <references> | |||
<name>Normative References</name> | <name>Normative References</name> | |||
<reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2 | ||||
119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.21 | |||
<front> | 19.xml"/> | |||
<title>Key words for use in RFCs to Indicate Requirement Levels</tit | <xi:include | |||
le> | href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4252.xml"/> | |||
<author fullname="S. Bradner" initials="S." surname="Bradner"/> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.62 | |||
<date month="March" year="1997"/> | 41.xml"/> | |||
<abstract> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.79 | |||
<t>In many standards track documents several words are used to sig | 50.xml"/> | |||
nify the requirements in the specification. These words are often capitalized. T | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.80 | |||
his document defines these words as they should be interpreted in IETF documents | 40.xml"/> | |||
. This document specifies an Internet Best Current Practices for the Internet Co | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.81 | |||
mmunity, and requests discussion and suggestions for improvements.</t> | 74.xml"/> | |||
</abstract> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.83 | |||
</front> | 41.xml"/> | |||
<seriesInfo name="BCP" value="14"/> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.84 | |||
<seriesInfo name="RFC" value="2119"/> | 46.xml"/> | |||
<seriesInfo name="DOI" value="10.17487/RFC2119"/> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.90 | |||
</reference> | 00.xml"/> | |||
<reference anchor="RFC7950" target="https://www.rfc-editor.org/info/rfc7 | ||||
950" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7950.xml"> | <reference anchor="RFC9640" target="https://www.rfc-editor.org/info/rfc9 | |||
<front> | 640"> | |||
<title>The YANG 1.1 Data Modeling Language</title> | <front> | |||
<author fullname="M. Bjorklund" initials="M." role="editor" surname= | <title>YANG Data Types and Groupings for Cryptography</title> | |||
"Bjorklund"/> | <author initials="K." surname="Watsen" fullname="Kent Watsen"> | |||
<date month="August" year="2016"/> | <organization>Watsen Networks</organization> | |||
<abstract> | </author> | |||
<t>YANG is a data modeling language used to model configuration da | <date month="October" year="2024"/> | |||
ta, state data, Remote Procedure Calls, and notifications for network management | </front> | |||
protocols. This document describes the syntax and semantics of version 1.1 of t | <seriesInfo name="RFC" value="9640"/> | |||
he YANG language. YANG version 1.1 is a maintenance release of the YANG language | <seriesInfo name="DOI" value="10.17487/RFC9640"/> | |||
, addressing ambiguities and defects in the original specification. There are a | </reference> | |||
small number of backward incompatibilities from YANG version 1. This document al | ||||
so specifies the YANG mappings to the Network Configuration Protocol (NETCONF).< | ||||
/t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="7950"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC7950"/> | ||||
</reference> | ||||
<reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8 | ||||
174" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"> | ||||
<front> | ||||
<title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</ti | ||||
tle> | ||||
<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 protoco | ||||
l 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="RFC8341" target="https://www.rfc-editor.org/info/rfc8 | ||||
341" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8341.xml"> | ||||
<front> | ||||
<title>Network Configuration Access Control Model</title> | ||||
<author fullname="A. Bierman" initials="A." surname="Bierman"/> | ||||
<author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/> | ||||
<date month="March" year="2018"/> | ||||
<abstract> | ||||
<t>The standardization of network configuration interfaces for use | ||||
with the Network Configuration Protocol (NETCONF) or the RESTCONF protocol requ | ||||
ires a structured and secure operating environment that promotes human usability | ||||
and multi-vendor interoperability. There is a need for standard mechanisms to r | ||||
estrict NETCONF or RESTCONF protocol access for particular users to a preconfigu | ||||
red subset of all available NETCONF or RESTCONF protocol operations and content. | ||||
This document defines such an access control model.</t> | ||||
<t>This document obsoletes RFC 6536.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="STD" value="91"/> | ||||
<seriesInfo name="RFC" value="8341"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8341"/> | ||||
</reference> | ||||
<xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D | ||||
.ietf-netconf-crypto-types.xml"/> | ||||
</references> | </references> | |||
<references> | <references> | |||
<name>Informative References</name> | <name>Informative References</name> | |||
<reference anchor="RFC3688" target="https://www.rfc-editor.org/info/rfc3 | ||||
688" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3688.xml"> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.36 | |||
<front> | 88.xml"/> | |||
<title>The IETF XML Registry</title> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.60 | |||
<author fullname="M. Mealling" initials="M." surname="Mealling"/> | 20.xml"/> | |||
<date month="January" year="2004"/> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.82 | |||
<abstract> | 59.xml"/> | |||
<t>This document describes an IANA maintained registry for IETF st | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.83 | |||
andards which use Extensible Markup Language (XML) related items such as Namespa | 40.xml"/> | |||
ces, Document Type Declarations (DTDs), Schemas, and Resource Description Framew | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.83 | |||
ork (RDF) Schemas.</t> | 42.xml"/> | |||
</abstract> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.84 | |||
</front> | 07.xml"/> | |||
<seriesInfo name="BCP" value="81"/> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.85 | |||
<seriesInfo name="RFC" value="3688"/> | 72.xml"/> | |||
<seriesInfo name="DOI" value="10.17487/RFC3688"/> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.87 | |||
</reference> | 92.xml"/> | |||
<reference anchor="RFC4648" target="https://www.rfc-editor.org/info/rfc4 | ||||
648" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4648.xml"> | <reference anchor="RFC9642" target="https://www.rfc-editor.org/info/rfc9 | |||
<front> | 642"> | |||
<title>The Base16, Base32, and Base64 Data Encodings</title> | <front> | |||
<author fullname="S. Josefsson" initials="S." surname="Josefsson"/> | <title>A YANG Data Model for a Keystore</title> | |||
<date month="October" year="2006"/> | <author initials="K." surname="Watsen" fullname="Kent Watsen"> | |||
<abstract> | <organization>Watsen Networks</organization> | |||
<t>This document describes the commonly used base 64, base 32, and | </author> | |||
base 16 encoding schemes. It also discusses the use of line-feeds in encoded da | <date month="October" year="2024"/> | |||
ta, use of padding in encoded data, use of non-alphabet characters in encoded da | </front> | |||
ta, use of different encoding alphabets, and canonical encodings. [STANDARDS-TRA | <seriesInfo name="RFC" value="9642"/> | |||
CK]</t> | <seriesInfo name="DOI" value="10.17487/RFC9642"/> | |||
</abstract> | </reference> | |||
</front> | ||||
<seriesInfo name="RFC" value="4648"/> | <reference anchor="RFC9643" target="https://www.rfc-editor.org/info/rfc9 | |||
<seriesInfo name="DOI" value="10.17487/RFC4648"/> | 643"> | |||
</reference> | <front> | |||
<reference anchor="RFC6020" target="https://www.rfc-editor.org/info/rfc6 | <title>YANG Groupings for TCP Clients and TCP Servers</title> | |||
020" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6020.xml"> | <author initials="K." surname="Watsen" fullname="Kent Watsen"> | |||
<front> | <organization>Watsen Networks</organization> | |||
<title>YANG - A Data Modeling Language for the Network Configuration | </author> | |||
Protocol (NETCONF)</title> | <author initials="M." surname="Scharf" fullname="Michael Scharf"> | |||
<author fullname="M. Bjorklund" initials="M." role="editor" surname= | <organization>Hochschule Esslingen - University of Applied Sciences | |||
"Bjorklund"/> | </organization> | |||
<date month="October" year="2010"/> | </author> | |||
<abstract> | <date month="October" year="2024"/> | |||
<t>YANG is a data modeling language used to model configuration an | </front> | |||
d state data manipulated by the Network Configuration Protocol (NETCONF), NETCON | <seriesInfo name="RFC" value="9643"/> | |||
F remote procedure calls, and NETCONF notifications. [STANDARDS-TRACK]</t> | <seriesInfo name="DOI" value="10.17487/RFC9643"/> | |||
</abstract> | </reference> | |||
</front> | ||||
<seriesInfo name="RFC" value="6020"/> | <reference anchor="RFC9644" target="https://www.rfc-editor.org/info/rfc9 | |||
<seriesInfo name="DOI" value="10.17487/RFC6020"/> | 644"> | |||
</reference> | <front> | |||
<reference anchor="RFC6241" target="https://www.rfc-editor.org/info/rfc6 | <title>YANG Groupings for SSH Clients and SSH Servers</title> | |||
241" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6241.xml"> | <author initials="K." surname="Watsen" fullname="Kent Watsen"> | |||
<front> | <organization>Watsen Networks</organization> | |||
<title>Network Configuration Protocol (NETCONF)</title> | </author> | |||
<author fullname="R. Enns" initials="R." role="editor" surname="Enns | <date month="October" year="2024"/> | |||
"/> | </front> | |||
<author fullname="M. Bjorklund" initials="M." role="editor" surname= | <seriesInfo name="RFC" value="9644"/> | |||
"Bjorklund"/> | <seriesInfo name="DOI" value="10.17487/RFC9644"/> | |||
<author fullname="J. Schoenwaelder" initials="J." role="editor" surn | </reference> | |||
ame="Schoenwaelder"/> | ||||
<author fullname="A. Bierman" initials="A." role="editor" surname="B | <reference anchor="RFC9645" target="https://www.rfc-editor.org/info/rfc9 | |||
ierman"/> | 645"> | |||
<date month="June" year="2011"/> | <front> | |||
<abstract> | <title>YANG Groupings for TLS Clients and TLS Servers</title> | |||
<t>The Network Configuration Protocol (NETCONF) defined in this do | <author initials="K." surname="Watsen" fullname="Kent Watsen"> | |||
cument provides mechanisms to install, manipulate, and delete the configuration | <organization>Watsen Networks</organization> | |||
of network devices. It uses an Extensible Markup Language (XML)-based data encod | </author> | |||
ing for the configuration data as well as the protocol messages. The NETCONF pro | <date month="October" year="2024"/> | |||
tocol operations are realized as remote procedure calls (RPCs). This document ob | </front> | |||
soletes RFC 4741. [STANDARDS-TRACK]</t> | <seriesInfo name="RFC" value="9645"/> | |||
</abstract> | <seriesInfo name="DOI" value="10.17487/RFC9645"/> | |||
</front> | </reference> | |||
<seriesInfo name="RFC" value="6241"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC6241"/> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-net | |||
</reference> | conf-http-client-server"/> | |||
<reference anchor="RFC8040" target="https://www.rfc-editor.org/info/rfc8 | ||||
040" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8040.xml"> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-net | |||
<front> | conf-netconf-client-server"/> | |||
<title>RESTCONF Protocol</title> | ||||
<author fullname="A. Bierman" initials="A." surname="Bierman"/> | <xi:include | |||
<author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/> | href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-netconf-restcon | |||
<author fullname="K. Watsen" initials="K." surname="Watsen"/> | f-client-server"/> | |||
<date month="January" year="2017"/> | ||||
<abstract> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-net | |||
<t>This document describes an HTTP-based protocol that provides a | mod-system-config.xml"/> | |||
programmatic interface for accessing data defined in YANG, using the datastore c | ||||
oncepts defined in the Network Configuration Protocol (NETCONF).</t> | <reference anchor="W3C.REC-xml-20081126" | |||
</abstract> | target="https://www.w3.org/TR/2008/REC-xml-20081126/"> | |||
</front> | <front> | |||
<seriesInfo name="RFC" value="8040"/> | <title>Extensible Markup Language (XML) 1.0 | |||
<seriesInfo name="DOI" value="10.17487/RFC8040"/> | (Fifth Edition)</title> | |||
</reference> | <author initials="T." surname="Bray" fullname="Tim Bray"/> | |||
<reference anchor="RFC8340" target="https://www.rfc-editor.org/info/rfc8 | <author initials="J." surname="Paoli" fullname="Jean Paoli"/> | |||
340" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8340.xml"> | <author initials="C.M." surname="Sperberg-McQueen" fullname="C. M. | |||
<front> | Sperberg-McQueen"/> | |||
<title>YANG Tree Diagrams</title> | <author initials="E." surname="Maler" fullname="Eve Maler"/> | |||
<author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/> | <author initials="F." surname="Yergeau" fullname="François Yergeau"/> | |||
<author fullname="L. Berger" initials="L." role="editor" surname="Be | <date month="November" year="2008"/> | |||
rger"/> | </front> | |||
<date month="March" year="2018"/> | <seriesInfo name="World Wide Web Consortium | |||
<abstract> | Recommendation" value="REC-xml-20081126"/> | |||
<t>This document captures the current syntax used in YANG module t | </reference> | |||
ree diagrams. The purpose of this document is to provide a single location for t | </references> | |||
his definition. This syntax may be updated from time to time based on the evolut | ||||
ion of the YANG language.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="BCP" value="215"/> | ||||
<seriesInfo name="RFC" value="8340"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8340"/> | ||||
</reference> | ||||
<reference anchor="RFC8342" target="https://www.rfc-editor.org/info/rfc8 | ||||
342" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8342.xml"> | ||||
<front> | ||||
<title>Network Management Datastore Architecture (NMDA)</title> | ||||
<author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/> | ||||
<author fullname="J. Schoenwaelder" initials="J." surname="Schoenwae | ||||
lder"/> | ||||
<author fullname="P. Shafer" initials="P." surname="Shafer"/> | ||||
<author fullname="K. Watsen" initials="K." surname="Watsen"/> | ||||
<author fullname="R. Wilton" initials="R." surname="Wilton"/> | ||||
<date month="March" year="2018"/> | ||||
<abstract> | ||||
<t>Datastores are a fundamental concept binding the data models wr | ||||
itten in the YANG data modeling language to network management protocols such as | ||||
the Network Configuration Protocol (NETCONF) and RESTCONF. This document define | ||||
s an architectural framework for datastores based on the experience gained with | ||||
the initial simpler model, addressing requirements that were not well supported | ||||
in the initial model. This document updates RFC 7950.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8342"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8342"/> | ||||
</reference> | ||||
<reference anchor="RFC8407" target="https://www.rfc-editor.org/info/rfc8 | ||||
407" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8407.xml"> | ||||
<front> | ||||
<title>Guidelines for Authors and Reviewers of Documents Containing | ||||
YANG Data Models</title> | ||||
<author fullname="A. Bierman" initials="A." surname="Bierman"/> | ||||
<date month="October" year="2018"/> | ||||
<abstract> | ||||
<t>This memo provides guidelines for authors and reviewers of spec | ||||
ifications containing YANG modules. Recommendations and procedures are defined, | ||||
which are intended to increase interoperability and usability of Network Configu | ||||
ration Protocol (NETCONF) and RESTCONF protocol implementations that utilize YAN | ||||
G modules. This document obsoletes RFC 6087.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="BCP" value="216"/> | ||||
<seriesInfo name="RFC" value="8407"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8407"/> | ||||
</reference> | ||||
<reference anchor="RFC8572" target="https://www.rfc-editor.org/info/rfc8 | ||||
572" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8572.xml"> | ||||
<front> | ||||
<title>Secure Zero Touch Provisioning (SZTP)</title> | ||||
<author fullname="K. Watsen" initials="K." surname="Watsen"/> | ||||
<author fullname="I. Farrer" initials="I." surname="Farrer"/> | ||||
<author fullname="M. Abrahamsson" initials="M." surname="Abrahamsson | ||||
"/> | ||||
<date month="April" year="2019"/> | ||||
<abstract> | ||||
<t>This document presents a technique to securely provision a netw | ||||
orking device when it is booting in a factory-default state. Variations in the s | ||||
olution enable it to be used on both public and private networks. The provisioni | ||||
ng steps are able to update the boot image, commit an initial configuration, and | ||||
execute arbitrary scripts to address auxiliary needs. The updated device is sub | ||||
sequently able to establish secure connections with other systems. For instance, | ||||
a device may establish NETCONF (RFC 6241) and/or RESTCONF (RFC 8040) connection | ||||
s with deployment-specific network management systems.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8572"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8572"/> | ||||
</reference> | ||||
<xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D | ||||
.ietf-netconf-trust-anchors.xml"/> | ||||
<xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D | ||||
.ietf-netconf-keystore.xml"/> | ||||
<xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D | ||||
.ietf-netconf-tcp-client-server.xml"/> | ||||
<xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D | ||||
.ietf-netconf-ssh-client-server.xml"/> | ||||
<xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D | ||||
.ietf-netconf-tls-client-server.xml"/> | ||||
<xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D | ||||
.ietf-netconf-http-client-server.xml"/> | ||||
<xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D | ||||
.ietf-netconf-netconf-client-server.xml"/> | ||||
<xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D | ||||
.ietf-netconf-restconf-client-server.xml"/> | ||||
<xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D | ||||
.ietf-netmod-system-config.xml"/> | ||||
</references> | ||||
</references> | </references> | |||
<section anchor="change-log"> | ||||
<name>Change Log</name> | ||||
<section> | ||||
<name>00 to 01</name> | ||||
<ul spacing="normal"> | ||||
<li>Added features "x509-certificates" and "ssh-host-keys".</li> | ||||
<li>Added nacm:default-deny-write to "trust-anchors" container.</li> | ||||
</ul> | ||||
</section> | ||||
<section> | ||||
<name>01 to 02</name> | ||||
<ul spacing="normal"> | ||||
<li>Switched "list pinned-certificate" to use the | ||||
"trust-anchor-cert-grouping" from crypto-types. | ||||
Effectively the same definition as before.</li> | ||||
</ul> | ||||
</section> | ||||
<section> | ||||
<name>02 to 03</name> | ||||
<ul spacing="normal"> | ||||
<li>Updated copyright date, boilerplate template, affiliation, | ||||
folding algorithm, and reformatted the YANG module.</li> | ||||
</ul> | ||||
</section> | ||||
<section> | ||||
<name>03 to 04</name> | ||||
<ul spacing="normal"> | ||||
<li>Added groupings 'inline-or-truststore-certs-grouping' | ||||
and 'inline-or-truststore-host-keys-grouping', matching | ||||
similar definitions in the keystore draft. Note new | ||||
(and incomplete) "truststore" usage!</li> | ||||
<li>Related to above, also added features 'truststore-supported' | ||||
and 'local-trust-anchors-supported'.</li> | ||||
</ul> | ||||
</section> | ||||
<section> | ||||
<name>04 to 05</name> | ||||
<ul spacing="normal"> | ||||
<li>Renamed "trust-anchors" to "truststore"</li> | ||||
<li>Removed "pinned." prefix everywhere, to match truststore rename</l | ||||
i> | ||||
<li>Moved everything under a top-level 'grouping' to enable use in oth | ||||
er contexts.</li> | ||||
<li>Renamed feature from 'local-trust-anchors-supported' to 'inline-de | ||||
finitions-supported' (same name used in keystore)</li> | ||||
<li>Removed the "require-instance false" statement from the "*-ref" ty | ||||
pedefs.</li> | ||||
<li>Added missing "ssh-host-keys" and "x509-certificates" if-feature s | ||||
tatements</li> | ||||
</ul> | ||||
</section> | ||||
<section> | ||||
<name>05 to 06</name> | ||||
<ul spacing="normal"> | ||||
<li>Editorial changes only.</li> | ||||
</ul> | ||||
</section> | ||||
<section> | ||||
<name>06 to 07</name> | ||||
<ul spacing="normal"> | ||||
<li>Added Henk Birkholz as a co-author (thanks Henk!)</li> | ||||
<li>Added PSKs and raw public keys to truststore.</li> | ||||
</ul> | ||||
</section> | ||||
<section> | ||||
<name>07 to 08</name> | ||||
<ul spacing="normal"> | ||||
<li>Added new "Support for Built-in Trust Anchors" section.</li> | ||||
<li>Removed spurious "uses ct:trust-anchor-certs-grouping" line.</li> | ||||
<li>Removed PSK from model.</li> | ||||
</ul> | ||||
</section> | ||||
<section> | ||||
<name>08 to 09</name> | ||||
<ul spacing="normal"> | ||||
<li>Removed remaining PSK references from text.</li> | ||||
<li>Wrapped each top-level list with a container.</li> | ||||
<li>Introduced "bag" term.</li> | ||||
<li>Merged "SSH Public Keys" and "Raw Public Keys" in a single "Public | ||||
Keys" bag. | ||||
Consuming downstream modules (i.e., "ietf-[ssh/tls]-[client/serv | ||||
er]) refine | ||||
the "public-key-format" to be either SSH or TLS specific as need | ||||
ed.</li> | ||||
</ul> | ||||
</section> | ||||
<section> | ||||
<name>09 to 10</name> | ||||
<ul spacing="normal"> | ||||
<li>Removed "algorithm" node from examples.</li> | ||||
<li>Removed the no longer used statements supporting the old "ssh-publ | ||||
ic-key" and "raw-public-key" nodes.</li> | ||||
<li>Added a "Note to Reviewers" note to first page.</li> | ||||
</ul> | ||||
</section> | ||||
<section> | ||||
<name>10 to 11</name> | ||||
<ul spacing="normal"> | ||||
<li>Corrected module prefix registered in the IANA Considerations sect | ||||
ion.</li> | ||||
<li>Modified 'inline-or-truststore-certs-grouping' to use a list (not | ||||
a leaf-list).</li> | ||||
<li>Added new example section "The Local or Truststore Groupings".</li | ||||
> | ||||
<li>Clarified expected behavior for "built-in" certificates in <ope | ||||
rational></li> | ||||
<li>Expanded "Data Model Overview section(s) [remove "wall" of tree di | ||||
agrams].</li> | ||||
<li>Updated the Security Considerations section.</li> | ||||
</ul> | ||||
</section> | ||||
<section> | ||||
<name>11 to 12</name> | ||||
<ul spacing="normal"> | ||||
<li>Fixed a copy/paste issue in the "Data at Rest" Security Considerat | ||||
ions section.</li> | ||||
</ul> | ||||
</section> | ||||
<section> | ||||
<name>12 to 13</name> | ||||
<ul spacing="normal"> | ||||
<li>Fixed issues found by the SecDir review of the "keystore" draft.</ | ||||
li> | ||||
</ul> | ||||
</section> | ||||
<section> | ||||
<name>13 to 14</name> | ||||
<ul spacing="normal"> | ||||
<li>Added an "Unconstrained Public Key Usage" Security Consideration t | ||||
o address | ||||
concern raised by SecDir.</li> | ||||
<li>Addressed comments raised by YANG Doctor.</li> | ||||
</ul> | ||||
</section> | ||||
<section> | ||||
<name>14 to 15</name> | ||||
<ul spacing="normal"> | ||||
<li>Added prefixes to 'path' statements per trust-anchors/issues/1</li | ||||
> | ||||
<li>Renamed feature "truststore-supported" to "central-truststore-supp | ||||
orted".</li> | ||||
<li>Associated with above, generally moved text to refer to a "central | ||||
" truststore.</li> | ||||
<li>Removed two unecessary/unwanted "min-elements 1" and associated "p | ||||
resence" statements.</li> | ||||
<li>Aligned modules with `pyang -f` formatting.</li> | ||||
<li>Fixed nits found by YANG Doctor reviews.</li> | ||||
</ul> | ||||
</section> | ||||
<section> | ||||
<name>15 to 16</name> | ||||
<ul spacing="normal"> | ||||
<li>Replaced "base64encodedvalue==" with "BASE64VALUE=" in examples.</ | ||||
li> | ||||
<li>Minor editorial nits</li> | ||||
</ul> | ||||
</section> | ||||
<section> | ||||
<name>16 to 17</name> | ||||
<ul spacing="normal"> | ||||
<li>fixup the 'WG Web' and 'WG List' lines in YANG module(s)</li> | ||||
<li>fixup copyright (i.e., s/Simplified/Revised/) in YANG module(s)</l | ||||
i> | ||||
<li>Added Informative reference to ma-netmod-with-system</li> | ||||
</ul> | ||||
</section> | ||||
<section> | ||||
<name>17 to 18</name> | ||||
<ul spacing="normal"> | ||||
<li>Updated Security Considerations section to address comment | ||||
received from Carl Wallace.</li> | ||||
<li>Fixed examples to not have line-returns around "identity" encoding | ||||
s.</li> | ||||
<li>Fixed a couple tree diagrams to not create diagrams for "groupings | ||||
" too.</li> | ||||
<li>Added "if-feature central-truststore-supported" to top-level "trus | ||||
tore" container.</li> | ||||
</ul> | ||||
</section> | ||||
<section> | ||||
<name>18 to 19</name> | ||||
<ul spacing="normal"> | ||||
<li>Updated per Shepherd reviews impacting the suite of drafts.</li> | ||||
</ul> | ||||
</section> | ||||
<section> | ||||
<name>19 to 20</name> | ||||
<ul spacing="normal"> | ||||
<li>Updated per Shepherd reviews impacting the suite of drafts.</li> | ||||
</ul> | ||||
</section> | ||||
<section> | ||||
<name>20 to 21</name> | ||||
<ul spacing="normal"> | ||||
<li>Updated (implicitly) per Tom Petch review.</li> | ||||
<li>Updated per AD's review.</li> | ||||
<li>s/local/inline/ in feature names, grouping names, and node names.< | ||||
/li> | ||||
<li>Updated ref from 'ma-netmod-with-system' to 'ietf-netmod-system-co | ||||
nfig'.</li> | ||||
<li>Removed special handling text for built-in certs</li> | ||||
<li>Updated section on built-in trust anchors to read almost | ||||
the same as the section in the keystore draft.</li> | ||||
</ul> | ||||
</section> | ||||
<section> | ||||
<name>21 to 22</name> | ||||
<ul spacing="normal"> | ||||
<li>Mostly addresses AD review comments.</li> | ||||
<li>Also added typedefs and groupings similar to those created by Alto | ||||
WG.</li> | ||||
<li>Added note to Editor to fix line foldings.</li> | ||||
<li>Renamed "truststore" to "central truststore" throughout.</li> | ||||
<li>Removed "built-in" section text that overlaps with the "system-con | ||||
fig" draft.</li> | ||||
<li>Added "certificate-ref-grouping" and "public-key-ref-grouping"</li | ||||
> | ||||
<li>Modified typedef certificate-ref's leafref path to NOT prefix "cer | ||||
tificate-bag".</li> | ||||
<li>Modified typedef public-key-ref's leafref path to NOT prefix "publ | ||||
ic-key-bag".</li> | ||||
<li>Added groupings "certificate-ref-grouping" and "public-key-ref-gro | ||||
uping".</li> | ||||
</ul> | ||||
</section> | ||||
<section> | ||||
<name>22 to 23</name> | ||||
<ul spacing="normal"> | ||||
<li>Addresses Gen-ART review by Dale Worley.</li> | ||||
<li>Addresses review by Tom Petch.</li> | ||||
</ul> | ||||
</section> | ||||
<section> | ||||
<name>23 to 24</name> | ||||
<ul spacing="normal"> | ||||
<li>Addresses 1st-round of IESG reviews.</li> | ||||
</ul> | ||||
</section> | ||||
<section> | ||||
<name>24 to 26</name> | ||||
<ul spacing="normal"> | ||||
<li>Addresses issues found in OpsDir review of the ssh-client-server d | ||||
raft.</li> | ||||
<li>Renamed Security Considerations section s/Template for/Considerati | ||||
ons for/</li> | ||||
<li>s/defines/presents/ in a few places.</li> | ||||
<li>Add refs to where the 'operational' and 'system' datastores are de | ||||
fined.</li> | ||||
<li>Improved Security Consideration for 'cert-data' node.</li> | ||||
<li>s/should/SHOULD/ is one place</li> | ||||
</ul> | ||||
</section> | ||||
<section> | ||||
<name>26 to 28</name> | ||||
<ul spacing="normal"> | ||||
<li>Nothing changed. Only bumped for automation...</li> | ||||
</ul> | ||||
</section> | ||||
</section> | ||||
<section numbered="false"> | <section numbered="false"> | |||
<name>Acknowledgements</name> | <name>Acknowledgements</name> | |||
<t>The authors especially thank Henk Birkholz for contributing YANG | <t>The authors especially thank <contact fullname="Henk Birkholz"/> for co | |||
to the ietf-truststore module supporting raw public keys and PSKs | ntributing YANG | |||
to the "ietf-truststore" module supporting raw public keys and PSKs | ||||
(pre-shared or pairwise-symmetric keys). While these contributions | (pre-shared or pairwise-symmetric keys). While these contributions | |||
were eventually replaced by reusing the existing support for | were eventually replaced by reusing the existing support for | |||
asymmetric and symmetric trust anchors, respectively, it was only | asymmetric and symmetric trust anchors, respectively, it was only | |||
through Henk's initiative that the WG was able to come to that result. </t> | through Henk's initiative that the WG was able to come to that result. </t> | |||
<t>The authors additionally thank the following for helping give shape | <t>The authors additionally thank the following for helping give shape | |||
to this work (ordered by first name): | to this work (ordered by first name): | |||
Balázs Kovács, | <contact fullname="Balázs Kovács"/>, | |||
Carl Wallace, | <contact fullname="Carl Wallace"/>, | |||
Eric Voit, | <contact fullname="Eric Voit"/>, | |||
Éric Vyncke, | <contact fullname="Éric Vyncke"/>, | |||
Francesca Palombini, | <contact fullname="Francesca Palombini"/>, | |||
Jensen Zhang, | <contact fullname="Jensen Zhang"/>, | |||
Jürgen Schönwälder, | <contact fullname="Jürgen Schönwälder"/>, | |||
Lars Eggert, | <contact fullname="Lars Eggert"/>, | |||
Liang Xia, | <contact fullname="Liang Xia"/>, | |||
Martin Björklund, | <contact fullname="Martin Björklund"/>, | |||
Murray Kucherawy, | <contact fullname="Murray Kucherawy"/>, | |||
Nick Hancock, | <contact fullname="Nick Hancock"/>, | |||
Qin Wu, | <contact fullname="Paul Kyzivat"/>, | |||
Rob Wilton, | <contact fullname="Qin Wu"/>, | |||
Robert Varga, | <contact fullname="Rob Wilton"/>, | |||
Roman Danyliw, | <contact fullname="Robert Varga"/>, | |||
Paul Kyzivat, | <contact fullname="Roman Danyliw"/>, | |||
and Yoav Nir. | and <contact fullname="Yoav Nir"/>. | |||
</t> | </t> | |||
</section> | </section> | |||
</back> | </back> | |||
</rfc> | </rfc> | |||
End of changes. 156 change blocks. | ||||
937 lines changed or deleted | 429 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |