draft-ietf-netconf-server-model-08.txt | draft-ietf-netconf-server-model-09.txt | |||
---|---|---|---|---|
NETCONF Working Group K. Watsen | NETCONF Working Group K. Watsen | |||
Internet-Draft Juniper Networks | Internet-Draft Juniper Networks | |||
Intended status: Standards Track J. Schoenwaelder | Intended status: Standards Track J. Schoenwaelder | |||
Expires: April 11, 2016 Jacobs University Bremen | Expires: September 17, 2016 Jacobs University Bremen | |||
October 9, 2015 | March 16, 2016 | |||
NETCONF Server and RESTCONF Server Configuration Models | NETCONF Server and RESTCONF Server Configuration Models | |||
draft-ietf-netconf-server-model-08 | draft-ietf-netconf-server-model-09 | |||
Abstract | Abstract | |||
This draft defines a NETCONF server configuration data model and a | This draft defines a NETCONF server configuration data model and a | |||
RESTCONF server configuration data model. These data models enable | RESTCONF server configuration data model. These data models enable | |||
configuration of the NETCONF and RESTCONF services themselves, | configuration of the NETCONF and RESTCONF services themselves, | |||
including which transports are supported, what ports the servers | including which transports are supported, what ports the servers | |||
listen on, call-home parameters, client authentication, and related | listen on, call-home parameters, client authentication, and related | |||
parameters. | parameters. | |||
skipping to change at page 1, line 38 ¶ | skipping to change at page 1, line 38 ¶ | |||
This document contains references to other drafts in progress, both | This document contains references to other drafts in progress, both | |||
in the Normative References section, as well as in body text | in the Normative References section, as well as in body text | |||
throughout. Please update the following references to reflect their | throughout. Please update the following references to reflect their | |||
final RFC assignments: | final RFC assignments: | |||
o draft-ietf-netconf-restconf | o draft-ietf-netconf-restconf | |||
o draft-ietf-netconf-call-home | o draft-ietf-netconf-call-home | |||
o draft-ietf-rtgwg-yang-key-chain | ||||
Artwork in this document contains shorthand references to drafts in | Artwork in this document contains shorthand references to drafts in | |||
progress. Please apply the following replacements: | progress. Please apply the following replacements: | |||
o "VVVV" --> the assigned RFC value for this draft | o "VVVV" --> the assigned RFC value for this draft | |||
o "XXXX" --> the assigned RFC value for draft-ietf-netconf-restconf | o "XXXX" --> the assigned RFC value for draft-ietf-netconf-restconf | |||
o "YYYY" --> the assigned RFC value for draft-ietf-netconf-call-home | o "YYYY" --> the assigned RFC value for draft-ietf-netconf-call-home | |||
Artwork in this document contains placeholder values for ports | Artwork in this document contains placeholder values for ports | |||
pending IANA assignment from "draft-ietf-netconf-call-home". Please | pending IANA assignment from "draft-ietf-netconf-call-home". Please | |||
apply the following replacements: | apply the following replacements: | |||
o "7777" --> the assigned port value for "netconf-ch-ssh" | o "7777" --> the assigned port value for "netconf-ch-ssh" | |||
o "8888" --> the assigned port value for "netconf-ch-tls" | o "8888" --> the assigned port value for "netconf-ch-tls" | |||
o "9999" --> the assigned port value for "restconf-ch-tls" | o "9999" --> the assigned port value for "restconf-ch-tls" | |||
skipping to change at page 2, line 14 ¶ | skipping to change at page 2, line 17 ¶ | |||
o "7777" --> the assigned port value for "netconf-ch-ssh" | o "7777" --> the assigned port value for "netconf-ch-ssh" | |||
o "8888" --> the assigned port value for "netconf-ch-tls" | o "8888" --> the assigned port value for "netconf-ch-tls" | |||
o "9999" --> the assigned port value for "restconf-ch-tls" | o "9999" --> the assigned port value for "restconf-ch-tls" | |||
Artwork in this document contains placeholder values for the date of | Artwork in this document contains placeholder values for the date of | |||
publication of this draft. Please apply the following replacement: | publication of this draft. Please apply the following replacement: | |||
o "2015-10-09" --> the publication date of this draft | o "2016-03-16" --> the publication date of this draft | |||
The following two Appendix sections are to be removed prior to | The following two Appendix sections are to be removed prior to | |||
publication: | publication: | |||
o Appendix B. Change Log | o Appendix A. Change Log | |||
o Appendix C. Open Issues | o Appendix B. Open Issues | |||
Artwork in the document contains a temporary YANG containers that | ||||
need to be removed. | ||||
o The "listening-ssh-server" container listed at the end of the | ||||
artwork in Section 4.2.3 needs to be removed. Please remove the | ||||
ten lines starting with "container listening-ssh-server {" and | ||||
ending with "}". | ||||
o The "listening-tls-server" container listed at the end of the | ||||
artwork in Section 4.3.3 needs to be removed. Please remove the | ||||
ten lines starting with "container listening-tls-server {" and | ||||
ending with "}". | ||||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on April 11, 2016. | This Internet-Draft will expire on September 17, 2016. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2015 IETF Trust and the persons identified as the | Copyright (c) 2016 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 4 | 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
1.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 4 | 1.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 5 | |||
2. Objectives . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 2. Objectives . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
2.1. Support all NETCONF and RESTCONF transports . . . . . . . 5 | 2.1. Support all NETCONF and RESTCONF transports . . . . . . . 5 | |||
2.2. Enable each transport to select which keys to use . . . . 5 | 2.2. Enable each transport to select which keys to use . . . . 6 | |||
2.3. Support authenticating NETCONF/RESTCONF clients | 2.3. Support authenticating NETCONF/RESTCONF clients | |||
certificates . . . . . . . . . . . . . . . . . . . . . . 5 | certificates . . . . . . . . . . . . . . . . . . . . . . 6 | |||
2.4. Support mapping authenticated NETCONF/RESTCONF client | 2.4. Support mapping authenticated NETCONF/RESTCONF client | |||
certificates to usernames . . . . . . . . . . . . . . . . 5 | certificates to usernames . . . . . . . . . . . . . . . . 6 | |||
2.5. Support both listening for connections and call home . . 6 | 2.5. Support both listening for connections and call home . . 6 | |||
2.6. For Call Home connections . . . . . . . . . . . . . . . . 6 | 2.6. For Call Home connections . . . . . . . . . . . . . . . . 6 | |||
2.6.1. Support more than one NETCONF/RESTCONF client . . . . 6 | 2.6.1. Support more than one NETCONF/RESTCONF client . . . . 7 | |||
2.6.2. Support NETCONF/RESTCONF clients having more than one | 2.6.2. Support NETCONF/RESTCONF clients having more than one | |||
endpoint . . . . . . . . . . . . . . . . . . . . . . 6 | endpoint . . . . . . . . . . . . . . . . . . . . . . 7 | |||
2.6.3. Support a reconnection strategy . . . . . . . . . . . 6 | 2.6.3. Support a reconnection strategy . . . . . . . . . . . 7 | |||
2.6.4. Support both persistent and periodic connections . . 6 | 2.6.4. Support both persistent and periodic connections . . 7 | |||
2.6.5. Reconnection strategy for periodic connections . . . 7 | 2.6.5. Reconnection strategy for periodic connections . . . 7 | |||
2.6.6. Keep-alives for persistent connections . . . . . . . 7 | 2.6.6. Keep-alives for persistent connections . . . . . . . 8 | |||
2.6.7. Customizations for periodic connections . . . . . . . 7 | 2.6.7. Customizations for periodic connections . . . . . . . 8 | |||
3. High-Level Design . . . . . . . . . . . . . . . . . . . . . . 7 | 3. High-Level Design . . . . . . . . . . . . . . . . . . . . . . 8 | |||
4. Solution . . . . . . . . . . . . . . . . . . . . . . . . . . 8 | 4. Solution . . . . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
4.1. The Keychain Model . . . . . . . . . . . . . . . . . . . 8 | 4.1. The System Keychain Model . . . . . . . . . . . . . . . . 9 | |||
4.1.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . 9 | 4.1.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . 9 | |||
4.1.2. Example Usage . . . . . . . . . . . . . . . . . . . . 9 | 4.1.2. Example Usage . . . . . . . . . . . . . . . . . . . . 10 | |||
4.1.3. YANG Model . . . . . . . . . . . . . . . . . . . . . 15 | 4.1.3. YANG Model . . . . . . . . . . . . . . . . . . . . . 18 | |||
4.2. The SSH Server Model . . . . . . . . . . . . . . . . . . 20 | ||||
4.2.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . 21 | 4.2. The SSH Server Model . . . . . . . . . . . . . . . . . . 26 | |||
4.2.2. Example Usage . . . . . . . . . . . . . . . . . . . . 21 | 4.2.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . 27 | |||
4.2.3. YANG Model . . . . . . . . . . . . . . . . . . . . . 22 | 4.2.2. Example Usage . . . . . . . . . . . . . . . . . . . . 27 | |||
4.3. The TLS Server Model . . . . . . . . . . . . . . . . . . 26 | 4.2.3. YANG Model . . . . . . . . . . . . . . . . . . . . . 28 | |||
4.3.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . 26 | 4.3. The TLS Server Model . . . . . . . . . . . . . . . . . . 32 | |||
4.3.2. Example Usage . . . . . . . . . . . . . . . . . . . . 27 | 4.3.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . 32 | |||
4.3.3. YANG Model . . . . . . . . . . . . . . . . . . . . . 27 | 4.3.2. Example Usage . . . . . . . . . . . . . . . . . . . . 33 | |||
4.4. The NETCONF Server Model . . . . . . . . . . . . . . . . 31 | 4.3.3. YANG Model . . . . . . . . . . . . . . . . . . . . . 33 | |||
4.4.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . 31 | 4.4. The NETCONF Server Model . . . . . . . . . . . . . . . . 37 | |||
4.4.2. Example Usage . . . . . . . . . . . . . . . . . . . . 33 | 4.4.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . 37 | |||
4.4.3. YANG Model . . . . . . . . . . . . . . . . . . . . . 37 | 4.4.2. Example Usage . . . . . . . . . . . . . . . . . . . . 40 | |||
4.5. The RESTCONF Server Model . . . . . . . . . . . . . . . . 47 | 4.4.3. YANG Model . . . . . . . . . . . . . . . . . . . . . 43 | |||
4.5.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . 47 | 4.5. The RESTCONF Server Model . . . . . . . . . . . . . . . . 53 | |||
4.5.2. Example Usage . . . . . . . . . . . . . . . . . . . . 49 | 4.5.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . 53 | |||
4.5.3. YANG Model . . . . . . . . . . . . . . . . . . . . . 51 | 4.5.2. Example Usage . . . . . . . . . . . . . . . . . . . . 55 | |||
5. Security Considerations . . . . . . . . . . . . . . . . . . . 59 | 4.5.3. YANG Model . . . . . . . . . . . . . . . . . . . . . 57 | |||
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 59 | 5. Design Considerations . . . . . . . . . . . . . . . . . . . . 65 | |||
7. Other Considerations . . . . . . . . . . . . . . . . . . . . 60 | 6. Security Considerations . . . . . . . . . . . . . . . . . . . 66 | |||
8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 60 | 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 67 | |||
9. References . . . . . . . . . . . . . . . . . . . . . . . . . 60 | 7.1. The IETF XML Registry . . . . . . . . . . . . . . . . . . 67 | |||
9.1. Normative References . . . . . . . . . . . . . . . . . . 61 | 7.2. The YANG Module Names Registry . . . . . . . . . . . . . 67 | |||
9.2. Informative References . . . . . . . . . . . . . . . . . 61 | 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 68 | |||
Appendix A. Change Log . . . . . . . . . . . . . . . . . . . . . 62 | 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 68 | |||
A.1. 00 to 01 . . . . . . . . . . . . . . . . . . . . . . . . 62 | 9.1. Normative References . . . . . . . . . . . . . . . . . . 68 | |||
A.2. 01 to 02 . . . . . . . . . . . . . . . . . . . . . . . . 62 | 9.2. Informative References . . . . . . . . . . . . . . . . . 70 | |||
A.3. 02 to 03 . . . . . . . . . . . . . . . . . . . . . . . . 62 | Appendix A. Change Log . . . . . . . . . . . . . . . . . . . . . 71 | |||
A.4. 03 to 04 . . . . . . . . . . . . . . . . . . . . . . . . 62 | A.1. 00 to 01 . . . . . . . . . . . . . . . . . . . . . . . . 71 | |||
A.5. 04 to 05 . . . . . . . . . . . . . . . . . . . . . . . . 63 | A.2. 01 to 02 . . . . . . . . . . . . . . . . . . . . . . . . 71 | |||
A.6. 05 to 06 . . . . . . . . . . . . . . . . . . . . . . . . 63 | A.3. 02 to 03 . . . . . . . . . . . . . . . . . . . . . . . . 71 | |||
A.7. 06 to 07 . . . . . . . . . . . . . . . . . . . . . . . . 63 | A.4. 03 to 04 . . . . . . . . . . . . . . . . . . . . . . . . 71 | |||
A.8. 07 to 08 . . . . . . . . . . . . . . . . . . . . . . . . 64 | A.5. 04 to 05 . . . . . . . . . . . . . . . . . . . . . . . . 72 | |||
Appendix B. Open Issues . . . . . . . . . . . . . . . . . . . . 65 | A.6. 05 to 06 . . . . . . . . . . . . . . . . . . . . . . . . 72 | |||
A.7. 06 to 07 . . . . . . . . . . . . . . . . . . . . . . . . 72 | ||||
A.8. 07 to 08 . . . . . . . . . . . . . . . . . . . . . . . . 73 | ||||
A.9. 08 to 09 . . . . . . . . . . . . . . . . . . . . . . . . 74 | ||||
Appendix B. Open Issues . . . . . . . . . . . . . . . . . . . . 74 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 74 | ||||
1. Introduction | 1. Introduction | |||
This draft defines a NETCONF [RFC6241] server configuration data | This draft defines a NETCONF [RFC6241] server configuration data | |||
model and a RESTCONF [draft-ietf-netconf-restconf] server | model and a RESTCONF [draft-ietf-netconf-restconf] server | |||
configuration data model. These data models enable configuration of | configuration data model. These data models enable configuration of | |||
the NETCONF and RESTCONF services themselves, including which | the NETCONF and RESTCONF services themselves, including which | |||
transports are supported, what ports the servers listen on, call-home | transports are supported, what ports the servers listen on, call-home | |||
parameters, client authentication, and related parameters. | parameters, client authentication, and related parameters. | |||
skipping to change at page 8, line 5 ¶ | skipping to change at page 8, line 34 ¶ | |||
3. High-Level Design | 3. High-Level Design | |||
The solution presented in this document defines a configurable | The solution presented in this document defines a configurable | |||
keychain object, reusable groupings for SSH and TLS based servers, | keychain object, reusable groupings for SSH and TLS based servers, | |||
and, finally, the configurable NETCONF and RESTCONF server objects, | and, finally, the configurable NETCONF and RESTCONF server objects, | |||
which are the primary purpose for this draft. Each of these are | which are the primary purpose for this draft. Each of these are | |||
defined in a distinct YANG module, thus a total of five YANG modules | defined in a distinct YANG module, thus a total of five YANG modules | |||
are defined in this document. The relationship between these five | are defined in this document. The relationship between these five | |||
YANG modules is illustrated by the tree diagram below. | YANG modules is illustrated by the tree diagram below. | |||
+-------------+ | +--------------------+ | |||
|ietf-keychain| | |ietf-system-keychain| | |||
+-------------+ | +--------------------+ | |||
^ ^ | ^ ^ | |||
| | | | | | |||
<leafref> | | <leafref> | <leafref> | | <leafref> | |||
+------------+ +------------+ | +------------+ +------------+ | |||
| | | | | | |||
+---------------+ +------------------+ | +---------------+ +------------------+ | |||
|ietf-ssh-server| | ietf-tls-server | | |ietf-ssh-server| | ietf-tls-server | | |||
+---------------+ +------------------+ | +---------------+ +------------------+ | |||
^ ^ ^ | ^ ^ ^ | |||
| <uses> | | | | <uses> | | | |||
skipping to change at page 8, line 30 ¶ | skipping to change at page 9, line 10 ¶ | |||
| | | | | | | | |||
+-------------------+ +--------------------+ | +-------------------+ +--------------------+ | |||
|ietf-netconf-server| |ietf-restconf-server| | |ietf-netconf-server| |ietf-restconf-server| | |||
+-------------------+ +--------------------+ | +-------------------+ +--------------------+ | |||
4. Solution | 4. Solution | |||
Each of the following five sections relate to one of the YANG modules | Each of the following five sections relate to one of the YANG modules | |||
depicted by the figure above. | depicted by the figure above. | |||
4.1. The Keychain Model | 4.1. The System Keychain Model | |||
The keychain model depicted in this section provides a configurable | The system keychain model defined in this section provides a | |||
object having the following characteristics: | configurable object having the following characteristics: | |||
o A semi-configurable list of private keys, each with one or more | o A semi-configurable list of private keys, each with one or more | |||
associated certificates. Though private keys can only be created | associated certificates. Private keys MUST be either preinstalled | |||
via an RPC (see bullet #3 below), the entries of the list may be | (e.g., an IDevID key), be generated by request, or be loaded by | |||
renamed and have certificates associated with them after creation. | request. Each private key is MAY have associated certificates, | |||
either preinstalled or configured after creation. | ||||
o A configurable list of lists of trust anchor certificates. This | o A configurable list of lists of trust anchor certificates. This | |||
enables the server to have use-specific trust anchors. For | enables the server to have use-specific trust anchors. For | |||
instance, one list of trust anchors might be used to authenticate | instance, one list of trust anchors might be used to authenticate | |||
management connections (e.g., client certificate-based | management connections (e.g., client certificate-based | |||
authentication for NETCONF or RESTCONF connections), and a | authentication for NETCONF or RESTCONF connections), and a | |||
different list of trust anchors might be used for when connecting | different list of trust anchors might be used for when connecting | |||
to a specific Internet-based service (e.g., a zero touch bootstrap | to a specific Internet-based service (e.g., a zero touch bootstrap | |||
server). | server). | |||
o An RPC to request the server to generate a new private key using | ||||
the specified algorithm and key length. | ||||
o An RPC to generate a certificate signing request for an existing | o An RPC to generate a certificate signing request for an existing | |||
private key, a passed subject, and an optional attributes. The | private key, a passed subject, and an optional attributes. The | |||
signed certificate returned from an external certificate authority | signed certificate returned from an external certificate authority | |||
(CA) can be set using a standard configuration change request | (CA) can be later set using a standard configuration change | |||
(e.g., <edit-config>). | request (e.g., <edit-config>). | |||
4.1.1. Tree Diagram | o An RPC to request the server to generate a new private key using | |||
the specified algorithm and key length. | ||||
module: ietf-keychain | o An RPC to request the server to load a new private key. | |||
+--rw keychain | ||||
+--rw private-keys | 4.1.1. Tree Diagram | |||
| +--rw private-key* [name] | module: ietf-system-keychain | |||
| | +--rw name string | +--rw keychain | |||
| | +--ro algorithm? enumeration | +--rw private-keys | |||
| | +--ro key-length? uint32 | | +--rw private-key* [name] | |||
| | +--ro public-key? string | | | +--rw name string | |||
| | +--rw certificates | | | +--ro algorithm? kc:algorithms | |||
| | | +--rw certificate* [name] | | | +--ro key-length? uint32 | |||
| | | +--rw name string | | | +--ro public-key binary | |||
| | | +--rw chain? binary | | | +--rw certificate-chains | |||
| | +---x generate-certificate-signing-request | | | | +--rw certificate-chain* [name] | |||
| | +---w input | | | | +--rw name string | |||
| | | +---w subject binary | | | | +--rw certificate* binary | |||
| | | +---w attributes? binary | | | +---x generate-certificate-signing-request | |||
| | +--ro output | | | +---w input | |||
| | +--ro certificate-signing-request binary | | | | +---w subject binary | |||
| +---x generate-private-key | | | | +---w attributes? binary | |||
| +---w input | | | +--ro output | |||
| +---w name string | | | +--ro certificate-signing-request binary | |||
| +---w algorithm enumeration | | +---x generate-private-key | |||
| +---w key-length? uint32 | | | +---w input | |||
+--rw trusted-certificates* [name] | | | +---w name string | |||
+--rw name string | | | +---w key-usage? enumeration | |||
+--rw description? string | | | +---w algorithm kc:algorithms | |||
+--rw trusted-certificate* [name] | | | +---w key-length? uint32 | |||
+--rw name string | | +---x load-private-key | |||
+--rw certificate? binary | | +---w input | |||
| +---w name string | ||||
| +---w private-key binary | ||||
+--rw trusted-certificates* [name] | ||||
+--rw name string | ||||
+--rw description? string | ||||
+--rw trusted-certificate* [name] | ||||
+--rw name string | ||||
+--rw certificate? binary | ||||
notifications: | ||||
+---n certificate-expiration | ||||
+--ro certificate instance-identifier | ||||
+--ro expiration-date yang:date-and-time | ||||
4.1.2. Example Usage | 4.1.2. Example Usage | |||
The following example illustrates the "generate-private-key" RPC in | The following example illustrates the "generate-private-key" action | |||
in use with the RESTCONF protocol and JSON encoding. | ||||
REQUEST | ||||
------- | ||||
['\' line wrapping added for formatting only] | ||||
POST https://example.com/restconf/data/ietf-system-keychain:keychain/\ | ||||
private-keys/generate-private-key HTTP/1.1 | ||||
HOST: example.com | ||||
Content-Type: application/yang.operation+json | ||||
{ | ||||
"ietf-system-keychain:input" : { | ||||
"name" : "ex-key-sect571r1", | ||||
"algorithm" : "sect571r1" | ||||
} | ||||
} | ||||
RESPONSE | ||||
-------- | ||||
HTTP/1.1 204 No Content | ||||
Date: Mon, 31 Oct 2015 11:01:00 GMT | ||||
Server: example-server | ||||
The following example illustrates the "load-private-key" action in | ||||
use with the RESTCONF protocol and JSON encoding. | use with the RESTCONF protocol and JSON encoding. | |||
REQUEST | REQUEST | |||
------- | ------- | |||
------ | ['\' line wrapping added for formatting only] | |||
['\' line wrapping added for formatting only] | ||||
POST https://example.com/restconf/data/ietf-keychain:keychain/\ | POST https://example.com/restconf/data/ietf-system-keychain:keychain/\ | |||
private-keys/generate-private-key HTTP/1.1 | private-keys/generate-private-key HTTP/1.1 | |||
HOST: example.com | HOST: example.com | |||
Content-Type: application/yang.operation+json | Content-Type: application/yang.operation+xml | |||
{ | <input xmlns="urn:ietf:params:xml:ns:yang:ietf-system-keychain"> | |||
"ietf-keychain:input" : { | <name>ex-key-sect571r1</name> | |||
"name" : "ex-key-sect571r1", | <private-key> | |||
"algorithm" : "sect571r1" | NGcEk3UE90cnNFVjRwTUNBd0VBQWFPQ0FSSXdnZ0VPCk1CMEdBMVVkRGd\ | |||
} | VEJiZ0JTWEdlbUEKMnhpRHVOTVkvVHFLNWd4cFJBZ1ZOYUU0cERZd05ER\ | |||
} | V6QVJCZ05WQkFNVENrTlNUQ0JKYzNOMVpYS0NDUUNVRHBNSll6UG8zREF\ | |||
Z05WSFI4RVlqQmdNRjZnSXFBZ2hoNW9kSFJ3T2k4dlpYaGgKYlhCc1pTN\ | ||||
QmdOVkJBWVRBbFZUTVJBd0RnWURWUVFLRXdkbAplR0Z0Y0d4bE1RNHdEQ\ | ||||
MkF6a3hqUDlVQWtHR0dvS1U1eUc1SVR0Wm0vK3B0R2FieXVDMjBRd2kvZ\ | ||||
NQmdOVkhSTUJBZjhFCkFqQUFNQTRHQTFVZER3RUIvd1FFQXdJSGdEQnBC\ | ||||
WmdsK2gyTTg3QmtGMjhWbW1CdFFVaWc3OEgrRkYyRTFwdSt4ZVRJbVFFM\ | ||||
lLQllsdWpOcjFTMnRLR05EMUc2OVJpK2FWNGw2NTdZNCtadVJMZgpRYjk\ | ||||
zSFNwSDdwVXBCYnA4dmtNanFtZjJma3RqZHBxeFppUUtTbndWZTF2Zwot\ | ||||
25PZnpZNEhONApXY0pTaUpZK2xtYWs3RTRORUZXZS9RdGp4NUlXZmdvN2\ | ||||
WpiMjB2WlhoaGJYQnNaUzVqY215aU9L= | ||||
</private-key> | ||||
</input> | ||||
RESPONSE | RESPONSE | |||
-------- | -------- | |||
------- | HTTP/1.1 204 No Content | |||
HTTP/1.1 204 No Content | Date: Mon, 31 Oct 2015 11:01:00 GMT | |||
Date: Mon, 31 Oct 2015 11:01:00 GMT | Server: example-server | |||
Server: example-server | ||||
The following example illustrates the action statement "generate- | The following example illustrates the "generate-certificate-signing- | |||
certificate-signing-request" action in use with the NETCONF protocol. | request" action in use with the NETCONF protocol. | |||
REQUEST | REQUEST | |||
------- | ------- | |||
<rpc message-id="101" | <rpc message-id="101" | |||
xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | |||
<action xmlns="urn:ietf:params:xml:ns:yang:1"> | <action xmlns="urn:ietf:params:xml:ns:yang:1"> | |||
<keychain xmlns="urn:ietf:params:xml:ns:yang:ietf-keychain"> | <keychain | |||
xmlns="urn:ietf:params:xml:ns:yang:ietf-system-keychain"> | ||||
<private-keys> | <private-keys> | |||
<private-key> | <private-key> | |||
<name>ex-key-sect571r1</name> | <name>ex-key-sect571r1</name> | |||
<generate-certificate-signing-request> | <generate-certificate-signing-request> | |||
<subject> | <subject> | |||
cztvaWRoc2RmZ2tqaHNkZmdramRzZnZzZGtmam5idnNvO2R | cztvaWRoc2RmZ2tqaHNkZmdramRzZnZzZGtmam5idnNvO2R | |||
manZvO3NkZmJpdmhzZGZpbHVidjtvc2lkZmhidml1bHNlmO | manZvO3NkZmJpdmhzZGZpbHVidjtvc2lkZmhidml1bHNlmO | |||
Z2aXNiZGZpYmhzZG87ZmJvO3NkZ25iO29pLmR6Zgo= | Z2aXNiZGZpYmhzZG87ZmJvO3NkZ25iO29pLmR6Zgo= | |||
</subject> | </subject> | |||
<attributes> | <attributes> | |||
skipping to change at page 11, line 19 ¶ | skipping to change at page 13, line 31 ¶ | |||
</keychain> | </keychain> | |||
</action> | </action> | |||
</rpc> | </rpc> | |||
RESPONSE | RESPONSE | |||
-------- | -------- | |||
<rpc-reply message-id="101" | <rpc-reply message-id="101" | |||
xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | |||
<certificate-signing-request | <certificate-signing-request | |||
xmlns="urn:ietf:params:xml:ns:yang:ietf-keychain"> | xmlns="urn:ietf:params:xml:ns:yang:ietf-system-keychain"> | |||
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNrekNDQWZ5Z | LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNrekNDQWZ5Z | |||
0F3SUJBZ0lKQUpRT2t3bGpNK2pjTUEwR0NTcUdTSWIzRFFFQkJRVU | 0F3SUJBZ0lKQUpRT2t3bGpNK2pjTUEwR0NTcUdTSWIzRFFFQkJRVU | |||
FNRFF4Q3pBSkJnTlYKQkFZVEFsVlRNUkF3RGdZRFZRUUtFd2RsZUd | FNRFF4Q3pBSkJnTlYKQkFZVEFsVlRNUkF3RGdZRFZRUUtFd2RsZUd | |||
GdGNHeGxNUk13RVFZRFZRUURFd3BEVWt3Z1NYTnpkV1Z5TUI0WApE | GdGNHeGxNUk13RVFZRFZRUURFd3BEVWt3Z1NYTnpkV1Z5TUI0WApE | |||
diR1V4RXpBUkJnTlZCQU1UQ2tOU1RDQkpjM04xWlhJd2daOHdEUVl | diR1V4RXpBUkJnTlZCQU1UQ2tOU1RDQkpjM04xWlhJd2daOHdEUVl | |||
KS29aSWh2Y04KQVFFQkJRQURnWTBBTUlHSkFvR0JBTXVvZmFPNEV3 | KS29aSWh2Y04KQVFFQkJRQURnWTBBTUlHSkFvR0JBTXVvZmFPNEV3 | |||
El1QWMrQ1RsTkNmc0d6cEw1Um5ydXZsOFRIcUJTdGZQY3N0Zk1KT1 | El1QWMrQ1RsTkNmc0d6cEw1Um5ydXZsOFRIcUJTdGZQY3N0Zk1KT1 | |||
FaNzlnNlNWVldsMldzaHE1bUViCkJNNitGNzdjbTAvU25FcFE0TnV | FaNzlnNlNWVldsMldzaHE1bUViCkJNNitGNzdjbTAvU25FcFE0TnV | |||
bXBDT2YKQWdNQkFBR2pnYXd3Z2Frd0hRWURWUjBPQkJZRUZKY1o2W | bXBDT2YKQWdNQkFBR2pnYXd3Z2Frd0hRWURWUjBPQkJZRUZKY1o2W | |||
URiR0lPNDB4ajlPb3JtREdsRUNCVTFNR1FHQTFVZApJd1JkTUZ1QU | URiR0lPNDB4ajlPb3JtREdsRUNCVTFNR1FHQTFVZApJd1JkTUZ1QU | |||
skipping to change at page 11, line 48 ¶ | skipping to change at page 14, line 13 ¶ | |||
</rpc-reply> | </rpc-reply> | |||
The following example illustrates what a fully configured keychain | The following example illustrates what a fully configured keychain | |||
object might look like. The private-key shown below is consistent | object might look like. The private-key shown below is consistent | |||
with the generate-private-key and generate-certificate-signing- | with the generate-private-key and generate-certificate-signing- | |||
request examples above. This example also assumes that the resulting | request examples above. This example also assumes that the resulting | |||
CA-signed certificate has been configured back onto the server. | CA-signed certificate has been configured back onto the server. | |||
Lastly, this example shows that three lists of trusted certificates | Lastly, this example shows that three lists of trusted certificates | |||
having been configured. | having been configured. | |||
<keychain xmlns="urn:ietf:params:xml:ns:yang:ietf-keychain"> | <keychain xmlns="urn:ietf:params:xml:ns:yang:ietf-system-keychain"> | |||
<!-- private keys and associated certificates --> | <!-- private keys and associated certificates --> | |||
<private-keys> | <private-keys> | |||
<private-key> | <private-key> | |||
<name>ex-key-sect571r1</name> | <name>tpm-protected-key</name> | |||
<algorithm>sect571r1</algorithm> | <algorithm>sect571r1</algorithm> | |||
<public-key> | <public-key> | |||
cztvaWRoc2RmZ2tqaHNkZmdramRzZnZzZGtmam5idnNvO2RmanZvO3NkZ | cztvaWRoc2RmZ2tqaHNkZmdramRzZnZzZGtmam5idnNvO2RmanZvO3NkZ | |||
mJpdmhzZGZpbHVidjtvc2lkZmhidml1bHNkYmZ2aXNiZGZpYmhzZG87Zm | mJpdmhzZGZpbHVidjtvc2lkZmhidml1bHNkYmZ2aXNiZGZpYmhzZG87Zm | |||
JvO3NkZ25iO29pLmR6Zgo= | JvO3NkZ25iO29pLmR6Zgo= | |||
</public-key> | </public-key> | |||
<certificates> | <certificate-chains> | |||
<certificate> | <certificate-chain> | |||
<name>ex-key-sect571r1-cert</name> | <name>default-idevid-chain</name> | |||
<data> | <certificate> | |||
diR1V4RXpBUkJnTlZCQU1UQ2tOU1RDQkpjM04xWlhJd2daOHdEUVl | ||||
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNrekNDQWZ5Z | ||||
KS29aSWh2Y04KQVFFQkJRQURnWTBBTUlHSkFvR0JBTXVvZmFPNEV3 | ||||
0F3SUJBZ0lKQUpRT2t3bGpNK2pjTUEwR0NTcUdTSWIzRFFFQkJRVU | ||||
FNRFF4Q3pBSkJnTlYKQkFZVEFsVlRNUkF3RGdZRFZRUUtFd2RsZUd | ||||
GdGNHeGxNUk13RVFZRFZRUURFd3BEVWt3Z1NYTnpkV1Z5TUI0WApE | ||||
ZKY1o2WURiR0lPNDB4ajlPb3JtREdsRUNCVTFvVGlrTmpBME1Rc3d | ||||
mMKTUE0R0ExVWREd0VCL3dRRUF3SUNCREFTQmdOVkhSTUJBZjhFQ0 | ||||
RBR0FRSC9BZ0VBTUEwR0NTcUdTSWIzRFFFQgpCUVVBQTRHQkFMMmx | ||||
rWmFGNWcyaGR6MVNhZnZPbnBneHA4eG00SHRhbStadHpLazFlS3Bx | ||||
TXp4YXJCbFpDSHlLCklVbC9GVzRtV1RQS1VDeEtFTE40NEY2Zmk2d | ||||
c4d0tSSElkYW1WL0pGTmlQS0VXSTF4K1I1aDZmazcrQzQ1QXg1RWV | ||||
SWM2xZTgotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg== | ||||
</certificate> | ||||
<certificate> | ||||
KS29aSWh2Y04KQVFFQkJRQURnWTBBTUlHSkFvR0JBTXVvZmFPNEV3 | ||||
El1QWMrQ1RsTkNmc0d6cEw1Um5ydXZsOFRIcUJTdGZQY3N0Zk1KT1 | ||||
FaNzlnNlNWVldsMldzaHE1bUViCkJNNitGNzdjbTAvU25FcFE0TnV | ||||
bXBDT2YKQWdNQkFBR2pnYXd3Z2Frd0hRWURWUjBPQkJZRUZKY1o2W | ||||
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNrekNDQWZ5Z | ||||
0F3SUJBZ0lKQUpRT2t3bGpNK2pjTUEwR0NTcUdTSWIzRFFFQkJRVU | ||||
FNRFF4Q3pBSkJnTlYKQkFZVEFsVlRNUkF3RGdZRFZRUUtFd2RsZUd | ||||
GdGNHeGxNUk13RVFZRFZRUURFd3BEVWt3Z1NYTnpkV1Z5TUI0WApE | ||||
diR1V4RXpBUkJnTlZCQU1UQ2tOU1RDQkpjM04xWlhJd2daOHdEUVl | ||||
URiR0lPNDB4ajlPb3JtREdsRUNCVTFNR1FHQTFVZApJd1JkTUZ1QU | ||||
RBR0FRSC9BZ0VBTUEwR0NTcUdTSWIzRFFFQgpCUVVBQTRHQkFMMmx | ||||
rWmFGNWcyaGR6MVNhZnZPbnBneHA4eG00SHRhbStadHpLazFlS3Bx | ||||
c4d0tSSElkYW1WL0pGTmlQS0VXSTF4K1I1aDZmazcrQzQ1QXg1RWV | ||||
SSUZJQ0FURS0tLS0tCg== | ||||
</certificate> | ||||
</certificate-chain> | ||||
<certificate-chain> | ||||
<name>my-ldevid-chain</name> | ||||
<certificate> | ||||
0F3SUJBZ0lKQUpRT2t3bGpNK2pjTUEwR0NTcUdTSWIzRFFFQkJRVU | ||||
FNRFF4Q3pBSkJnTlYKQkFZVEFsVlRNUkF3RGdZRFZRUUtFd2RsZUd | ||||
GdGNHeGxNUk13RVFZRFZRUURFd3BEVWt3Z1NYTnpkV1Z5TUI0WApE | ||||
diR1V4RXpBUkJnTlZCQU1UQ2tOU1RDQkpjM04xWlhJd2daOHdEUVl | ||||
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNrekNDQWZ5Z | ||||
KS29aSWh2Y04KQVFFQkJRQURnWTBBTUlHSkFvR0JBTXVvZmFPNEV3 | ||||
El1QWMrQ1RsTkNmc0d6cEw1Um5ydXZsOFRIcUJTdGZQY3N0Zk1KT1 | ||||
FaNzlnNlNWVldsMldzaHE1bUViCkJNNitGNzdjbTAvU25FcFE0TnV | ||||
ZKY1o2WURiR0lPNDB4ajlPb3JtREdsRUNCVTFvVGlrTmpBME1Rc3d | ||||
mMKTUE0R0ExVWREd0VCL3dRRUF3SUNCREFTQmdOVkhSTUJBZjhFQ0 | ||||
RBR0FRSC9BZ0VBTUEwR0NTcUdTSWIzRFFFQgpCUVVBQTRHQkFMMmx | ||||
rWmFGNWcyaGR6MVNhZnZPbnBneHA4eG00SHRhbStadHpLazFlS3Bx | ||||
TXp4YXJCbFpDSHlLCklVbC9GVzRtV1RQS1VDeEtFTE40NEY2Zmk2d | ||||
c4d0tSSElkYW1WL0pGTmlQS0VXSTF4K1I1aDZmazcrQzQ1QXg1RWV | ||||
SWM2xZTgotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg== | ||||
</certificate> | ||||
<certificate> | ||||
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNrekNDQWZ5Z | LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNrekNDQWZ5Z | |||
0F3SUJBZ0lKQUpRT2t3bGpNK2pjTUEwR0NTcUdTSWIzRFFFQkJRVU | 0F3SUJBZ0lKQUpRT2t3bGpNK2pjTUEwR0NTcUdTSWIzRFFFQkJRVU | |||
FNRFF4Q3pBSkJnTlYKQkFZVEFsVlRNUkF3RGdZRFZRUUtFd2RsZUd | FNRFF4Q3pBSkJnTlYKQkFZVEFsVlRNUkF3RGdZRFZRUUtFd2RsZUd | |||
GdGNHeGxNUk13RVFZRFZRUURFd3BEVWt3Z1NYTnpkV1Z5TUI0WApE | GdGNHeGxNUk13RVFZRFZRUURFd3BEVWt3Z1NYTnpkV1Z5TUI0WApE | |||
diR1V4RXpBUkJnTlZCQU1UQ2tOU1RDQkpjM04xWlhJd2daOHdEUVl | diR1V4RXpBUkJnTlZCQU1UQ2tOU1RDQkpjM04xWlhJd2daOHdEUVl | |||
KS29aSWh2Y04KQVFFQkJRQURnWTBBTUlHSkFvR0JBTXVvZmFPNEV3 | KS29aSWh2Y04KQVFFQkJRQURnWTBBTUlHSkFvR0JBTXVvZmFPNEV3 | |||
El1QWMrQ1RsTkNmc0d6cEw1Um5ydXZsOFRIcUJTdGZQY3N0Zk1KT1 | El1QWMrQ1RsTkNmc0d6cEw1Um5ydXZsOFRIcUJTdGZQY3N0Zk1KT1 | |||
FaNzlnNlNWVldsMldzaHE1bUViCkJNNitGNzdjbTAvU25FcFE0TnV | FaNzlnNlNWVldsMldzaHE1bUViCkJNNitGNzdjbTAvU25FcFE0TnV | |||
bXBDT2YKQWdNQkFBR2pnYXd3Z2Frd0hRWURWUjBPQkJZRUZKY1o2W | bXBDT2YKQWdNQkFBR2pnYXd3Z2Frd0hRWURWUjBPQkJZRUZKY1o2W | |||
URiR0lPNDB4ajlPb3JtREdsRUNCVTFNR1FHQTFVZApJd1JkTUZ1QU | URiR0lPNDB4ajlPb3JtREdsRUNCVTFNR1FHQTFVZApJd1JkTUZ1QU | |||
ZKY1o2WURiR0lPNDB4ajlPb3JtREdsRUNCVTFvVGlrTmpBME1Rc3d | ZKY1o2WURiR0lPNDB4ajlPb3JtREdsRUNCVTFvVGlrTmpBME1Rc3d | |||
mMKTUE0R0ExVWREd0VCL3dRRUF3SUNCREFTQmdOVkhSTUJBZjhFQ0 | mMKTUE0R0ExVWREd0VCL3dRRUF3SUNCREFTQmdOVkhSTUJBZjhFQ0 | |||
RBR0FRSC9BZ0VBTUEwR0NTcUdTSWIzRFFFQgpCUVVBQTRHQkFMMmx | RBR0FRSC9BZ0VBTUEwR0NTcUdTSWIzRFFFQgpCUVVBQTRHQkFMMmx | |||
rWmFGNWcyaGR6MVNhZnZPbnBneHA4eG00SHRhbStadHpLazFlS3Bx | rWmFGNWcyaGR6MVNhZnZPbnBneHA4eG00SHRhbStadHpLazFlS3Bx | |||
TXp4YXJCbFpDSHlLCklVbC9GVzRtV1RQS1VDeEtFTE40NEY2Zmk2d | TXp4YXJCbFpDSHlLCklVbC9GVzRtV1RQS1VDeEtFTE40NEY2Zmk2d | |||
c4d0tSSElkYW1WL0pGTmlQS0VXSTF4K1I1aDZmazcrQzQ1QXg1RWV | c4d0tSSElkYW1WL0pGTmlQS0VXSTF4K1I1aDZmazcrQzQ1QXg1RWV | |||
SWHgzZjdVM2xZTgotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg== | SWHgzZjdVM2xZTgotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg== | |||
</data> | </certificate> | |||
</certificate> | </certificate-chain> | |||
</certificates> | </certificate-chains> | |||
</private-key> | </private-key> | |||
</private-keys> | </private-keys> | |||
<!-- trusted netconf/restconf client certificates --> | <!-- trusted netconf/restconf client certificates --> | |||
<trusted-certificates> | <trusted-certificates> | |||
<name>explicitly-trusted-client-certs</name> | <name>explicitly-trusted-client-certs</name> | |||
<description> | <description> | |||
Specific client authentication certificates that are to be | Specific client authentication certificates that are to be | |||
explicitly trusted NETCONF/RESTCONF clients. These are | explicitly trusted NETCONF/RESTCONF clients. These are | |||
needed for client certificates not signed by our CA. | needed for client certificates not signed by our CA. | |||
</description> | </description> | |||
skipping to change at page 13, line 23 ¶ | skipping to change at page 16, line 37 ¶ | |||
WpiMjB2WlhoaGJYQnNaUzVqY215aU9LUTJNRFF4Q3pBSkJnTlZCQVlUQW | WpiMjB2WlhoaGJYQnNaUzVqY215aU9LUTJNRFF4Q3pBSkJnTlZCQVlUQW | |||
xWVE1SQXdEZ1lEVlFRSwpFd2RsZUdGdGNHeGxNUk13RVFZRFZRUURFd3B | xWVE1SQXdEZ1lEVlFRSwpFd2RsZUdGdGNHeGxNUk13RVFZRFZRUURFd3B | |||
EVWt3Z1NYTnpkV1Z5TUEwR0NTcUdTSWIzRFFFQkJRVUFBNEdCCkFFc3BK | EVWt3Z1NYTnpkV1Z5TUEwR0NTcUdTSWIzRFFFQkJRVUFBNEdCCkFFc3BK | |||
WmdsK2gyTTg3QmtGMjhWbW1CdFFVaWc3OEgrRkYyRTFwdSt4ZVRJbVFFM | WmdsK2gyTTg3QmtGMjhWbW1CdFFVaWc3OEgrRkYyRTFwdSt4ZVRJbVFFM | |||
TQzcjFZSjk0M1FQLzV5eGUKN2QxMkxCV0dxUjUrbEl5N01YL21ka2M4al | TQzcjFZSjk0M1FQLzV5eGUKN2QxMkxCV0dxUjUrbEl5N01YL21ka2M4al | |||
zSFNwSDdwVXBCYnA4dmtNanFtZjJma3RqZHBxeFppUUtTbndWZTF2Zwot | zSFNwSDdwVXBCYnA4dmtNanFtZjJma3RqZHBxeFppUUtTbndWZTF2Zwot | |||
LS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg== | LS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg== | |||
</certificate> | </certificate> | |||
</trusted-certificate> | </trusted-certificate> | |||
<trusted-certificate> | <trusted-certificate> | |||
<name>Fred Flinstone</name> | <name>Fred Flintstone</name> | |||
<certificate> | <certificate> | |||
VlEVlFRREV3Vm9ZWEJ3ZVRDQm56QU5CZ2txaGtpRzl3MEJBUUVGQUFPQm | VlEVlFRREV3Vm9ZWEJ3ZVRDQm56QU5CZ2txaGtpRzl3MEJBUUVGQUFPQm | |||
pRQXdnWWtDCmdZRUE1RzRFSWZsS1p2bDlXTW44eUhyM2hObUFRaUhVUzV | pRQXdnWWtDCmdZRUE1RzRFSWZsS1p2bDlXTW44eUhyM2hObUFRaUhVUzV | |||
rRUpPQy9hSFA3eGJXQW1ra054ZStUa2hrZnBsL3UKbVhsTjhSZUd1ODhG | rRUpPQy9hSFA3eGJXQW1ra054ZStUa2hrZnBsL3UKbVhsTjhSZUd1ODhG | |||
NGcEk3UE90cnNFVjRwTUNBd0VBQWFPQ0FSSXdnZ0VPCk1CMEdBMVVkRGd | NGcEk3UE90cnNFVjRwTUNBd0VBQWFPQ0FSSXdnZ0VPCk1CMEdBMVVkRGd | |||
VEJiZ0JTWEdlbUEKMnhpRHVOTVkvVHFLNWd4cFJBZ1ZOYUU0cERZd05ER | VEJiZ0JTWEdlbUEKMnhpRHVOTVkvVHFLNWd4cFJBZ1ZOYUU0cERZd05ER | |||
V6QVJCZ05WQkFNVENrTlNUQ0JKYzNOMVpYS0NDUUNVRHBNSll6UG8zREF | V6QVJCZ05WQkFNVENrTlNUQ0JKYzNOMVpYS0NDUUNVRHBNSll6UG8zREF | |||
NQmdOVkhSTUJBZjhFCkFqQUFNQTRHQTFVZER3RUIvd1FFQXdJSGdEQnBC | NQmdOVkhSTUJBZjhFCkFqQUFNQTRHQTFVZER3RUIvd1FFQXdJSGdEQnBC | |||
Z05WSFI4RVlqQmdNRjZnSXFBZ2hoNW9kSFJ3T2k4dlpYaGgKYlhCc1pTN | Z05WSFI4RVlqQmdNRjZnSXFBZ2hoNW9kSFJ3T2k4dlpYaGgKYlhCc1pTN | |||
WpiMjB2WlhoaGJYQnNaUzVqY215aU9LUTJNRFF4Q3pBSkJnTlZCQVlUQW | WpiMjB2WlhoaGJYQnNaUzVqY215aU9LUTJNRFF4Q3pBSkJnTlZCQVlUQW | |||
skipping to change at page 15, line 7 ¶ | skipping to change at page 18, line 19 ¶ | |||
lLQllsdWpOcjFTMnRLR05EMUc2OVJpK2FWNGw2NTdZNCtadVJMZgpRYjk | lLQllsdWpOcjFTMnRLR05EMUc2OVJpK2FWNGw2NTdZNCtadVJMZgpRYjk | |||
zSFNwSDdwVXBCYnA4dmtNanFtZjJma3RqZHBxeFppUUtTbndWZTF2Zwot | zSFNwSDdwVXBCYnA4dmtNanFtZjJma3RqZHBxeFppUUtTbndWZTF2Zwot | |||
25PZnpZNEhONApXY0pTaUpZK2xtYWs3RTRORUZXZS9RdGp4NUlXZmdvN2 | 25PZnpZNEhONApXY0pTaUpZK2xtYWs3RTRORUZXZS9RdGp4NUlXZmdvN2 | |||
WpiMjB2WlhoaGJYQnNaUzVqY215aU9L= | WpiMjB2WlhoaGJYQnNaUzVqY215aU9L= | |||
</certificate> | </certificate> | |||
</trusted-certificate> | </trusted-certificate> | |||
</trusted-certificates> | </trusted-certificates> | |||
</keychain> | </keychain> | |||
The following example illustrates a "certificate-expiration" | ||||
notification in XML. | ||||
['\' line wrapping added for formatting only] | ||||
<notification | ||||
xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0"> | ||||
<eventTime>2016-07-08T00:01:00Z</eventTime> | ||||
<certificate-expiration | ||||
xmlns="urn:ietf:params:xml:ns:yang:ietf-system-keychain"> | ||||
<certificate> | ||||
/kc:keychain/kc:private-keys/kc:private-key/kc:certificate-chains\ | ||||
/kc:certificate-chain/kc:certificate[3] | ||||
</certificate> | ||||
<expiration-date>2016-08-08T14:18:53-05:00</expiration-date> | ||||
</certificate-expiration> | ||||
</notification> | ||||
4.1.3. YANG Model | 4.1.3. YANG Model | |||
<CODE BEGINS> file "ietf-keychain@2015-10-09.yang" | This YANG module makes extensive use of data types defined in | |||
[RFC5280] and [RFC5958]. | ||||
module ietf-keychain { | <CODE BEGINS> file "ietf-system-keychain@2016-03-16.yang" | |||
yang-version 1.1; | ||||
namespace "urn:ietf:params:xml:ns:yang:ietf-keychain"; | module ietf-system-keychain { | |||
prefix "kc"; | yang-version 1.1; | |||
organization | namespace "urn:ietf:params:xml:ns:yang:ietf-system-keychain"; | |||
"IETF NETCONF (Network Configuration) Working Group"; | prefix "kc"; | |||
contact | import ietf-yang-types { // RFC 6991 | |||
"WG Web: <http://tools.ietf.org/wg/netconf/> | prefix yang; | |||
WG List: <mailto:netconf@ietf.org> | } | |||
WG Chair: Mehmet Ersue | organization | |||
<mailto:mehmet.ersue@nsn.com> | "IETF NETCONF (Network Configuration) Working Group"; | |||
WG Chair: Mahesh Jethanandani | contact | |||
<mailto:mjethanandani@gmail.com> | "WG Web: <http://tools.ietf.org/wg/netconf/> | |||
WG List: <mailto:netconf@ietf.org> | ||||
Editor: Kent Watsen | WG Chair: Mehmet Ersue | |||
<mailto:kwatsen@juniper.net>"; | <mailto:mehmet.ersue@nsn.com> | |||
description | WG Chair: Mahesh Jethanandani | |||
"This module defines a keychain to centralize management of | <mailto:mjethanandani@gmail.com> | |||
security credentials. | ||||
Copyright (c) 2014 IETF Trust and the persons identified as | Editor: Kent Watsen | |||
authors of the code. All rights reserved. | <mailto:kwatsen@juniper.net>"; | |||
Redistribution and use in source and binary forms, with or | description | |||
without modification, is permitted pursuant to, and subject | "This module defines a keychain to centralize management of | |||
to the license terms contained in, the Simplified BSD | security credentials. | |||
License set forth in Section 4.c of the IETF Trust's | ||||
Legal Provisions Relating to IETF Documents | ||||
(http://trustee.ietf.org/license-info). | ||||
This version of this YANG module is part of RFC VVVV; see | Copyright (c) 2014 IETF Trust and the persons identified as | |||
the RFC itself for full legal notices."; | authors of the code. All rights reserved. | |||
revision "2015-10-09" { | Redistribution and use in source and binary forms, with or | |||
description | without modification, is permitted pursuant to, and subject | |||
"Initial version"; | to the license terms contained in, the Simplified BSD | |||
reference | License set forth in Section 4.c of the IETF Trust's | |||
"RFC VVVV: NETCONF Server and RESTCONF Server Configuration | Legal Provisions Relating to IETF Documents | |||
Models"; | (http://trustee.ietf.org/license-info). | |||
} | ||||
container keychain { | This version of this YANG module is part of RFC VVVV; see | |||
description | the RFC itself for full legal notices."; | |||
"A list of private-keys and their associated certificates, as | ||||
well as lists of trusted certificates for client certificate | ||||
authentication. RPCs are provided to generate a new private | ||||
key and to generate a certificate signing requests."; | ||||
container private-keys { | revision "2016-03-16" { | |||
description | description | |||
"A list of private key maintained by the keychain."; | "Initial version"; | |||
list private-key { | reference | |||
key name; | "RFC VVVV: NETCONF Server and RESTCONF Server Configuration | |||
description | Models"; | |||
"A private key."; | } | |||
leaf name { | ||||
type string; | ||||
description | ||||
"An arbitrary name for the private key."; | ||||
} | ||||
leaf algorithm { | ||||
type enumeration { | ||||
enum rsa { description "TBD"; } | ||||
enum dsa { description "TBD"; } | ||||
enum secp192r1 { description "TBD"; } | ||||
enum sect163k1 { description "TBD"; } | ||||
enum sect163r2 { description "TBD"; } | ||||
enum secp224r1 { description "TBD"; } | ||||
enum sect233k1 { description "TBD"; } | ||||
enum sect233r1 { description "TBD"; } | ||||
enum secp256r1 { description "TBD"; } | ||||
enum sect283k1 { description "TBD"; } | ||||
enum sect283r1 { description "TBD"; } | ||||
enum secp384r1 { description "TBD"; } | ||||
enum sect409k1 { description "TBD"; } | ||||
enum sect409r1 { description "TBD"; } | ||||
enum secp521r1 { description "TBD"; } | ||||
enum sect571k1 { description "TBD"; } | ||||
enum sect571r1 { description "TBD"; } | ||||
} | ||||
config false; | ||||
description | ||||
"The algorithm used by the private key."; | ||||
} | ||||
leaf key-length { | ||||
type uint32; | ||||
config false; | ||||
description | ||||
"The key-length used by the private key."; | ||||
} | ||||
leaf public-key { | ||||
type string; | ||||
config false; | ||||
description | ||||
"The public-key matching the private key."; | ||||
} | ||||
container certificates { | ||||
list certificate { | ||||
key name; | ||||
description | ||||
"A certificate for this public key."; | ||||
leaf name { | ||||
type string; | ||||
description | ||||
"An arbitrary name for the certificate."; | ||||
} | ||||
leaf chain { | ||||
type binary; | ||||
description | ||||
"The certificate itself, as well as an ordered | ||||
sequence of intermediate certificates leading | ||||
to a trust anchor, as specified by RFC 5246, | ||||
Section 7.4.2."; | ||||
reference | ||||
"RFC 5246: The Transport Layer Security (TLS) | ||||
Protocol Version 1.2"; | ||||
} | ||||
} | ||||
description | ||||
"A list of certificates for this public key."; | ||||
} | ||||
action generate-certificate-signing-request { | ||||
description | ||||
"Generates a certificate signing request structure for | ||||
the associated private key using the passed subject | ||||
and attribute values."; | ||||
input { | ||||
leaf subject { | ||||
type binary; | ||||
mandatory true; | ||||
description | ||||
"The distinguished name of the certificate subject | ||||
(the entity whose public key is to be certified). | ||||
This field is encoded the same as the 'subject' | ||||
field in the CertificationRequestInfo type defined | ||||
in RFC 2986, Section 4.1."; | ||||
reference | ||||
"RFC 2986: PKCS #10: Certification Request Syntax | ||||
Specification Version 1.7"; | ||||
} | ||||
leaf attributes { | ||||
type binary; | ||||
description | ||||
"A collection of attributes providing additional | ||||
information about the subject of the certificate. | ||||
This field is encoded the same as the 'attributes' | ||||
field in the CertificationRequestInfo type defined | ||||
in RFC 2986, Section 4.1."; | ||||
reference | ||||
"RFC 2986: PKCS #10: Certification Request Syntax | ||||
Specification Version 1.7"; | ||||
} | ||||
} | ||||
output { | ||||
leaf certificate-signing-request { | ||||
type binary; | ||||
mandatory true; | ||||
description | ||||
"The certificate signing request to be signed by | ||||
a certificate authority. This field is encoded | ||||
as the CertificationRequest type defined in | ||||
RFC 2986, Section 4.2."; | ||||
reference | ||||
"RFC 2986: PKCS #10: Certification Request Syntax | ||||
Specification Version 1.7"; | ||||
} | ||||
} | ||||
} | ||||
} | ||||
action generate-private-key { | ||||
description | ||||
"Generates a private key using the specified algorithm and | ||||
key length."; | ||||
input { | ||||
leaf name { | ||||
type string; | ||||
mandatory true; | ||||
description | ||||
"The name this private-key should have when listed | ||||
in /keychain/private-keys. As such, the passed | ||||
value must not match any existing 'name' value."; | ||||
} | ||||
leaf algorithm { | ||||
type enumeration { | ||||
enum rsa { description "TBD"; } | ||||
enum dsa { description "TBD"; } | ||||
enum secp192r1 { description "TBD"; } | ||||
enum sect163k1 { description "TBD"; } | ||||
enum sect163r2 { description "TBD"; } | ||||
enum secp224r1 { description "TBD"; } | ||||
enum sect233k1 { description "TBD"; } | ||||
enum sect233r1 { description "TBD"; } | ||||
enum secp256r1 { description "TBD"; } | ||||
enum sect283k1 { description "TBD"; } | ||||
enum sect283r1 { description "TBD"; } | ||||
enum secp384r1 { description "TBD"; } | ||||
enum sect409k1 { description "TBD"; } | ||||
enum sect409r1 { description "TBD"; } | ||||
enum secp521r1 { description "TBD"; } | ||||
enum sect571k1 { description "TBD"; } | ||||
enum sect571r1 { description "TBD"; } | ||||
} | ||||
mandatory true; | ||||
description | ||||
"The algorithm to be used."; | ||||
} | ||||
leaf key-length { | ||||
type uint32; | ||||
description | ||||
"For algorithms that need a key length specified | ||||
when generating the key."; | ||||
} | ||||
} | ||||
} | ||||
} | ||||
list trusted-certificates { | typedef algorithms { | |||
key name; | type enumeration { | |||
description | enum rsa { description "The RSA algorithm."; } | |||
"A list of lists of trusted certificates."; | enum secp192r1 { description "The secp192r1 algorithm."; } | |||
leaf name { | enum secp256r1 { description "The secp256r1 algorithm."; } | |||
type string; | enum secp384r1 { description "The secp384r1 algorithm."; } | |||
description | enum secp521r1 { description "The secp521r1 algorithm."; } | |||
"An arbitrary name for this list of trusted | // what about ecdh_x25519 and ecdh_x448 in TLS 1.3? | |||
certificates."; | } | |||
} | description | |||
leaf description { | "Asymmetric key algorithms. This list has been trimmed down | |||
type string; | to the minimal subset of algorithms recommended by the IETF. | |||
description | Please see the Design Consideration section in RFC VVVV for | |||
"An arbitrary description for this list of trusted | more information about this."; | |||
certificates."; | } | |||
} | ||||
list trusted-certificate { | ||||
key name; | ||||
description | ||||
"A list of trusted certificates for a specific use."; | ||||
leaf name { | ||||
type string; | ||||
description | ||||
"An arbitrary name for this trusted certificate."; | ||||
} | ||||
leaf certificate { | ||||
type binary; | ||||
description | ||||
"The binary certificate structure as specified by RFC | ||||
5246, Section 7.4.6, i.e.,: opaque ASN.1Cert<1..2^24>; | ||||
"; | ||||
reference | ||||
"RFC 5246: The Transport Layer Security (TLS) | ||||
Protocol Version 1.2"; | ||||
} | ||||
} | ||||
} | ||||
} | ||||
} | ||||
<CODE ENDS> | container keychain { | |||
description | ||||
"A list of private-keys and their associated certificates, as | ||||
well as lists of trusted certificates for client certificate | ||||
authentication. RPCs are provided to generate a new private | ||||
key and to generate a certificate signing requests."; | ||||
container private-keys { | ||||
description | ||||
"A list of private key maintained by the keychain."; | ||||
list private-key { | ||||
key name; | ||||
description | ||||
"A private key."; | ||||
leaf name { | ||||
type string; | ||||
description | ||||
"An arbitrary name for the private key."; | ||||
} | ||||
leaf algorithm { | ||||
type kc:algorithms; | ||||
config false; | ||||
description | ||||
"The algorithm used by the private key."; | ||||
} | ||||
leaf key-length { | ||||
type uint32; | ||||
config false; | ||||
description | ||||
"The key-length used by the private key."; | ||||
} | ||||
leaf public-key { | ||||
type binary; | ||||
config false; | ||||
mandatory true; | ||||
description | ||||
"An OneAsymmetricKey 'publicKey' structure as specified | ||||
by RFC 5958, Section 2 encoded using the ASN.1 | ||||
distinguished encoding rules (DER), as specified | ||||
in ITU-T X.690."; | ||||
reference | ||||
"RFC 5958: | ||||
Asymmetric Key Packages | ||||
ITU-T X.690: | ||||
Information technology - ASN.1 encoding rules: | ||||
Specification of Basic Encoding Rules (BER), | ||||
Canonical Encoding Rules (CER) and Distinguished | ||||
Encoding Rules (DER)."; | ||||
} | ||||
container certificate-chains { | ||||
description | ||||
"Certificate chains associated with this private key. | ||||
More than one chain per key is enabled to support, | ||||
for instance, a TPM-protected key that has associated | ||||
both IDevID and LDevID certificates."; | ||||
list certificate-chain { | ||||
key name; | ||||
description | ||||
"A certificate chain for this public key."; | ||||
leaf name { | ||||
type string; | ||||
description | ||||
"An arbitrary name for the certificate chain."; | ||||
} | ||||
leaf-list certificate { | ||||
type binary; | ||||
ordered-by user; | ||||
description | ||||
"An X.509 v3 certificate structure as specified by RFC | ||||
5280, Section 4 encoded using the ASN.1 distinguished | ||||
encoding rules (DER), as specified in ITU-T X.690. | ||||
The list of certificates that run from the server | ||||
certificate towards the trust anchor. The chain MAY | ||||
include the trust anchor certificate itself."; | ||||
reference | ||||
"RFC 5280: | ||||
Internet X.509 Public Key Infrastructure Certificate | ||||
and Certificate Revocation List (CRL) Profile. | ||||
ITU-T X.690: | ||||
Information technology - ASN.1 encoding rules: | ||||
Specification of Basic Encoding Rules (BER), | ||||
Canonical Encoding Rules (CER) and Distinguished | ||||
Encoding Rules (DER)."; | ||||
} | ||||
} | ||||
} | ||||
action generate-certificate-signing-request { | ||||
description | ||||
"Generates a certificate signing request structure for | ||||
the associated private key using the passed subject and | ||||
attribute values. Please review both the Security | ||||
Considerations and Design Considerations sections in | ||||
RFC VVVV for more information regarding this action | ||||
statement."; | ||||
input { | ||||
leaf subject { | ||||
type binary; | ||||
mandatory true; | ||||
description | ||||
"The 'subject' field from the CertificationRequestInfo | ||||
structure as specified by RFC 2986, Section 4.1 encoded | ||||
using the ASN.1 distinguished encoding rules (DER), as | ||||
specified in ITU-T X.690."; | ||||
reference | ||||
"RFC 2986: | ||||
PKCS #10: Certification Request Syntax Specification | ||||
Version 1.7. | ||||
ITU-T X.690: | ||||
Information technology - ASN.1 encoding rules: | ||||
Specification of Basic Encoding Rules (BER), | ||||
Canonical Encoding Rules (CER) and Distinguished | ||||
Encoding Rules (DER)."; | ||||
} | ||||
leaf attributes { | ||||
type binary; | ||||
description | ||||
"The 'attributes' field from the CertificationRequestInfo | ||||
structure as specified by RFC 2986, Section 4.1 encoded | ||||
using the ASN.1 distinguished encoding rules (DER), as | ||||
specified in ITU-T X.690."; | ||||
reference | ||||
"RFC 2986: | ||||
PKCS #10: Certification Request Syntax Specification | ||||
Version 1.7. | ||||
ITU-T X.690: | ||||
Information technology - ASN.1 encoding rules: | ||||
Specification of Basic Encoding Rules (BER), | ||||
Canonical Encoding Rules (CER) and Distinguished | ||||
Encoding Rules (DER)."; | ||||
} | ||||
} | ||||
output { | ||||
leaf certificate-signing-request { | ||||
type binary; | ||||
mandatory true; | ||||
description | ||||
"A CertificationRequest structure as specified by RFC | ||||
2986, Section 4.1 encoded using the ASN.1 distinguished | ||||
encoding rules (DER), as specified in ITU-T X.690."; | ||||
reference | ||||
"RFC 2986: | ||||
PKCS #10: Certification Request Syntax Specification | ||||
Version 1.7. | ||||
ITU-T X.690: | ||||
Information technology - ASN.1 encoding rules: | ||||
Specification of Basic Encoding Rules (BER), | ||||
Canonical Encoding Rules (CER) and Distinguished | ||||
Encoding Rules (DER)."; | ||||
} | ||||
} | ||||
} | ||||
} | ||||
action generate-private-key { | ||||
description | ||||
"Requests the device to generate a private key using the | ||||
specified algorithm and key length."; | ||||
input { | ||||
leaf name { | ||||
type string; | ||||
mandatory true; | ||||
description | ||||
"The name this private-key should have when listed | ||||
in /keychain/private-keys. As such, the passed | ||||
value must not match any existing 'name' value."; | ||||
} | ||||
leaf key-usage { | ||||
type enumeration { | ||||
enum signing { description "signing"; } | ||||
enum encryption { description "encryption"; } | ||||
// unclear if these should be somehow more | ||||
// specific or varied. | ||||
} | ||||
description | ||||
"An optional parameter further restricting the use of | ||||
this key. Some algorithms inherently restrict use | ||||
(DH for signing) whereas others can support more than | ||||
one use (RSA). This flag forces the device to only | ||||
allow the key to be used for the indicated purposes."; | ||||
} | ||||
leaf algorithm { | ||||
type kc:algorithms; | ||||
mandatory true; | ||||
description | ||||
"The algorithm to be used when generating the key."; | ||||
} | ||||
leaf key-length { | ||||
type uint32; | ||||
description | ||||
"For algorithms that need a key length specified | ||||
when generating the key."; | ||||
} | ||||
} | ||||
} | ||||
action load-private-key { | ||||
description | ||||
"Requests the device to load a private key"; | ||||
input { | ||||
leaf name { | ||||
type string; | ||||
mandatory true; | ||||
description | ||||
"The name this private-key should have when listed | ||||
in /keychain/private-keys. As such, the passed | ||||
value must not match any existing 'name' value."; | ||||
} | ||||
leaf private-key { | ||||
type binary; | ||||
mandatory true; | ||||
description | ||||
"An OneAsymmetricKey structure as specified by RFC | ||||
5958, Section 2 encoded using the ASN.1 distinguished | ||||
encoding rules (DER), as specified in ITU-T X.690. | ||||
Note that this is the raw private with no shrouding | ||||
to protect it. The strength of this private key | ||||
MUST NOT be greater than the strength of the secure | ||||
connection over which it is communicated. Devices | ||||
SHOULD fail this request if ever that happens."; | ||||
reference | ||||
"RFC 5958: | ||||
Asymmetric Key Packages | ||||
ITU-T X.690: | ||||
Information technology - ASN.1 encoding rules: | ||||
Specification of Basic Encoding Rules (BER), | ||||
Canonical Encoding Rules (CER) and Distinguished | ||||
Encoding Rules (DER)."; | ||||
} | ||||
} | ||||
} | ||||
} | ||||
list trusted-certificates { | ||||
key name; | ||||
description | ||||
"A list of trusted certificates. Each list SHOULD be specific | ||||
to a purpose. For instance, there could be one list for | ||||
authenticating NETCONF/RESTCONF client certificates, and | ||||
another list for authenticating manufacturer-signed data, | ||||
and yet another list for authenticated web servers."; | ||||
leaf name { | ||||
type string; | ||||
description | ||||
"An arbitrary name for this list of trusted certificates."; | ||||
} | ||||
leaf description { | ||||
type string; | ||||
description | ||||
"An arbitrary description for this list of trusted | ||||
certificates."; | ||||
} | ||||
list trusted-certificate { | ||||
key name; | ||||
description | ||||
"A trusted certificate for a specific use."; | ||||
leaf name { | ||||
type string; | ||||
description | ||||
"An arbitrary name for this trusted certificate."; | ||||
} | ||||
leaf certificate { | ||||
type binary; | ||||
description | ||||
"An X.509 v3 certificate structure as specified by RFC | ||||
5280, Section 4 encoded using the ASN.1 distinguished | ||||
encoding rules (DER), as specified in ITU-T X.690."; | ||||
reference | ||||
"RFC 5280: | ||||
Internet X.509 Public Key Infrastructure Certificate | ||||
and Certificate Revocation List (CRL) Profile. | ||||
ITU-T X.690: | ||||
Information technology - ASN.1 encoding rules: | ||||
Specification of Basic Encoding Rules (BER), | ||||
Canonical Encoding Rules (CER) and Distinguished | ||||
Encoding Rules (DER)."; | ||||
} | ||||
} | ||||
} | ||||
} | ||||
notification certificate-expiration { | ||||
description | ||||
"A notification indicating that a configured certificate is | ||||
either about to expire or has already expired. When to send | ||||
notifications is an implementation specific decision, but | ||||
it is RECOMMENDED that a notification be sent once a month | ||||
for 3 months, then once a week for four weeks, and then once | ||||
a day thereafter."; | ||||
leaf certificate { | ||||
type instance-identifier; | ||||
mandatory true; | ||||
description | ||||
"Identifies which certificate is expiring or is expired."; | ||||
} | ||||
leaf expiration-date { | ||||
type yang:date-and-time; | ||||
mandatory true; | ||||
description | ||||
"Identifies the expiration date on the certificate."; | ||||
} | ||||
} | ||||
} | ||||
<CODE ENDS> | ||||
4.2. The SSH Server Model | 4.2. The SSH Server Model | |||
The SSH Server model presented in this section presents two YANG | The SSH Server model presented in this section presents two YANG | |||
groupings, one for a server that opens a socket to accept TCP | groupings, one for a server that opens a socket to accept TCP | |||
connections on, and another for a server that has had the TCP | connections on, and another for a server that has had the TCP | |||
connection opened for it already (e.g., inetd). | connection opened for it already (e.g., inetd). | |||
The SSH Server model (like the TLS Server model presented below) is | The SSH Server model (like the TLS Server model presented below) is | |||
provided as a grouping so that it can be used in different contexts. | provided as a grouping so that it can be used in different contexts. | |||
skipping to change at page 21, line 36 ¶ | skipping to change at page 27, line 34 ¶ | |||
+--rw port inet:port-number | +--rw port inet:port-number | |||
+--rw host-keys | +--rw host-keys | |||
| +--rw host-key* [name] | | +--rw host-key* [name] | |||
| +--rw name string | | +--rw name string | |||
| +--rw (type)? | | +--rw (type)? | |||
| +--:(public-key) | | +--:(public-key) | |||
| | +--rw public-key? -> /kc:keychain/private-keys/pri | | | +--rw public-key? -> /kc:keychain/private-keys/pri | |||
vate-key/name | vate-key/name | |||
| +--:(certificate) | | +--:(certificate) | |||
| +--rw certificate? -> /kc:keychain/private-keys/pri | | +--rw certificate? -> /kc:keychain/private-keys/pri | |||
vate-key/certificates/certificate/name {ssh-x509-certs}? | vate-key/certificate-chains/certificate-chain/certificate {ssh-x509-cer | |||
ts}? | ||||
+--rw client-cert-auth {ssh-x509-certs}? | +--rw client-cert-auth {ssh-x509-certs}? | |||
+--rw trusted-ca-certs? -> /kc:keychain/trusted-certific | +--rw trusted-ca-certs? -> /kc:keychain/trusted-certific | |||
ates/name | ates/name | |||
+--rw trusted-client-certs? -> /kc:keychain/trusted-certific | +--rw trusted-client-certs? -> /kc:keychain/trusted-certific | |||
ates/name | ates/name | |||
4.2.2. Example Usage | 4.2.2. Example Usage | |||
This section shows how it would appear if the temporary listening- | This section shows how it would appear if the temporary listening- | |||
ssh-server container just mentioned above were populated with some | ssh-server container just mentioned above were populated with some | |||
skipping to change at page 22, line 27 ¶ | skipping to change at page 28, line 27 ¶ | |||
deployment-specific-ca-certs | deployment-specific-ca-certs | |||
</trusted-ca-certs> | </trusted-ca-certs> | |||
<trusted-client-certs> | <trusted-client-certs> | |||
explicitly-trusted-client-certs | explicitly-trusted-client-certs | |||
</trusted-client-certs> | </trusted-client-certs> | |||
</client-cert-auth> | </client-cert-auth> | |||
</listening-ssh-server> | </listening-ssh-server> | |||
4.2.3. YANG Model | 4.2.3. YANG Model | |||
<CODE BEGINS> file "ietf-ssh-server@2015-10-09.yang" | This YANG module has a normative reference to [RFC4253]. | |||
module ietf-ssh-server { | ||||
yang-version 1.1; | ||||
namespace "urn:ietf:params:xml:ns:yang:ietf-ssh-server"; | <CODE BEGINS> file "ietf-ssh-server@2016-03-16.yang" | |||
prefix "ts"; | ||||
import ietf-inet-types { // RFC 6991 | module ietf-ssh-server { | |||
prefix inet; | yang-version 1.1; | |||
} | ||||
import ietf-keychain { | ||||
prefix kc; // RFC VVVV | ||||
revision-date 2015-10-09; | ||||
} | ||||
organization | namespace "urn:ietf:params:xml:ns:yang:ietf-ssh-server"; | |||
"IETF NETCONF (Network Configuration) Working Group"; | prefix "ts"; | |||
contact | import ietf-inet-types { // RFC 6991 | |||
"WG Web: <http://tools.ietf.org/wg/netconf/> | prefix inet; | |||
WG List: <mailto:netconf@ietf.org> | } | |||
import ietf-system-keychain { | ||||
prefix kc; // RFC VVVV | ||||
revision-date 2016-03-16; | ||||
} | ||||
WG Chair: Mehmet Ersue | organization | |||
<mailto:mehmet.ersue@nsn.com> | "IETF NETCONF (Network Configuration) Working Group"; | |||
WG Chair: Mahesh Jethanandani | contact | |||
<mailto:mjethanandani@gmail.com> | "WG Web: <http://tools.ietf.org/wg/netconf/> | |||
WG List: <mailto:netconf@ietf.org> | ||||
WG Chair: Mehmet Ersue | ||||
<mailto:mehmet.ersue@nsn.com> | ||||
Editor: Kent Watsen | WG Chair: Mahesh Jethanandani | |||
<mailto:kwatsen@juniper.net>"; | <mailto:mjethanandani@gmail.com> | |||
description | Editor: Kent Watsen | |||
"This module defines a reusable grouping for a SSH server that | <mailto:kwatsen@juniper.net>"; | |||
can be used as a basis for specific SSH server instances. | ||||
Copyright (c) 2014 IETF Trust and the persons identified as | description | |||
authors of the code. All rights reserved. | "This module defines a reusable grouping for a SSH server that | |||
can be used as a basis for specific SSH server instances. | ||||
Redistribution and use in source and binary forms, with or | Copyright (c) 2014 IETF Trust and the persons identified as | |||
without modification, is permitted pursuant to, and subject | authors of the code. All rights reserved. | |||
to the license terms contained in, the Simplified BSD | ||||
License set forth in Section 4.c of the IETF Trust's | ||||
Legal Provisions Relating to IETF Documents | ||||
(http://trustee.ietf.org/license-info). | ||||
This version of this YANG module is part of RFC VVVV; see | Redistribution and use in source and binary forms, with or | |||
the RFC itself for full legal notices."; | without modification, is permitted pursuant to, and subject | |||
to the license terms contained in, the Simplified BSD | ||||
License set forth in Section 4.c of the IETF Trust's | ||||
Legal Provisions Relating to IETF Documents | ||||
(http://trustee.ietf.org/license-info). | ||||
revision "2015-10-09" { | This version of this YANG module is part of RFC VVVV; see | |||
description | the RFC itself for full legal notices."; | |||
"Initial version"; | ||||
reference | ||||
"RFC VVVV: NETCONF Server and RESTCONF Server Configuration | ||||
Models"; | ||||
} | ||||
// features | revision "2016-03-16" { | |||
feature ssh-x509-certs { | description | |||
description | "Initial version"; | |||
"The ssh-x509-certs feature indicates that the NETCONF | reference | |||
server supports RFC 6187"; | "RFC VVVV: NETCONF Server and RESTCONF Server Configuration | |||
reference | Models"; | |||
"RFC 6187: X.509v3 Certificates for Secure Shell | } | |||
Authentication"; | ||||
} | ||||
// grouping | // features | |||
grouping non-listening-ssh-server-grouping { | feature ssh-x509-certs { | |||
description | description | |||
"A reusable grouping for a SSH server that can be used as a | "The ssh-x509-certs feature indicates that the NETCONF | |||
basis for specific SSH server instances."; | server supports RFC 6187"; | |||
reference | ||||
"RFC 6187: X.509v3 Certificates for Secure Shell | ||||
Authentication"; | ||||
} | ||||
container host-keys { | // grouping | |||
description | grouping non-listening-ssh-server-grouping { | |||
"The list of host-keys the SSH server will present when | description | |||
establishing a SSH connection."; | "A reusable grouping for a SSH server that can be used as a | |||
list host-key { | basis for specific SSH server instances."; | |||
key name; | ||||
min-elements 1; | ||||
ordered-by user; | ||||
description | ||||
"An ordered list of host keys the SSH server advertises | ||||
when sending its ??? message."; | ||||
reference | ||||
"RFC ????: ..."; | ||||
leaf name { | ||||
type string; | ||||
mandatory true; | ||||
description | ||||
"An arbitrary name for this host-key"; | ||||
} | ||||
choice type { | ||||
description | ||||
"The type of host key being specified"; | ||||
leaf public-key { | ||||
type leafref { | ||||
path "/kc:keychain/kc:private-keys/kc:private-key/" | ||||
+ "kc:name"; | ||||
} | ||||
description | ||||
"The name of a private-key in the keychain."; | ||||
} | ||||
leaf certificate { | ||||
if-feature ssh-x509-certs; | ||||
type leafref { | ||||
path "/kc:keychain/kc:private-keys/kc:private-key/" | ||||
+ "kc:certificates/kc:certificate/kc:name"; | ||||
} | ||||
description | ||||
"The name of a certificate in the keychain."; | ||||
} | ||||
} | ||||
} | ||||
} | ||||
container client-cert-auth { | container host-keys { | |||
if-feature ssh-x509-certs; | description | |||
description | "The list of host-keys the SSH server will present when | |||
"A reference to a list of trusted certificate authority (CA) | establishing a SSH connection."; | |||
certificates and a reference to a list of trusted client | list host-key { | |||
certificates."; | key name; | |||
leaf trusted-ca-certs { | min-elements 1; | |||
type leafref { | ordered-by user; | |||
path "/kc:keychain/kc:trusted-certificates/kc:name"; | description | |||
} | "An ordered list of host keys the SSH server will use to | |||
description | construct its ordered list of algorithms, when sending | |||
"A reference to a list of certificate authority (CA) | its SSH_MSG_KEXINIT message, as defined in Section 7.1 | |||
certificates used by the SSH server to authenticate | of RFC 4253."; | |||
SSH client certificates."; | reference | |||
} | "RFC 4253: The Secure Shell (SSH) Transport Layer Protocol"; | |||
leaf name { | ||||
type string; | ||||
mandatory true; | ||||
description | ||||
"An arbitrary name for this host-key"; | ||||
} | ||||
choice type { | ||||
description | ||||
"The type of host key being specified"; | ||||
leaf public-key { | ||||
type leafref { | ||||
path "/kc:keychain/kc:private-keys/kc:private-key/" | ||||
+ "kc:name"; | ||||
} | ||||
description | ||||
"The public key is actually identified by the name of | ||||
its cooresponding private-key in the keychain."; | ||||
} | ||||
leaf certificate { | ||||
if-feature ssh-x509-certs; | ||||
type leafref { | ||||
path "/kc:keychain/kc:private-keys/kc:private-key/" | ||||
+ "kc:certificate-chains/kc:certificate-chain/" | ||||
+ "kc:certificate"; | ||||
} | ||||
description | ||||
"The name of a certificate in the keychain."; | ||||
} | ||||
} | ||||
} | ||||
leaf trusted-client-certs { | } | |||
type leafref { | ||||
path "/kc:keychain/kc:trusted-certificates/kc:name"; | ||||
} | ||||
description | ||||
"A reference to a list of client certificates used by | ||||
the SSH server to authenticate SSH client certificates. | ||||
A clients certificate is authenticated if it is an | ||||
exact match to a configured trusted client certificate."; | ||||
} | ||||
} | ||||
} | ||||
grouping listening-ssh-server-grouping { | container client-cert-auth { | |||
description | if-feature ssh-x509-certs; | |||
"A reusable grouping for a SSH server that can be used as a | description | |||
basis for specific SSH server instances."; | "A reference to a list of trusted certificate authority (CA) | |||
leaf address { | certificates and a reference to a list of trusted client | |||
type inet:ip-address; | certificates."; | |||
description | leaf trusted-ca-certs { | |||
"The IP address of the interface to listen on. The SSH | type leafref { | |||
server will listen on all interfaces if no value is | path "/kc:keychain/kc:trusted-certificates/kc:name"; | |||
specified."; | } | |||
} | description | |||
leaf port { | "A reference to a list of certificate authority (CA) | |||
type inet:port-number; | certificates used by the SSH server to authenticate | |||
mandatory true; // will a default augmented in work? | SSH client certificates."; | |||
description | } | |||
"The local port number on this interface the SSH server | ||||
listens on."; | ||||
} | ||||
uses non-listening-ssh-server-grouping; | ||||
} | ||||
// RFC Editor: please remove the following container block | leaf trusted-client-certs { | |||
// when publishing this document as an RFC. | type leafref { | |||
path "/kc:keychain/kc:trusted-certificates/kc:name"; | ||||
} | ||||
description | ||||
"A reference to a list of client certificates used by | ||||
the SSH server to authenticate SSH client certificates. | ||||
A clients certificate is authenticated if it is an | ||||
exact match to a configured trusted client certificate."; | ||||
} | ||||
} | ||||
} | ||||
container listening-ssh-server { | grouping listening-ssh-server-grouping { | |||
description | description | |||
"This container is only present to enable `pyang` | "A reusable grouping for a SSH server that can be used as a | |||
tree diagram output, as a grouping by itself has | basis for specific SSH server instances."; | |||
no protocol accessible nodes to output."; | leaf address { | |||
type inet:ip-address; | ||||
description | ||||
"The IP address of the interface to listen on. The SSH | ||||
server will listen on all interfaces if no value is | ||||
specified."; | ||||
} | ||||
leaf port { | ||||
type inet:port-number; | ||||
mandatory true; // will a default augmented in work? | ||||
description | ||||
"The local port number on this interface the SSH server | ||||
listens on."; | ||||
} | ||||
uses non-listening-ssh-server-grouping; | ||||
} | ||||
uses listening-ssh-server-grouping; | container listening-ssh-server { | |||
} | description | |||
"This container will be removed by the RFC Editor. This | ||||
container is currently only present in order to enable | ||||
the `pyang` tool to generate tree diagram output of this | ||||
module (used in the draft) as it otherwise would not | ||||
contain any protocol accessible nodes to output."; | ||||
} | uses listening-ssh-server-grouping; | |||
} | ||||
} | ||||
<CODE ENDS> | <CODE ENDS> | |||
4.3. The TLS Server Model | 4.3. The TLS Server Model | |||
The TLS Server model presented in this section presents two YANG | The TLS Server model presented in this section presents two YANG | |||
groupings, one for a server that opens a socket to accept TCP | groupings, one for a server that opens a socket to accept TCP | |||
connections on, and another for a server that has had the TCP | connections on, and another for a server that has had the TCP | |||
connection opened for it already (e.g., inetd). | connection opened for it already (e.g., inetd). | |||
The TLS Server model (like the SSH Server model presented above) is | The TLS Server model (like the SSH Server model presented above) is | |||
provided as a grouping so that it can be used in different contexts. | provided as a grouping so that it can be used in different contexts. | |||
skipping to change at page 27, line 12 ¶ | skipping to change at page 33, line 18 ¶ | |||
groupings by themselves have no protocol accessible nodes, and hence | groupings by themselves have no protocol accessible nodes, and hence | |||
`pyang` would output an empty tree diagram. | `pyang` would output an empty tree diagram. | |||
module: ietf-tls-server | module: ietf-tls-server | |||
+--rw listening-tls-server | +--rw listening-tls-server | |||
+--rw address? inet:ip-address | +--rw address? inet:ip-address | |||
+--rw port inet:port-number | +--rw port inet:port-number | |||
+--rw certificates | +--rw certificates | |||
| +--rw certificate* [name] | | +--rw certificate* [name] | |||
| +--rw name -> /kc:keychain/private-keys/private-key/cert | | +--rw name -> /kc:keychain/private-keys/private-key/cert | |||
ificates/certificate/name | ificate-chains/certificate-chain/certificate | |||
+--rw client-auth | +--rw client-auth | |||
+--rw trusted-ca-certs? -> /kc:keychain/trusted-certific | +--rw trusted-ca-certs? -> /kc:keychain/trusted-certific | |||
ates/name | ates/name | |||
+--rw trusted-client-certs? -> /kc:keychain/trusted-certific | +--rw trusted-client-certs? -> /kc:keychain/trusted-certific | |||
ates/name | ates/name | |||
4.3.2. Example Usage | 4.3.2. Example Usage | |||
<listening-tls-server | <listening-tls-server | |||
xmlns="urn:ietf:params:xml:ns:yang:ietf-tls-server"> | xmlns="urn:ietf:params:xml:ns:yang:ietf-tls-server"> | |||
skipping to change at page 27, line 41 ¶ | skipping to change at page 33, line 47 ¶ | |||
deployment-specific-ca-certs | deployment-specific-ca-certs | |||
</trusted-ca-certs> | </trusted-ca-certs> | |||
<trusted-client-certs> | <trusted-client-certs> | |||
explicitly-trusted-client-certs | explicitly-trusted-client-certs | |||
</trusted-client-certs> | </trusted-client-certs> | |||
</client-auth> | </client-auth> | |||
</listening-tls-server> | </listening-tls-server> | |||
4.3.3. YANG Model | 4.3.3. YANG Model | |||
<CODE BEGINS> file "ietf-tls-server@2015-10-09.yang" | <CODE BEGINS> file "ietf-tls-server@2016-03-16.yang" | |||
module ietf-tls-server { | module ietf-tls-server { | |||
yang-version 1.1; | yang-version 1.1; | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-tls-server"; | namespace "urn:ietf:params:xml:ns:yang:ietf-tls-server"; | |||
prefix "ts"; | prefix "ts"; | |||
import ietf-inet-types { // RFC 6991 | import ietf-inet-types { // RFC 6991 | |||
prefix inet; | prefix inet; | |||
} | } | |||
import ietf-keychain { | import ietf-system-keychain { | |||
prefix kc; // RFC VVVV | prefix kc; // RFC VVVV | |||
revision-date 2015-10-09; | revision-date 2016-03-16; | |||
} | } | |||
organization | organization | |||
"IETF NETCONF (Network Configuration) Working Group"; | "IETF NETCONF (Network Configuration) Working Group"; | |||
contact | contact | |||
"WG Web: <http://tools.ietf.org/wg/netconf/> | "WG Web: <http://tools.ietf.org/wg/netconf/> | |||
WG List: <mailto:netconf@ietf.org> | WG List: <mailto:netconf@ietf.org> | |||
WG Chair: Mehmet Ersue | WG Chair: Mehmet Ersue | |||
skipping to change at page 28, line 42 ¶ | skipping to change at page 34, line 48 ¶ | |||
Redistribution and use in source and binary forms, with or | Redistribution and use in source and binary forms, with or | |||
without modification, is permitted pursuant to, and subject | without modification, is permitted pursuant to, and subject | |||
to the license terms contained in, the Simplified BSD | to the license terms contained in, the Simplified BSD | |||
License set forth in Section 4.c of the IETF Trust's | License set forth in Section 4.c of the IETF Trust's | |||
Legal Provisions Relating to IETF Documents | Legal Provisions Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info). | (http://trustee.ietf.org/license-info). | |||
This version of this YANG module is part of RFC VVVV; see | This version of this YANG module is part of RFC VVVV; see | |||
the RFC itself for full legal notices."; | the RFC itself for full legal notices."; | |||
revision "2015-10-09" { | revision "2016-03-16" { | |||
description | description | |||
"Initial version"; | "Initial version"; | |||
reference | reference | |||
"RFC VVVV: NETCONF Server and RESTCONF Server Configuration | "RFC VVVV: NETCONF Server and RESTCONF Server Configuration | |||
Models"; | Models"; | |||
} | } | |||
// grouping | // grouping | |||
grouping non-listening-tls-server-grouping { | grouping non-listening-tls-server-grouping { | |||
description | description | |||
"A reusable grouping for a TLS server that can be used as a | "A reusable grouping for a TLS server that can be used as a | |||
basis for specific TLS server instances."; | basis for specific TLS server instances."; | |||
container certificates { | container certificates { | |||
description | description | |||
"The list of certificates the TLS server will present when | "The list of certificates the TLS server will present when | |||
establishing a TLS connection."; | establishing a TLS connection in its Certificate message, | |||
as defined in Section 7.4.2 in RRC 5246."; | ||||
reference | ||||
"RFC 5246: | ||||
The Transport Layer Security (TLS) Protocol Version 1.2"; | ||||
list certificate { | list certificate { | |||
key name; | key name; | |||
min-elements 1; | min-elements 1; | |||
description | description | |||
"An unordered list of certificates the TLS server can pick | "An unordered list of certificates the TLS server can pick | |||
from when sending its Server Certificate message."; | from when sending its Server Certificate message."; | |||
reference | reference | |||
"RFC 5246: The TLS Protocol, Section 7.4.2"; | "RFC 5246: The TLS Protocol, Section 7.4.2"; | |||
leaf name { | leaf name { | |||
type leafref { | type leafref { | |||
path "/kc:keychain/kc:private-keys/kc:private-key/" | path "/kc:keychain/kc:private-keys/kc:private-key/" | |||
+ "kc:certificates/kc:certificate/kc:name"; | + "kc:certificate-chains/kc:certificate-chain/" | |||
+ "kc:certificate"; | ||||
} | } | |||
description | description | |||
"The name of the certificate in the keychain."; | "The name of the certificate in the keychain."; | |||
} | } | |||
} | } | |||
} | } | |||
container client-auth { | container client-auth { | |||
description | description | |||
"A reference to a list of trusted certificate authority (CA) | "A reference to a list of trusted certificate authority (CA) | |||
skipping to change at page 30, line 33 ¶ | skipping to change at page 36, line 44 ¶ | |||
leaf port { | leaf port { | |||
type inet:port-number; | type inet:port-number; | |||
mandatory true; // will a default augmented in work? | mandatory true; // will a default augmented in work? | |||
description | description | |||
"The local port number on this interface the TLTLS server | "The local port number on this interface the TLTLS server | |||
listens on."; | listens on."; | |||
} | } | |||
uses non-listening-tls-server-grouping; | uses non-listening-tls-server-grouping; | |||
} | } | |||
// RFC Editor: please remove the following container block | ||||
// when publishing this document as an RFC. | ||||
container listening-tls-server { | container listening-tls-server { | |||
description | description | |||
"This container is only present to enable `pyang` | "This container will be removed by the RFC Editor. This | |||
tree diagram output, as a grouping by itself has | container is currently only present in order to enable | |||
no protocol accessible nodes to output."; | the `pyang` tool to generate tree diagram output of this | |||
module (used in the draft) as it otherwise would not | ||||
contain any protocol accessible nodes to output."; | ||||
uses listening-tls-server-grouping; | uses listening-tls-server-grouping; | |||
} | } | |||
} | } | |||
<CODE ENDS> | <CODE ENDS> | |||
4.4. The NETCONF Server Model | 4.4. The NETCONF Server Model | |||
The NETCONF Server model presented in this section supports servers | The NETCONF Server model presented in this section supports servers | |||
both listening for connections to accept as well as initiating call- | both listening for connections to accept as well as initiating call- | |||
home connections. This model also supports both the SSH and TLS | home connections. This model also supports both the SSH and TLS | |||
transport protocols, using the SSH Server and TLS Server groupings | transport protocols, using the SSH Server and TLS Server groupings | |||
presented in Section 4.2 and Section 4.3 respectively. All private | presented in Section 4.2 and Section 4.3 respectively. All private | |||
keys and trusted certificates are held in the keychain model | keys and trusted certificates are held in the keychain model | |||
skipping to change at page 31, line 46 ¶ | skipping to change at page 38, line 4 ¶ | |||
| +--:(ssh) {ssh-listen}? | | +--:(ssh) {ssh-listen}? | |||
| | +--rw ssh | | | +--rw ssh | |||
| | +--rw address? inet:ip-address | | | +--rw address? inet:ip-address | |||
| | +--rw port inet:port-number | | | +--rw port inet:port-number | |||
| | +--rw host-keys | | | +--rw host-keys | |||
| | | +--rw host-key* [name] | | | | +--rw host-key* [name] | |||
| | | +--rw name string | | | | +--rw name string | |||
| | | +--rw (type)? | | | | +--rw (type)? | |||
| | | +--:(public-key) | | | | +--:(public-key) | |||
| | | | +--rw public-key? -> /kc:keychain/p | | | | | +--rw public-key? -> /kc:keychain/p | |||
rivate-keys/private-key/name | rivate-keys/private-key/name | |||
| | | +--:(certificate) | | | | +--:(certificate) | |||
| | | +--rw certificate? -> /kc:keychain/p | | | | +--rw certificate? -> /kc:keychain/p | |||
rivate-keys/private-key/certificates/certificate/name {ssh-x509-certs}? | rivate-keys/private-key/certificate-chains/certificate-chain/certificat | |||
e {ssh-x509-certs}? | ||||
| | +--rw client-cert-auth {ssh-x509-certs}? | | | +--rw client-cert-auth {ssh-x509-certs}? | |||
| | +--rw trusted-ca-certs? -> /kc:keychain/t | | | +--rw trusted-ca-certs? -> /kc:keychain/t | |||
rusted-certificates/name | rusted-certificates/name | |||
| | +--rw trusted-client-certs? -> /kc:keychain/t | | | +--rw trusted-client-certs? -> /kc:keychain/t | |||
rusted-certificates/name | rusted-certificates/name | |||
| +--:(tls) {tls-listen}? | | +--:(tls) {tls-listen}? | |||
| +--rw tls | | +--rw tls | |||
| +--rw address? inet:ip-address | | +--rw address? inet:ip-address | |||
| +--rw port inet:port-number | | +--rw port inet:port-number | |||
| +--rw certificates | | +--rw certificates | |||
| | +--rw certificate* [name] | | | +--rw certificate* [name] | |||
| | +--rw name -> /kc:keychain/private-keys/p | | | +--rw name -> /kc:keychain/private-keys/p | |||
skipping to change at page 32, line 15 ¶ | skipping to change at page 38, line 22 ¶ | |||
rusted-certificates/name | rusted-certificates/name | |||
| | +--rw trusted-client-certs? -> /kc:keychain/t | | | +--rw trusted-client-certs? -> /kc:keychain/t | |||
rusted-certificates/name | rusted-certificates/name | |||
| +--:(tls) {tls-listen}? | | +--:(tls) {tls-listen}? | |||
| +--rw tls | | +--rw tls | |||
| +--rw address? inet:ip-address | | +--rw address? inet:ip-address | |||
| +--rw port inet:port-number | | +--rw port inet:port-number | |||
| +--rw certificates | | +--rw certificates | |||
| | +--rw certificate* [name] | | | +--rw certificate* [name] | |||
| | +--rw name -> /kc:keychain/private-keys/p | | | +--rw name -> /kc:keychain/private-keys/p | |||
rivate-key/certificates/certificate/name | rivate-key/certificate-chains/certificate-chain/certificate | |||
| +--rw client-auth | | +--rw client-auth | |||
| +--rw trusted-ca-certs? -> /kc:keychain/t | | +--rw trusted-ca-certs? -> /kc:keychain/t | |||
rusted-certificates/name | rusted-certificates/name | |||
| +--rw trusted-client-certs? -> /kc:keychain/t | | +--rw trusted-client-certs? -> /kc:keychain/t | |||
rusted-certificates/name | rusted-certificates/name | |||
| +--rw cert-maps | | +--rw cert-maps | |||
| +--rw cert-to-name* [id] | | +--rw cert-to-name* [id] | |||
| +--rw id uint32 | | +--rw id uint32 | |||
| +--rw fingerprint x509c2n:tls-fingerpr | | +--rw fingerprint x509c2n:tls-fingerpr | |||
int | int | |||
skipping to change at page 32, line 48 ¶ | skipping to change at page 39, line 6 ¶ | |||
| | | +--rw port? inet:port-number | | | | +--rw port? inet:port-number | |||
| | +--rw host-keys | | | +--rw host-keys | |||
| | | +--rw host-key* [name] | | | | +--rw host-key* [name] | |||
| | | +--rw name string | | | | +--rw name string | |||
| | | +--rw (type)? | | | | +--rw (type)? | |||
| | | +--:(public-key) | | | | +--:(public-key) | |||
| | | | +--rw public-key? -> /kc:keychain/p | | | | | +--rw public-key? -> /kc:keychain/p | |||
rivate-keys/private-key/name | rivate-keys/private-key/name | |||
| | | +--:(certificate) | | | | +--:(certificate) | |||
| | | +--rw certificate? -> /kc:keychain/p | | | | +--rw certificate? -> /kc:keychain/p | |||
rivate-keys/private-key/certificates/certificate/name {ssh-x509-certs}? | rivate-keys/private-key/certificate-chains/certificate-chain/certificat | |||
e {ssh-x509-certs}? | ||||
| | +--rw client-cert-auth {ssh-x509-certs}? | | | +--rw client-cert-auth {ssh-x509-certs}? | |||
| | +--rw trusted-ca-certs? -> /kc:keychain/t | | | +--rw trusted-ca-certs? -> /kc:keychain/t | |||
rusted-certificates/name | rusted-certificates/name | |||
| | +--rw trusted-client-certs? -> /kc:keychain/t | | | +--rw trusted-client-certs? -> /kc:keychain/t | |||
rusted-certificates/name | rusted-certificates/name | |||
| +--:(tls) {tls-call-home}? | | +--:(tls) {tls-call-home}? | |||
| +--rw tls | | +--rw tls | |||
| +--rw endpoints | | +--rw endpoints | |||
| | +--rw endpoint* [name] | | | +--rw endpoint* [name] | |||
| | +--rw name string | | | +--rw name string | |||
| | +--rw address inet:host | | | +--rw address inet:host | |||
| | +--rw port? inet:port-number | | | +--rw port? inet:port-number | |||
| +--rw certificates | | +--rw certificates | |||
| | +--rw certificate* [name] | | | +--rw certificate* [name] | |||
skipping to change at page 33, line 16 ¶ | skipping to change at page 39, line 23 ¶ | |||
| +--:(tls) {tls-call-home}? | | +--:(tls) {tls-call-home}? | |||
| +--rw tls | | +--rw tls | |||
| +--rw endpoints | | +--rw endpoints | |||
| | +--rw endpoint* [name] | | | +--rw endpoint* [name] | |||
| | +--rw name string | | | +--rw name string | |||
| | +--rw address inet:host | | | +--rw address inet:host | |||
| | +--rw port? inet:port-number | | | +--rw port? inet:port-number | |||
| +--rw certificates | | +--rw certificates | |||
| | +--rw certificate* [name] | | | +--rw certificate* [name] | |||
| | +--rw name -> /kc:keychain/private-keys/p | | | +--rw name -> /kc:keychain/private-keys/p | |||
rivate-key/certificates/certificate/name | rivate-key/certificate-chains/certificate-chain/certificate | |||
| +--rw client-auth | | +--rw client-auth | |||
| +--rw trusted-ca-certs? -> /kc:keychain/t | | +--rw trusted-ca-certs? -> /kc:keychain/t | |||
rusted-certificates/name | rusted-certificates/name | |||
| +--rw trusted-client-certs? -> /kc:keychain/t | | +--rw trusted-client-certs? -> /kc:keychain/t | |||
rusted-certificates/name | rusted-certificates/name | |||
| +--rw cert-maps | | +--rw cert-maps | |||
| +--rw cert-to-name* [id] | | +--rw cert-to-name* [id] | |||
| +--rw id uint32 | | +--rw id uint32 | |||
| +--rw fingerprint x509c2n:tls-fingerpr | | +--rw fingerprint x509c2n:tls-fingerpr | |||
int | int | |||
skipping to change at page 37, line 28 ¶ | skipping to change at page 43, line 34 ¶ | |||
</reconnect-strategy> | </reconnect-strategy> | |||
</netconf-client> | </netconf-client> | |||
</call-home> | </call-home> | |||
</netconf-server> | </netconf-server> | |||
4.4.3. YANG Model | 4.4.3. YANG Model | |||
This YANG module imports YANG types from [RFC6991] and [RFC7407]. | This YANG module imports YANG types from [RFC6991] and [RFC7407]. | |||
<CODE BEGINS> file "ietf-netconf-server@2015-10-09.yang" | <CODE BEGINS> file "ietf-netconf-server@2016-03-16.yang" | |||
module ietf-netconf-server { | module ietf-netconf-server { | |||
yang-version 1.1; | yang-version 1.1; | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-netconf-server"; | namespace "urn:ietf:params:xml:ns:yang:ietf-netconf-server"; | |||
prefix "ncserver"; | prefix "ncserver"; | |||
import ietf-inet-types { // RFC 6991 | import ietf-inet-types { // RFC 6991 | |||
prefix inet; | prefix inet; | |||
} | } | |||
import ietf-x509-cert-to-name { // RFC 7407 | import ietf-x509-cert-to-name { // RFC 7407 | |||
prefix x509c2n; | prefix x509c2n; | |||
} | } | |||
import ietf-ssh-server { // RFC VVVV | import ietf-ssh-server { // RFC VVVV | |||
prefix ss; | prefix ss; | |||
revision-date 2015-10-09; | revision-date 2016-03-16; | |||
} | } | |||
import ietf-tls-server { // RFC VVVV | import ietf-tls-server { // RFC VVVV | |||
prefix ts; | prefix ts; | |||
revision-date 2015-10-09; | revision-date 2016-03-16; | |||
} | } | |||
organization | organization | |||
"IETF NETCONF (Network Configuration) Working Group"; | "IETF NETCONF (Network Configuration) Working Group"; | |||
contact | contact | |||
"WG Web: <http://tools.ietf.org/wg/netconf/> | "WG Web: <http://tools.ietf.org/wg/netconf/> | |||
WG List: <mailto:netconf@ietf.org> | WG List: <mailto:netconf@ietf.org> | |||
WG Chair: Mehmet Ersue | WG Chair: Mehmet Ersue | |||
<mailto:mehmet.ersue@nsn.com> | <mailto:mehmet.ersue@nsn.com> | |||
skipping to change at page 38, line 37 ¶ | skipping to change at page 44, line 44 ¶ | |||
Redistribution and use in source and binary forms, with or | Redistribution and use in source and binary forms, with or | |||
without modification, is permitted pursuant to, and subject | without modification, is permitted pursuant to, and subject | |||
to the license terms contained in, the Simplified BSD | to the license terms contained in, the Simplified BSD | |||
License set forth in Section 4.c of the IETF Trust's | License set forth in Section 4.c of the IETF Trust's | |||
Legal Provisions Relating to IETF Documents | Legal Provisions Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info). | (http://trustee.ietf.org/license-info). | |||
This version of this YANG module is part of RFC VVVV; see | This version of this YANG module is part of RFC VVVV; see | |||
the RFC itself for full legal notices."; | the RFC itself for full legal notices."; | |||
revision "2015-10-09" { | revision "2016-03-16" { | |||
description | description | |||
"Initial version"; | "Initial version"; | |||
reference | reference | |||
"RFC VVVV: NETCONF Server and RESTCONF Server Configuration | "RFC VVVV: NETCONF Server and RESTCONF Server Configuration | |||
Models"; | Models"; | |||
} | } | |||
// Features | // Features | |||
feature ssh-listen { | feature ssh-listen { | |||
description | description | |||
"The ssh-listen feature indicates that the NETCONF server | "The ssh-listen feature indicates that the NETCONF server | |||
supports opening a port to accept NETCONF over SSH | supports opening a port to accept NETCONF over SSH | |||
client connections."; | client connections."; | |||
reference | reference | |||
"RFC 6242: Using the NETCONF Protocol over Secure Shell (SSH)"; | "RFC 6242: Using the NETCONF Protocol over Secure Shell (SSH)"; | |||
} | } | |||
skipping to change at page 39, line 25 ¶ | skipping to change at page 45, line 30 ¶ | |||
reference | reference | |||
"RFC YYYY: NETCONF Call Home and RESTCONF Call Home"; | "RFC YYYY: NETCONF Call Home and RESTCONF Call Home"; | |||
} | } | |||
feature tls-listen { | feature tls-listen { | |||
description | description | |||
"The tls-listen feature indicates that the NETCONF server | "The tls-listen feature indicates that the NETCONF server | |||
supports opening a port to accept NETCONF over TLS | supports opening a port to accept NETCONF over TLS | |||
client connections."; | client connections."; | |||
reference | reference | |||
"RFC 5539: Using the NETCONF Protocol over Transport | "RFC 7589: Using the NETCONF Protocol over Transport | |||
Layer Security (TLS) with Mutual X.509 | Layer Security (TLS) with Mutual X.509 | |||
Authentication"; | Authentication"; | |||
} | } | |||
feature tls-call-home { | feature tls-call-home { | |||
description | description | |||
"The tls-call-home feature indicates that the NETCONF | "The tls-call-home feature indicates that the NETCONF | |||
server supports initiating a NETCONF over TLS call | server supports initiating a NETCONF over TLS call | |||
home connection to NETCONF clients."; | home connection to NETCONF clients."; | |||
reference | reference | |||
skipping to change at page 43, line 50 ¶ | skipping to change at page 50, line 4 ¶ | |||
"Configures the keep-alive policy, to proactively | "Configures the keep-alive policy, to proactively | |||
test the aliveness of the SSH/TLS client. An | test the aliveness of the SSH/TLS client. An | |||
unresponsive SSH/TLS client will be dropped after | unresponsive SSH/TLS client will be dropped after | |||
approximately max-attempts * max-wait seconds."; | approximately max-attempts * max-wait seconds."; | |||
reference | reference | |||
"RFC YYYY: NETCONF Call Home and RESTCONF Call | "RFC YYYY: NETCONF Call Home and RESTCONF Call | |||
Home, Section 3.1, item S6"; | Home, Section 3.1, item S6"; | |||
leaf max-wait { | leaf max-wait { | |||
type uint16 { | type uint16 { | |||
range "1..max"; | range "1..max"; | |||
} | } | |||
units seconds; | units seconds; | |||
default 30; | default 30; | |||
description | description | |||
"Sets the amount of time in seconds after which | "Sets the amount of time in seconds after which | |||
if no data has been received from the SSH/TLS | if no data has been received from the SSH/TLS | |||
client, a SSH/TLS-level message will be sent | client, a SSH/TLS-level message will be sent | |||
to test the aliveness of the SSH/TLS client."; | to test the aliveness of the SSH/TLS client."; | |||
} | } | |||
leaf max-attempts { | leaf max-attempts { | |||
type uint8; | type uint8; | |||
default 3; | default 3; | |||
description | description | |||
"Sets the number of maximum number of sequential | "Sets the number of maximum number of sequential | |||
keep-alive messages that can fail to obtain a | keep-alive messages that can fail to obtain a | |||
response from the SSH/TLS client before assuming | response from the SSH/TLS client before assuming | |||
the SSH/TLS client is no longer alive."; | the SSH/TLS client is no longer alive."; | |||
skipping to change at page 48, line 16 ¶ | skipping to change at page 54, line 19 ¶ | |||
| +--rw endpoint* [name] | | +--rw endpoint* [name] | |||
| +--rw name string | | +--rw name string | |||
| +--rw (transport) | | +--rw (transport) | |||
| +--:(tls) {tls-listen}? | | +--:(tls) {tls-listen}? | |||
| +--rw tls | | +--rw tls | |||
| +--rw address? inet:ip-address | | +--rw address? inet:ip-address | |||
| +--rw port inet:port-number | | +--rw port inet:port-number | |||
| +--rw certificates | | +--rw certificates | |||
| | +--rw certificate* [name] | | | +--rw certificate* [name] | |||
| | +--rw name -> /kc:keychain/private-keys/p | | | +--rw name -> /kc:keychain/private-keys/p | |||
rivate-key/certificates/certificate/name | rivate-key/certificate-chains/certificate-chain/certificate | |||
| +--rw client-auth | | +--rw client-auth | |||
| +--rw trusted-ca-certs? -> /kc:keychain/t | | +--rw trusted-ca-certs? -> /kc:keychain/t | |||
rusted-certificates/name | rusted-certificates/name | |||
| +--rw trusted-client-certs? -> /kc:keychain/t | | +--rw trusted-client-certs? -> /kc:keychain/t | |||
rusted-certificates/name | rusted-certificates/name | |||
| +--rw cert-maps | | +--rw cert-maps | |||
| +--rw cert-to-name* [id] | | +--rw cert-to-name* [id] | |||
| +--rw id uint32 | | +--rw id uint32 | |||
| +--rw fingerprint x509c2n:tls-fingerpr | | +--rw fingerprint x509c2n:tls-fingerpr | |||
int | int | |||
skipping to change at page 48, line 43 ¶ | skipping to change at page 54, line 46 ¶ | |||
| +--:(tls) {tls-call-home}? | | +--:(tls) {tls-call-home}? | |||
| +--rw tls | | +--rw tls | |||
| +--rw endpoints | | +--rw endpoints | |||
| | +--rw endpoint* [name] | | | +--rw endpoint* [name] | |||
| | +--rw name string | | | +--rw name string | |||
| | +--rw address inet:host | | | +--rw address inet:host | |||
| | +--rw port? inet:port-number | | | +--rw port? inet:port-number | |||
| +--rw certificates | | +--rw certificates | |||
| | +--rw certificate* [name] | | | +--rw certificate* [name] | |||
| | +--rw name -> /kc:keychain/private-keys/p | | | +--rw name -> /kc:keychain/private-keys/p | |||
rivate-key/certificates/certificate/name | rivate-key/certificate-chains/certificate-chain/certificate | |||
| +--rw client-auth | | +--rw client-auth | |||
| +--rw trusted-ca-certs? -> /kc:keychain/t | | +--rw trusted-ca-certs? -> /kc:keychain/t | |||
rusted-certificates/name | rusted-certificates/name | |||
| +--rw trusted-client-certs? -> /kc:keychain/t | | +--rw trusted-client-certs? -> /kc:keychain/t | |||
rusted-certificates/name | rusted-certificates/name | |||
| +--rw cert-maps | | +--rw cert-maps | |||
| +--rw cert-to-name* [id] | | +--rw cert-to-name* [id] | |||
| +--rw id uint32 | | +--rw id uint32 | |||
| +--rw fingerprint x509c2n:tls-fingerpr | | +--rw fingerprint x509c2n:tls-fingerpr | |||
int | int | |||
skipping to change at page 51, line 31 ¶ | skipping to change at page 57, line 34 ¶ | |||
</reconnect-strategy> | </reconnect-strategy> | |||
</restconf-client> | </restconf-client> | |||
</call-home> | </call-home> | |||
</restconf-server> | </restconf-server> | |||
4.5.3. YANG Model | 4.5.3. YANG Model | |||
This YANG module imports YANG types from [RFC6991] and [RFC7407]. | This YANG module imports YANG types from [RFC6991] and [RFC7407]. | |||
<CODE BEGINS> file "ietf-restconf-server@2015-10-09.yang" | <CODE BEGINS> file "ietf-restconf-server@2016-03-16.yang" | |||
module ietf-restconf-server { | module ietf-restconf-server { | |||
yang-version 1.1; | yang-version 1.1; | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-restconf-server"; | namespace "urn:ietf:params:xml:ns:yang:ietf-restconf-server"; | |||
prefix "rcserver"; | prefix "rcserver"; | |||
//import ietf-netconf-acm { | //import ietf-netconf-acm { | |||
// prefix nacm; // RFC 6536 | // prefix nacm; // RFC 6536 | |||
//} | //} | |||
import ietf-inet-types { // RFC 6991 | import ietf-inet-types { // RFC 6991 | |||
prefix inet; | prefix inet; | |||
} | } | |||
import ietf-x509-cert-to-name { // RFC 7407 | import ietf-x509-cert-to-name { // RFC 7407 | |||
prefix x509c2n; | prefix x509c2n; | |||
} | } | |||
import ietf-tls-server { // RFC VVVV | import ietf-tls-server { // RFC VVVV | |||
prefix ts; | prefix ts; | |||
revision-date 2015-10-09; | revision-date 2016-03-16; | |||
} | } | |||
organization | organization | |||
"IETF NETCONF (Network Configuration) Working Group"; | "IETF NETCONF (Network Configuration) Working Group"; | |||
contact | contact | |||
"WG Web: <http://tools.ietf.org/wg/netconf/> | "WG Web: <http://tools.ietf.org/wg/netconf/> | |||
WG List: <mailto:netconf@ietf.org> | WG List: <mailto:netconf@ietf.org> | |||
WG Chair: Mehmet Ersue | WG Chair: Mehmet Ersue | |||
skipping to change at page 52, line 40 ¶ | skipping to change at page 58, line 41 ¶ | |||
Redistribution and use in source and binary forms, with or | Redistribution and use in source and binary forms, with or | |||
without modification, is permitted pursuant to, and subject | without modification, is permitted pursuant to, and subject | |||
to the license terms contained in, the Simplified BSD | to the license terms contained in, the Simplified BSD | |||
License set forth in Section 4.c of the IETF Trust's | License set forth in Section 4.c of the IETF Trust's | |||
Legal Provisions Relating to IETF Documents | Legal Provisions Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info). | (http://trustee.ietf.org/license-info). | |||
This version of this YANG module is part of RFC VVVV; see | This version of this YANG module is part of RFC VVVV; see | |||
the RFC itself for full legal notices."; | the RFC itself for full legal notices."; | |||
revision "2015-10-09" { | revision "2016-03-16" { | |||
description | description | |||
"Initial version"; | "Initial version"; | |||
reference | reference | |||
"RFC VVVV: NETCONF Server and RESTCONF Server Configuration | "RFC VVVV: NETCONF Server and RESTCONF Server Configuration | |||
Models"; | Models"; | |||
} | } | |||
// Features | // Features | |||
feature tls-listen { | feature tls-listen { | |||
description | description | |||
"The listen feature indicates that the RESTCONF server | "The listen feature indicates that the RESTCONF server | |||
supports opening a port to listen for incoming RESTCONF | supports opening a port to listen for incoming RESTCONF | |||
client connections."; | client connections."; | |||
reference | reference | |||
"RFC XXXX: RESTCONF Protocol"; | "RFC XXXX: RESTCONF Protocol"; | |||
} | } | |||
feature tls-call-home { | feature tls-call-home { | |||
skipping to change at page 56, line 14 ¶ | skipping to change at page 62, line 15 ¶ | |||
Section 3.1, item S6"; | Section 3.1, item S6"; | |||
leaf max-wait { | leaf max-wait { | |||
type uint16 { | type uint16 { | |||
range "1..max"; | range "1..max"; | |||
} | } | |||
units seconds; | units seconds; | |||
default 30; | default 30; | |||
description | description | |||
"Sets the amount of time in seconds after which | "Sets the amount of time in seconds after which | |||
if no data has been received from the TLS | if no data has been received from the TLS | |||
client, a TLS-level message will be sent to | client, a TLS-level message will be sent to | |||
test the aliveness of the TLS client."; | test the aliveness of the TLS client."; | |||
} | } | |||
leaf max-attempts { | leaf max-attempts { | |||
type uint8; | type uint8; | |||
default 3; | default 3; | |||
description | description | |||
"Sets the number of sequential keep-alive messages | "Sets the number of sequential keep-alive messages | |||
that can fail to obtain a response from the TLS | that can fail to obtain a response from the TLS | |||
client before assuming the TLS client is no | client before assuming the TLS client is no | |||
longer alive."; | longer alive."; | |||
skipping to change at page 56, line 51 ¶ | skipping to change at page 63, line 4 ¶ | |||
range "1..max"; | range "1..max"; | |||
} | } | |||
units minutes; | units minutes; | |||
default 60; | default 60; | |||
description | description | |||
"The maximum amount of unconnected time the RESTCONF | "The maximum amount of unconnected time the RESTCONF | |||
server will wait before re-establishing a connection | server will wait before re-establishing a connection | |||
to the RESTCONF client. The RESTCONF server may | to the RESTCONF client. The RESTCONF server may | |||
initiate a connection before this time if desired | initiate a connection before this time if desired | |||
(e.g., to deliver a notification)."; | (e.g., to deliver a notification)."; | |||
} | ||||
} | ||||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
container reconnect-strategy { | container reconnect-strategy { | |||
description | description | |||
"The reconnection strategy guides how a RESTCONF server | "The reconnection strategy guides how a RESTCONF server | |||
reconnects to an RESTCONF client, after losing a connection | reconnects to an RESTCONF client, after losing a connection | |||
to it, even if due to a reboot. The RESTCONF server starts | to it, even if due to a reboot. The RESTCONF server starts | |||
with the specified endpoint and tries to connect to it | with the specified endpoint and tries to connect to it | |||
skipping to change at page 57, line 52 ¶ | skipping to change at page 64, line 4 ¶ | |||
range "1..max"; | range "1..max"; | |||
} | } | |||
default 3; | default 3; | |||
description | description | |||
"Specifies the number times the RESTCONF server tries to | "Specifies the number times the RESTCONF server tries to | |||
connect to a specific endpoint before moving on to the | connect to a specific endpoint before moving on to the | |||
next endpoint in the list (round robin)."; | next endpoint in the list (round robin)."; | |||
} | } | |||
} | } | |||
} | } | |||
} | ||||
} | ||||
} | } | |||
grouping cert-maps-grouping { | grouping cert-maps-grouping { | |||
description | description | |||
"A grouping that defines a container around the | "A grouping that defines a container around the | |||
cert-to-name structure defined in RFC 7407."; | cert-to-name structure defined in RFC 7407."; | |||
container cert-maps { | container cert-maps { | |||
uses x509c2n:cert-to-name; | uses x509c2n:cert-to-name; | |||
description | description | |||
"The cert-maps container is used by a TLS-based RESTCONF | "The cert-maps container is used by a TLS-based RESTCONF | |||
skipping to change at page 59, line 22 ¶ | skipping to change at page 65, line 23 ¶ | |||
specified."; | specified."; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
<CODE ENDS> | <CODE ENDS> | |||
5. Security Considerations | 5. Design Considerations | |||
This section needs to be filled in... | The manner that the both local and remote endpoints have been | |||
specified in the ietf-netconf-server and ietf-rest-server modules | ||||
does not directly support virtual routing and forwarding (VRF), | ||||
though they have been specified in such a way to enable external | ||||
modules will augment in VRF designations when needed. | ||||
6. IANA Considerations | This document uses PKCS #10 [RFC2986] for the "generate-certificate- | |||
signing-request" action. The use of Certificate Request Message | ||||
Format (CRMF) [RFC4211] was considered, but is was unclear if there | ||||
was market demand for it, and so support for CRMF has been left out | ||||
of this specification. If it is desired to support CRMF in the | ||||
future, placing a "choice" statement in both the input and output | ||||
statements, along with an "if-feature" statement on the CRMF option, | ||||
would enable a backwards compatible solution. | ||||
This document puts a limit of the number of elliptical curves | ||||
supported. This was done to match industry trends in IETF best | ||||
practice (e.g., matching work being done in TLS 1.3). In additional | ||||
algorithms are needed, they MAY be augmented in by another module, or | ||||
added directly in a future version of this document. | ||||
Both this document and Key Chain YANG Data Model | ||||
[draft-ietf-rtgwg-yang-key-chain] define keychain YANG modules. The | ||||
authors looked at this and agree that they two modules server | ||||
different purposes and hence not worth merging into one document. To | ||||
underscore this further, this document renamed its module from "ietf- | ||||
keychain" to "ietf-system-keychain" and that other document renamed | ||||
its module from "ietf-key-chain" to "ietf-routing-key-chain". | ||||
For the trusted-certificates list, Trust Anchor Format [RFC5914] was | ||||
evaluated and deemed inappropriate due to this document's need to | ||||
also support pinning. That is, pinning a client-certificate to | ||||
support NETCONF over TLS client authentication. | ||||
6. Security Considerations | ||||
This document defines a keychain mechanism that is entrusted with the | ||||
safe keeping of private keys, and the safe keeping of trusted | ||||
certificates. Nowhere in this API is there an ability to access | ||||
(read out) a private key once it is known to the keychain. Further, | ||||
associated public keys and attributes (e.g., algorithm name, key | ||||
length, etc.) are read-only. That said, this document allows for the | ||||
deletion of private keys and their certificates, as well the deletion | ||||
of trusted certificates. Access control mechanisms (e.g., NACM | ||||
[RFC6536]) MUST be in place so as to authorize such client actions. | ||||
Further, whilst the data model allows for private keys and trusted | ||||
certificates in general to be deleted, implementations should be well | ||||
aware that some privates keys (e.g., those in a TPM) and some trusted | ||||
certificates, should never be deleted, regardless if the | ||||
authorization mechanisms would generally allow for such actions. | ||||
For the "generate-certificate-signing-request" action, it is | ||||
RECOMMENDED that devices implement assert channel binding [RFC5056], | ||||
so as to ensure that the application layer that sent the request is | ||||
the same as the device authenticated in the secure transport layer | ||||
was established. | ||||
This document defines a data model that includes a list of private | ||||
keys. These private keys MAY be deleted using standard NETCONF or | ||||
RESTCONF operations (e.g., <edit-config>). Implementations SHOULD | ||||
automatically (without explicit request) zeroize these keys in the | ||||
most secure manner available, so as to prevent the remnants of their | ||||
persisted storage locations from being analyzed in any meaningful | ||||
way. | ||||
The keychain module define within this document defines the "load- | ||||
private-key" action enabling a device to load a client-supplied | ||||
private key. This is a private key with no shrouding to protect it. | ||||
The strength of this private key MUST NOT be greater than the | ||||
strength of the underlying secure transport connection over which it | ||||
is communicated. Devices SHOULD fail this request if ever the | ||||
strength of the private key is greater then the strength of the | ||||
underlying transport. | ||||
A denial of service (DoS) attack MAY occur if the NETCONF server | ||||
limits the maximum number of NETCONF sessions it will accept (i.e. | ||||
the 'max-sessions' field in the ietf-netconf-server module is not | ||||
zero) and either the "hello-timeout" or "idle-timeout" fields in | ||||
ietf-netconf-server module have been set to indicate the NETCONF | ||||
server should wait forever (i.e. set to zero). | ||||
7. IANA Considerations | ||||
7.1. The IETF XML Registry | ||||
This document registers two URIs in the IETF XML registry [RFC2119]. | This document registers two URIs in the IETF XML registry [RFC2119]. | |||
Following the format in [RFC3688], the following registrations are | Following the format in [RFC3688], the following registrations are | |||
requested: | requested: | |||
URI: urn:ietf:params:xml:ns:yang:ietf-netconf-server | URI: urn:ietf:params:xml:ns:yang:ietf-netconf-server | |||
Registrant Contact: The NETCONF WG of the IETF. | Registrant Contact: The NETCONF WG of the IETF. | |||
XML: N/A, the requested URI is an XML namespace. | XML: N/A, the requested URI is an XML namespace. | |||
URI: urn:ietf:params:xml:ns:yang:ietf-restconf-server | URI: urn:ietf:params:xml:ns:yang:ietf-restconf-server | |||
Registrant Contact: The NETCONF WG of the IETF. | Registrant Contact: The NETCONF WG of the IETF. | |||
XML: N/A, the requested URI is an XML namespace. | XML: N/A, the requested URI is an XML namespace. | |||
This document registers two YANG modules in the YANG Module Names | 7.2. The YANG Module Names Registry | |||
This document registers five YANG modules in the YANG Module Names | ||||
registry [RFC6020]. Following the format in [RFC6020], the the | registry [RFC6020]. Following the format in [RFC6020], the the | |||
following registrations are requested: | following registrations are requested: | |||
name: ietf-keychain | name: ietf-system-keychain | |||
namespace: urn:ietf:params:xml:ns:yang:ietf-keychain | namespace: urn:ietf:params:xml:ns:yang:ietf-system-keychain | |||
prefix: kc | prefix: kc | |||
reference: RFC VVVV | reference: RFC VVVV | |||
name: ietf-ssh-server | name: ietf-ssh-server | |||
namespace: urn:ietf:params:xml:ns:yang:ietf-ssh-server | namespace: urn:ietf:params:xml:ns:yang:ietf-ssh-server | |||
prefix: ssvr | prefix: ssvr | |||
reference: RFC VVVV | reference: RFC VVVV | |||
name: ietf-tls-server | name: ietf-tls-server | |||
namespace: urn:ietf:params:xml:ns:yang:ietf-tls-server | namespace: urn:ietf:params:xml:ns:yang:ietf-tls-server | |||
skipping to change at page 60, line 30 ¶ | skipping to change at page 68, line 30 ¶ | |||
name: ietf-netconf-server | name: ietf-netconf-server | |||
namespace: urn:ietf:params:xml:ns:yang:ietf-netconf-server | namespace: urn:ietf:params:xml:ns:yang:ietf-netconf-server | |||
prefix: ncsvr | prefix: ncsvr | |||
reference: RFC VVVV | reference: RFC VVVV | |||
name: ietf-restconf-server | name: ietf-restconf-server | |||
namespace: urn:ietf:params:xml:ns:yang:ietf-restconf-server | namespace: urn:ietf:params:xml:ns:yang:ietf-restconf-server | |||
prefix: rcsvr | prefix: rcsvr | |||
reference: RFC VVVV | reference: RFC VVVV | |||
7. Other Considerations | ||||
The YANG modules define herein do not themselves support virtual | ||||
routing and forwarding (VRF). It is expected that external modules | ||||
will augment in VRF designations when needed. | ||||
8. Acknowledgements | 8. Acknowledgements | |||
The authors would like to thank for following for lively discussions | The authors would like to thank for following for lively discussions | |||
on list and in the halls (ordered by last name): Andy Bierman, Martin | on list and in the halls (ordered by last name): Andy Bierman, Martin | |||
Bjorklund, Benoit Claise, Mehmet Ersue, David Lamparter, Alan Luchuk, | Bjorklund, Benoit Claise, Mehmet Ersue, David Lamparter, Alan Luchuk, | |||
Ladislav Lhotka, Radek Krejci, Tom Petch, Phil Shafer, and Bert | Ladislav Lhotka, Radek Krejci, Tom Petch, Phil Shafer, Sean Turner, | |||
Wijnen. | and Bert Wijnen. | |||
Juergen Schoenwaelder and was partly funded by Flamingo, a Network of | Juergen Schoenwaelder and was partly funded by Flamingo, a Network of | |||
Excellence project (ICT-318488) supported by the European Commission | Excellence project (ICT-318488) supported by the European Commission | |||
under its Seventh Framework Programme. | under its Seventh Framework Programme. | |||
9. References | 9. References | |||
9.1. Normative References | 9.1. Normative References | |||
[draft-ietf-netconf-call-home] | ||||
Watsen, K., "NETCONF Call Home and RESTCONF Call Home", | ||||
draft-ieft-netconf-call-home-02 (work in progress), 2014. | ||||
[draft-ietf-netconf-restconf] | ||||
Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | ||||
Protocol", draft-ieft-netconf-restconf-04 (work in | ||||
progress), 2014. | ||||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, March 1997. | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | ||||
<http://www.rfc-editor.org/info/rfc2119>. | ||||
[RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the | [RFC2986] Nystrom, M. and B. Kaliski, "PKCS #10: Certification | |||
Network Configuration Protocol (NETCONF)", RFC 6020, | Request Syntax Specification Version 1.7", RFC 2986, | |||
October 2010. | DOI 10.17487/RFC2986, November 2000, | |||
<http://www.rfc-editor.org/info/rfc2986>. | ||||
[RFC4253] Ylonen, T. and C. Lonvick, Ed., "The Secure Shell (SSH) | ||||
Transport Layer Protocol", RFC 4253, DOI 10.17487/RFC4253, | ||||
January 2006, <http://www.rfc-editor.org/info/rfc4253>. | ||||
[RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., | ||||
Housley, R., and W. Polk, "Internet X.509 Public Key | ||||
Infrastructure Certificate and Certificate Revocation List | ||||
(CRL) Profile", RFC 5280, DOI 10.17487/RFC5280, May 2008, | ||||
<http://www.rfc-editor.org/info/rfc5280>. | ||||
[RFC5958] Turner, S., "Asymmetric Key Packages", RFC 5958, | ||||
DOI 10.17487/RFC5958, August 2010, | ||||
<http://www.rfc-editor.org/info/rfc5958>. | ||||
[RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for | ||||
the Network Configuration Protocol (NETCONF)", RFC 6020, | ||||
DOI 10.17487/RFC6020, October 2010, | ||||
<http://www.rfc-editor.org/info/rfc6020>. | ||||
[RFC6187] Igoe, K. and D. Stebila, "X.509v3 Certificates for Secure | [RFC6187] Igoe, K. and D. Stebila, "X.509v3 Certificates for Secure | |||
Shell Authentication", RFC 6187, March 2011. | Shell Authentication", RFC 6187, DOI 10.17487/RFC6187, | |||
March 2011, <http://www.rfc-editor.org/info/rfc6187>. | ||||
[RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and A. | [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | |||
Bierman, "Network Configuration Protocol (NETCONF)", RFC | and A. Bierman, Ed., "Network Configuration Protocol | |||
6241, June 2011. | (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | |||
<http://www.rfc-editor.org/info/rfc6241>. | ||||
[RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | |||
Shell (SSH)", RFC 6242, June 2011. | Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, | |||
<http://www.rfc-editor.org/info/rfc6242>. | ||||
[RFC6991] Schoenwaelder, J., "Common YANG Data Types", RFC 6991, | [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", | |||
July 2013. | RFC 6991, DOI 10.17487/RFC6991, July 2013, | |||
<http://www.rfc-editor.org/info/rfc6991>. | ||||
[RFC7407] Bjorklund, M. and J. Schoenwaelder, "A YANG Data Model for | [RFC7407] Bjorklund, M. and J. Schoenwaelder, "A YANG Data Model for | |||
SNMP Configuration", RFC 7407, December 2014. | SNMP Configuration", RFC 7407, DOI 10.17487/RFC7407, | |||
December 2014, <http://www.rfc-editor.org/info/rfc7407>. | ||||
[RFC7589] Badra, M., Luchuk, A., and J. Schoenwaelder, "Using the | [RFC7589] Badra, M., Luchuk, A., and J. Schoenwaelder, "Using the | |||
NETCONF Protocol over Transport Layer Security (TLS) with | NETCONF Protocol over Transport Layer Security (TLS) with | |||
Mutual X.509 Authentication", RFC 7589, June 2015. | Mutual X.509 Authentication", RFC 7589, | |||
DOI 10.17487/RFC7589, June 2015, | ||||
[draft-ietf-netconf-call-home] | <http://www.rfc-editor.org/info/rfc7589>. | |||
Watsen, K., "NETCONF Call Home and RESTCONF Call Home", | ||||
draft-ieft-netconf-call-home-02 (work in progress), 2014. | ||||
[draft-ietf-netconf-restconf] | ||||
Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | ||||
Protocol", draft-ieft-netconf-restconf-04 (work in | ||||
progress), 2014. | ||||
9.2. Informative References | 9.2. Informative References | |||
[draft-ietf-rtgwg-yang-key-chain] | ||||
Lindem, A., Qu, Y., Yeung, D., Chen, I., Zhang, J., and Y. | ||||
Yang, "Key Chain YANG Data Model", draft-ietf-rtgwg-yang- | ||||
key-chain (work in progress), 2016, | ||||
<https://tools.ietf.org/html/draft-ietf-rtgwg-yang-key- | ||||
chain>. | ||||
[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | |||
January 2004. | DOI 10.17487/RFC3688, January 2004, | |||
<http://www.rfc-editor.org/info/rfc3688>. | ||||
[RFC4211] Schaad, J., "Internet X.509 Public Key Infrastructure | ||||
Certificate Request Message Format (CRMF)", RFC 4211, | ||||
DOI 10.17487/RFC4211, September 2005, | ||||
<http://www.rfc-editor.org/info/rfc4211>. | ||||
[RFC5056] Williams, N., "On the Use of Channel Bindings to Secure | ||||
Channels", RFC 5056, DOI 10.17487/RFC5056, November 2007, | ||||
<http://www.rfc-editor.org/info/rfc5056>. | ||||
[RFC5914] Housley, R., Ashmore, S., and C. Wallace, "Trust Anchor | ||||
Format", RFC 5914, DOI 10.17487/RFC5914, June 2010, | ||||
<http://www.rfc-editor.org/info/rfc5914>. | ||||
[RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration | ||||
Protocol (NETCONF) Access Control Model", RFC 6536, | ||||
DOI 10.17487/RFC6536, March 2012, | ||||
<http://www.rfc-editor.org/info/rfc6536>. | ||||
Appendix A. Change Log | Appendix A. Change Log | |||
A.1. 00 to 01 | A.1. 00 to 01 | |||
o Restructured document so it flows better | o Restructured document so it flows better | |||
o Added trusted-ca-certs and trusted-client-certs objects into the | o Added trusted-ca-certs and trusted-client-certs objects into the | |||
ietf-system-tls-auth module | ietf-system-tls-auth module | |||
skipping to change at page 65, line 7 ¶ | skipping to change at page 74, line 7 ¶ | |||
o put presence statements on containers where it makes sense (issue | o put presence statements on containers where it makes sense (issue | |||
#53). | #53). | |||
A.8. 07 to 08 | A.8. 07 to 08 | |||
o Per WG consensus, replaced body with the keychain-based approach | o Per WG consensus, replaced body with the keychain-based approach | |||
described in -07's Appendix. | described in -07's Appendix. | |||
o Added a lot of introductory text, improved examples, and what not. | o Added a lot of introductory text, improved examples, and what not. | |||
A.9. 08 to 09 | ||||
o Renamed ietf-keychain to ietf-system-keychain to disambiguate from | ||||
the routing area working group's keychain model (they similarly | ||||
renamed their model from ietf-key-chain to ietf-routing-key- | ||||
chain). | ||||
o Added an action statement to ietf-system-keychain to load a | ||||
private key. | ||||
o Added a notification statement to ietf-system-keychain to notify | ||||
when a certificate is nearing expiration and beyond. | ||||
o Converted all binary types to use ASN.1 DER encoding. | ||||
o Added a Design Considerations section. | ||||
o Filled in the Security Considerations section. | ||||
o Removed the Other Considerations section. | ||||
o Extended the Editorial Note section. | ||||
o Added many Normative and Informative references. | ||||
Appendix B. Open Issues | Appendix B. Open Issues | |||
Please see: https://github.com/netconf-wg/server-model/issues. | Please see: https://github.com/netconf-wg/server-model/issues. | |||
Authors' Addresses | Authors' Addresses | |||
Kent Watsen | Kent Watsen | |||
Juniper Networks | Juniper Networks | |||
EMail: kwatsen@juniper.net | EMail: kwatsen@juniper.net | |||
End of changes. 145 change blocks. | ||||
621 lines changed or deleted | 1040 lines changed or added | |||
This html diff was produced by rfcdiff 1.44. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |