draft-ietf-netconf-netconf-client-server-07.txt   draft-ietf-netconf-netconf-client-server-08.txt 
NETCONF Working Group K. Watsen NETCONF Working Group K. Watsen
Internet-Draft Juniper Networks Internet-Draft Juniper Networks
Intended status: Standards Track September 20, 2018 Intended status: Standards Track October 22, 2018
Expires: March 24, 2019 Expires: April 25, 2019
NETCONF Client and Server Models NETCONF Client and Server Models
draft-ietf-netconf-netconf-client-server-07 draft-ietf-netconf-netconf-client-server-08
Abstract Abstract
This document defines two YANG modules, one module to configure a This document defines two YANG modules, one module to configure a
NETCONF client and the other module to configure a NETCONF server. NETCONF client and the other module to configure a NETCONF server.
Both modules support both the SSH and TLS transport protocols, and Both modules support both the SSH and TLS transport protocols, and
support both standard NETCONF and NETCONF Call Home connections. support both standard NETCONF and NETCONF Call Home connections.
Editorial Note (To be removed by RFC Editor) Editorial Note (To be removed by RFC Editor)
skipping to change at page 2, line 5 skipping to change at page 2, line 5
o "YYYY" --> the assigned RFC value for I-D.ietf-netconf-ssh-client- o "YYYY" --> the assigned RFC value for I-D.ietf-netconf-ssh-client-
server server
o "ZZZZ" --> the assigned RFC value for I-D.ietf-netconf-tls-client- o "ZZZZ" --> the assigned RFC value for I-D.ietf-netconf-tls-client-
server server
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 "2018-09-20" --> the publication date of this draft o "2018-10-22" --> the publication date of this draft
The following Appendix section is to be removed prior to publication: The following Appendix section is to be removed prior to publication:
o Appendix A. Change Log o Appendix A. Change Log
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 https://datatracker.ietf.org/drafts/current/. Drafts is at https://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 March 24, 2019. This Internet-Draft will expire on April 25, 2019.
Copyright Notice Copyright Notice
Copyright (c) 2018 IETF Trust and the persons identified as the Copyright (c) 2018 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
(https://trustee.ietf.org/license-info) in effect on the date of (https://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 . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4
3. The NETCONF Client Model . . . . . . . . . . . . . . . . . . 4 3. The NETCONF Client Model . . . . . . . . . . . . . . . . . . 4
3.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . . . 4 3.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . . . 4
3.2. Example Usage . . . . . . . . . . . . . . . . . . . . . . 11 3.2. Example Usage . . . . . . . . . . . . . . . . . . . . . . 12
3.3. YANG Module . . . . . . . . . . . . . . . . . . . . . . . 14 3.3. YANG Module . . . . . . . . . . . . . . . . . . . . . . . 14
4. The NETCONF Server Model . . . . . . . . . . . . . . . . . . 24 4. The NETCONF Server Model . . . . . . . . . . . . . . . . . . 24
4.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . . . 25 4.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . . . 25
4.2. Example Usage . . . . . . . . . . . . . . . . . . . . . . 32 4.2. Example Usage . . . . . . . . . . . . . . . . . . . . . . 32
4.3. YANG Module . . . . . . . . . . . . . . . . . . . . . . . 37 4.3. YANG Module . . . . . . . . . . . . . . . . . . . . . . . 37
5. Design Considerations . . . . . . . . . . . . . . . . . . . . 49 5. Design Considerations . . . . . . . . . . . . . . . . . . . . 49
5.1. Support all NETCONF transports . . . . . . . . . . . . . 49 5.1. Support all NETCONF transports . . . . . . . . . . . . . 49
5.2. Enable each transport to select which keys to use . . . . 49 5.2. Enable each transport to select which keys to use . . . . 49
5.3. Support authenticating NETCONF clients certificates . . . 49 5.3. Support authenticating NETCONF clients certificates . . . 49
5.4. Support mapping authenticated NETCONF client certificates 5.4. Support mapping authenticated NETCONF client certificates
to usernames . . . . . . . . . . . . . . . . . . . . . . 49 to usernames . . . . . . . . . . . . . . . . . . . . . . 50
5.5. Support both listening for connections and call home . . 50 5.5. Support both listening for connections and call home . . 50
5.6. For Call Home connections . . . . . . . . . . . . . . . . 50 5.6. For Call Home connections . . . . . . . . . . . . . . . . 50
5.6.1. Support more than one NETCONF client . . . . . . . . 50 5.6.1. Support more than one NETCONF client . . . . . . . . 50
5.6.2. Support NETCONF clients having more than one endpoint 50 5.6.2. Support NETCONF clients having more than one endpoint 50
5.6.3. Support a reconnection strategy . . . . . . . . . . . 50 5.6.3. Support a reconnection strategy . . . . . . . . . . . 50
5.6.4. Support both persistent and periodic connections . . 50 5.6.4. Support both persistent and periodic connections . . 51
5.6.5. Reconnection strategy for periodic connections . . . 51 5.6.5. Reconnection strategy for periodic connections . . . 51
5.6.6. Keep-alives for persistent connections . . . . . . . 51 5.6.6. Keep-alives for persistent connections . . . . . . . 51
5.6.7. Customizations for periodic connections . . . . . . . 51 5.6.7. Customizations for periodic connections . . . . . . . 51
6. Security Considerations . . . . . . . . . . . . . . . . . . . 51 6. Security Considerations . . . . . . . . . . . . . . . . . . . 51
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 52 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 52
7.1. The IETF XML Registry . . . . . . . . . . . . . . . . . . 52 7.1. The IETF XML Registry . . . . . . . . . . . . . . . . . . 52
7.2. The YANG Module Names Registry . . . . . . . . . . . . . 53 7.2. The YANG Module Names Registry . . . . . . . . . . . . . 53
8. References . . . . . . . . . . . . . . . . . . . . . . . . . 53 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 53
8.1. Normative References . . . . . . . . . . . . . . . . . . 53 8.1. Normative References . . . . . . . . . . . . . . . . . . 53
8.2. Informative References . . . . . . . . . . . . . . . . . 54 8.2. Informative References . . . . . . . . . . . . . . . . . 54
Appendix A. Change Log . . . . . . . . . . . . . . . . . . . . . 56 Appendix A. Change Log . . . . . . . . . . . . . . . . . . . . . 56
A.1. 00 to 01 . . . . . . . . . . . . . . . . . . . . . . . . 56 A.1. 00 to 01 . . . . . . . . . . . . . . . . . . . . . . . . 56
A.2. 01 to 02 . . . . . . . . . . . . . . . . . . . . . . . . 56 A.2. 01 to 02 . . . . . . . . . . . . . . . . . . . . . . . . 56
A.3. 02 to 03 . . . . . . . . . . . . . . . . . . . . . . . . 56 A.3. 02 to 03 . . . . . . . . . . . . . . . . . . . . . . . . 56
A.4. 03 to 04 . . . . . . . . . . . . . . . . . . . . . . . . 56 A.4. 03 to 04 . . . . . . . . . . . . . . . . . . . . . . . . 56
A.5. 04 to 05 . . . . . . . . . . . . . . . . . . . . . . . . 56 A.5. 04 to 05 . . . . . . . . . . . . . . . . . . . . . . . . 56
A.6. 05 to 06 . . . . . . . . . . . . . . . . . . . . . . . . 57 A.6. 05 to 06 . . . . . . . . . . . . . . . . . . . . . . . . 57
A.7. 06 to 07 . . . . . . . . . . . . . . . . . . . . . . . . 57 A.7. 06 to 07 . . . . . . . . . . . . . . . . . . . . . . . . 57
A.8. 07 to 08 . . . . . . . . . . . . . . . . . . . . . . . . 57
Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . 57 Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . 57
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 57 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 57
1. Introduction 1. Introduction
This document defines two YANG [RFC7950] modules, one module to This document defines two YANG [RFC7950] modules, one module to
configure a NETCONF [RFC6241] client and the other module to configure a NETCONF [RFC6241] client and the other module to
configure a NETCONF server. Both modules support both NETCONF over configure a NETCONF server. Both modules support both NETCONF over
SSH [RFC6242] and NETCONF over TLS [RFC7589] and NETCONF Call Home SSH [RFC6242] and NETCONF over TLS [RFC7589] and NETCONF Call Home
connections [RFC8071]. connections [RFC8071].
skipping to change at page 5, line 11 skipping to change at page 5, line 16
| | | | +--rw (auth-type) | | | | +--rw (auth-type)
| | | | +--:(password) | | | | +--:(password)
| | | | | +--rw password? string | | | | | +--rw password? string
| | | | +--:(public-key) | | | | +--:(public-key)
| | | | | +--rw public-key | | | | | +--rw public-key
| | | | | +--rw (local-or-keystore) | | | | | +--rw (local-or-keystore)
| | | | | +--:(local) | | | | | +--:(local)
| | | | | | {local-keys-suppor\ | | | | | | {local-keys-suppor\
ted}? ted}?
| | | | | | +--rw algorithm? | | | | | | +--rw algorithm?
| | | | | | | ct:key-algorithm\ | | | | | | | asymmetric-key-e\
-ref ncryption-algorithm-ref
| | | | | | +--rw public-key? | | | | | | +--rw public-key?
| | | | | | | binary | | | | | | | binary
| | | | | | +--rw private-key? | | | | | | +--rw private-key?
| | | | | | | union | | | | | | | union
| | | | | | +---x generate-hidden-key | | | | | | +---x generate-hidden-key
| | | | | | | +---w input | | | | | | | +---w input
| | | | | | | +---w algorithm | | | | | | | +---w algorithm
| | | | | | | ct:key-alg\ | | | | | | | asymmetric\
orithm-ref -key-encryption-algorithm-ref
| | | | | | +---x install-hidden-key | | | | | | +---x install-hidden-key
| | | | | | +---w input | | | | | | +---w input
| | | | | | +---w algorithm | | | | | | +---w algorithm
| | | | | | | ct:key-alg\ | | | | | | | asymmetric\
orithm-ref -key-encryption-algorithm-ref
| | | | | | +---w public-key? | | | | | | +---w public-key?
| | | | | | | binary | | | | | | | binary
| | | | | | +---w private-key? | | | | | | +---w private-key?
| | | | | | binary | | | | | | binary
| | | | | +--:(keystore) | | | | | +--:(keystore)
| | | | | {keystore-supporte\ | | | | | {keystore-supporte\
d}? d}?
| | | | | +--rw reference? | | | | | +--rw reference?
| | | | | ks:asymmetric-ke\ | | | | | ks:asymmetric-ke\
y-ref y-ref
| | | | +--:(certificate) | | | | +--:(certificate)
| | | | +--rw certificate | | | | +--rw certificate
| | | | {sshcmn:ssh-x509-certs}? | | | | {sshcmn:ssh-x509-certs}?
| | | | +--rw (local-or-keystore) | | | | +--rw (local-or-keystore)
| | | | +--:(local) | | | | +--:(local)
| | | | | {local-keys-suppor\ | | | | | {local-keys-suppor\
ted}? ted}?
| | | | | +--rw algorithm? | | | | | +--rw algorithm?
| | | | | | ct:key-algorithm\ | | | | | | asymmetric-key-e\
-ref ncryption-algorithm-ref
| | | | | +--rw public-key? | | | | | +--rw public-key?
| | | | | | binary | | | | | | binary
| | | | | +--rw private-key? | | | | | +--rw private-key?
| | | | | | union | | | | | | union
| | | | | +---x generate-hidden-key | | | | | +---x generate-hidden-key
| | | | | | +---w input | | | | | | +---w input
| | | | | | +---w algorithm | | | | | | +---w algorithm
| | | | | | ct:key-alg\ | | | | | | asymmetric\
orithm-ref -key-encryption-algorithm-ref
| | | | | +---x install-hidden-key | | | | | +---x install-hidden-key
| | | | | | +---w input | | | | | | +---w input
| | | | | | +---w algorithm | | | | | | +---w algorithm
| | | | | | | ct:key-alg\ | | | | | | | asymmetric\
orithm-ref -key-encryption-algorithm-ref
| | | | | | +---w public-key? | | | | | | +---w public-key?
| | | | | | | binary | | | | | | | binary
| | | | | | +---w private-key? | | | | | | +---w private-key?
| | | | | | binary | | | | | | binary
| | | | | +--rw cert | | | | | +--rw cert?
| | | | | | ct:end-entity-ce\ | | | | | | end-entity-cert-\
rt-cms cms
| | | | | +---n certificate-expira\ | | | | | +---n certificate-expira\
tion tion
| | | | | +-- expiration-date? | | | | | +-- expiration-date
| | | | | yang:date-and\ | | | | | yang:date-and\
-time -time
| | | | +--:(keystore) | | | | +--:(keystore)
| | | | {keystore-supporte\ | | | | {keystore-supporte\
d}? d}?
| | | | +--rw reference? | | | | +--rw reference?
| | | | ks:asymmetric-ke\ | | | | ks:asymmetric-ke\
y-certificate-ref y-certificate-ref
| | | +--rw server-auth | | | +--rw server-auth
| | | | +--rw pinned-ssh-host-keys? | | | | +--rw pinned-ssh-host-keys?
skipping to change at page 7, line 19 skipping to change at page 7, line 24
| | +--rw port? inet:port-number | | +--rw port? inet:port-number
| | +--rw client-identity | | +--rw client-identity
| | | +--rw (auth-type) | | | +--rw (auth-type)
| | | +--:(certificate) | | | +--:(certificate)
| | | +--rw certificate | | | +--rw certificate
| | | +--rw (local-or-keystore) | | | +--rw (local-or-keystore)
| | | +--:(local) | | | +--:(local)
| | | | {local-keys-suppor\ | | | | {local-keys-suppor\
ted}? ted}?
| | | | +--rw algorithm? | | | | +--rw algorithm?
| | | | | ct:key-algorithm\ | | | | | asymmetric-key-e\
-ref ncryption-algorithm-ref
| | | | +--rw public-key? | | | | +--rw public-key?
| | | | | binary | | | | | binary
| | | | +--rw private-key? | | | | +--rw private-key?
| | | | | union | | | | | union
| | | | +---x generate-hidden-key | | | | +---x generate-hidden-key
| | | | | +---w input | | | | | +---w input
| | | | | +---w algorithm | | | | | +---w algorithm
| | | | | ct:key-alg\ | | | | | asymmetric\
orithm-ref -key-encryption-algorithm-ref
| | | | +---x install-hidden-key | | | | +---x install-hidden-key
| | | | | +---w input | | | | | +---w input
| | | | | +---w algorithm | | | | | +---w algorithm
| | | | | | ct:key-alg\ | | | | | | asymmetric\
orithm-ref -key-encryption-algorithm-ref
| | | | | +---w public-key? | | | | | +---w public-key?
| | | | | | binary | | | | | | binary
| | | | | +---w private-key? | | | | | +---w private-key?
| | | | | binary | | | | | binary
| | | | +--rw cert | | | | +--rw cert?
| | | | | ct:end-entity-ce\ | | | | | end-entity-cert-\
rt-cms cms
| | | | +---n certificate-expira\ | | | | +---n certificate-expira\
tion tion
| | | | +-- expiration-date? | | | | +-- expiration-date
| | | | yang:date-and\ | | | | yang:date-and\
-time -time
| | | +--:(keystore) | | | +--:(keystore)
| | | {keystore-supporte\ | | | {keystore-supporte\
d}? d}?
| | | +--rw reference? | | | +--rw reference?
| | | ks:asymmetric-ke\ | | | ks:asymmetric-ke\
y-certificate-ref y-certificate-ref
| | +--rw server-auth | | +--rw server-auth
| | | +--rw pinned-ca-certs? | | | +--rw pinned-ca-certs?
| | | | ta:pinned-certificates-ref | | | | ta:pinned-certificates-ref
| | | | {ta:x509-certificates}? | | | | {ta:x509-certificates}?
| | | +--rw pinned-server-certs? | | | +--rw pinned-server-certs?
| | | ta:pinned-certificates-ref | | | ta:pinned-certificates-ref
| | | {ta:x509-certificates}? | | | {ta:x509-certificates}?
| | +--rw hello-params | | +--rw hello-params
| | {tls-client-hello-params-config}? | | {tls-client-hello-params-config}?
skipping to change at page 9, line 5 skipping to change at page 9, line 10
| | +--rw username? string | | +--rw username? string
| | +--rw (auth-type) | | +--rw (auth-type)
| | +--:(password) | | +--:(password)
| | | +--rw password? string | | | +--rw password? string
| | +--:(public-key) | | +--:(public-key)
| | | +--rw public-key | | | +--rw public-key
| | | +--rw (local-or-keystore) | | | +--rw (local-or-keystore)
| | | +--:(local) {local-keys-supported\ | | | +--:(local) {local-keys-supported\
}? }?
| | | | +--rw algorithm? | | | | +--rw algorithm?
| | | | | ct:key-algorithm-ref | | | | | asymmetric-key-encrypt\
ion-algorithm-ref
| | | | +--rw public-key? | | | | +--rw public-key?
| | | | | binary | | | | | binary
| | | | +--rw private-key? | | | | +--rw private-key?
| | | | | union | | | | | union
| | | | +---x generate-hidden-key | | | | +---x generate-hidden-key
| | | | | +---w input | | | | | +---w input
| | | | | +---w algorithm | | | | | +---w algorithm
| | | | | ct:key-algorithm\ | | | | | asymmetric-key-e\
-ref ncryption-algorithm-ref
| | | | +---x install-hidden-key | | | | +---x install-hidden-key
| | | | +---w input | | | | +---w input
| | | | +---w algorithm | | | | +---w algorithm
| | | | | ct:key-algorithm\ | | | | | asymmetric-key-e\
-ref ncryption-algorithm-ref
| | | | +---w public-key? bin\ | | | | +---w public-key? bin\
ary ary
| | | | +---w private-key? bin\ | | | | +---w private-key? bin\
ary ary
| | | +--:(keystore) {keystore-supporte\ | | | +--:(keystore) {keystore-supporte\
d}? d}?
| | | +--rw reference? | | | +--rw reference?
| | | ks:asymmetric-key-ref | | | ks:asymmetric-key-ref
| | +--:(certificate) | | +--:(certificate)
| | +--rw certificate {sshcmn:ssh-x509-cert\ | | +--rw certificate {sshcmn:ssh-x509-cert\
s}? s}?
| | +--rw (local-or-keystore) | | +--rw (local-or-keystore)
| | +--:(local) {local-keys-supported\ | | +--:(local) {local-keys-supported\
}? }?
| | | +--rw algorithm? | | | +--rw algorithm?
| | | | ct:key-algorithm-ref | | | | asymmetric-key-encrypt\
ion-algorithm-ref
| | | +--rw public-key? | | | +--rw public-key?
| | | | binary | | | | binary
| | | +--rw private-key? | | | +--rw private-key?
| | | | union | | | | union
| | | +---x generate-hidden-key | | | +---x generate-hidden-key
| | | | +---w input | | | | +---w input
| | | | +---w algorithm | | | | +---w algorithm
| | | | ct:key-algorithm\ | | | | asymmetric-key-e\
-ref ncryption-algorithm-ref
| | | +---x install-hidden-key | | | +---x install-hidden-key
| | | | +---w input | | | | +---w input
| | | | +---w algorithm | | | | +---w algorithm
| | | | | ct:key-algorithm\ | | | | | asymmetric-key-e\
-ref ncryption-algorithm-ref
| | | | +---w public-key? bin\ | | | | +---w public-key? bin\
ary ary
| | | | +---w private-key? bin\ | | | | +---w private-key? bin\
ary ary
| | | +--rw cert | | | +--rw cert?
| | | | ct:end-entity-cert-cms | | | | end-entity-cert-cms
| | | +---n certificate-expiration | | | +---n certificate-expiration
| | | +-- expiration-date? | | | +-- expiration-date
| | | yang:date-and-time | | | yang:date-and-time
| | +--:(keystore) {keystore-supporte\ | | +--:(keystore) {keystore-supporte\
d}? d}?
| | +--rw reference? | | +--rw reference?
| | ks:asymmetric-key-cert\ | | ks:asymmetric-key-cert\
ificate-ref ificate-ref
| +--rw server-auth | +--rw server-auth
| | +--rw pinned-ssh-host-keys? | | +--rw pinned-ssh-host-keys?
| | | ta:pinned-host-keys-ref | | | ta:pinned-host-keys-ref
| | | {ta:ssh-host-keys}? | | | {ta:ssh-host-keys}?
skipping to change at page 10, line 50 skipping to change at page 11, line 9
+--rw address? inet:ip-address +--rw address? inet:ip-address
+--rw port? inet:port-number +--rw port? inet:port-number
+--rw client-identity +--rw client-identity
| +--rw (auth-type) | +--rw (auth-type)
| +--:(certificate) | +--:(certificate)
| +--rw certificate | +--rw certificate
| +--rw (local-or-keystore) | +--rw (local-or-keystore)
| +--:(local) {local-keys-supported\ | +--:(local) {local-keys-supported\
}? }?
| | +--rw algorithm? | | +--rw algorithm?
| | | ct:key-algorithm-ref | | | asymmetric-key-encrypt\
ion-algorithm-ref
| | +--rw public-key? | | +--rw public-key?
| | | binary | | | binary
| | +--rw private-key? | | +--rw private-key?
| | | union | | | union
| | +---x generate-hidden-key | | +---x generate-hidden-key
| | | +---w input | | | +---w input
| | | +---w algorithm | | | +---w algorithm
| | | ct:key-algorithm\ | | | asymmetric-key-e\
-ref ncryption-algorithm-ref
| | +---x install-hidden-key | | +---x install-hidden-key
| | | +---w input | | | +---w input
| | | +---w algorithm | | | +---w algorithm
| | | | ct:key-algorithm\ | | | | asymmetric-key-e\
-ref ncryption-algorithm-ref
| | | +---w public-key? bin\ | | | +---w public-key? bin\
ary ary
| | | +---w private-key? bin\ | | | +---w private-key? bin\
ary ary
| | +--rw cert | | +--rw cert?
| | | ct:end-entity-cert-cms | | | end-entity-cert-cms
| | +---n certificate-expiration | | +---n certificate-expiration
| | +-- expiration-date? | | +-- expiration-date
| | yang:date-and-time | | yang:date-and-time
| +--:(keystore) {keystore-supporte\ | +--:(keystore) {keystore-supporte\
d}? d}?
| +--rw reference? | +--rw reference?
| ks:asymmetric-key-cert\ | ks:asymmetric-key-cert\
ificate-ref ificate-ref
+--rw server-auth +--rw server-auth
| +--rw pinned-ca-certs? | +--rw pinned-ca-certs?
| | ta:pinned-certificates-ref | | ta:pinned-certificates-ref
| | {ta:x509-certificates}? | | {ta:x509-certificates}?
skipping to change at page 12, line 26 skipping to change at page 12, line 33
<name>corp-fw1</name> <name>corp-fw1</name>
<endpoints> <endpoints>
<endpoint> <endpoint>
<name>corp-fw1.example.com</name> <name>corp-fw1.example.com</name>
<ssh> <ssh>
<address>corp-fw1.example.com</address> <address>corp-fw1.example.com</address>
<client-identity> <client-identity>
<username>foobar</username> <username>foobar</username>
<public-key> <public-key>
<algorithm xmlns:ct="urn:ietf:params:xml:ns:yang:iet\ <algorithm xmlns:ct="urn:ietf:params:xml:ns:yang:iet\
f-crypto-types">ct:secp521r1</algorithm> f-crypto-types">ct:rsa2048</algorithm>
<private-key>base64encodedvalue==</private-key> <private-key>base64encodedvalue==</private-key>
<public-key>base64encodedvalue==</public-key> <public-key>base64encodedvalue==</public-key>
</public-key> </public-key>
</client-identity> </client-identity>
<server-auth> <server-auth>
<pinned-ca-certs>explicitly-trusted-server-ca-certs</p\ <pinned-ca-certs>explicitly-trusted-server-ca-certs</p\
inned-ca-certs> inned-ca-certs>
<pinned-server-certs>explicitly-trusted-server-certs</\ <pinned-server-certs>explicitly-trusted-server-certs</\
pinned-server-certs> pinned-server-certs>
</server-auth> </server-auth>
</ssh> </ssh>
</endpoint> </endpoint>
<endpoint> <endpoint>
<name>corp-fw2.example.com</name> <name>corp-fw2.example.com</name>
<ssh> <ssh>
<address>corp-fw2.example.com</address> <address>corp-fw2.example.com</address>
<client-identity> <client-identity>
<username>foobar</username> <username>foobar</username>
<public-key> <public-key>
<algorithm xmlns:ct="urn:ietf:params:xml:ns:yang:iet\ <algorithm xmlns:ct="urn:ietf:params:xml:ns:yang:iet\
f-crypto-types">ct:secp521r1</algorithm> f-crypto-types">ct:rsa2048</algorithm>
<private-key>base64encodedvalue==</private-key> <private-key>base64encodedvalue==</private-key>
<public-key>base64encodedvalue==</public-key> <public-key>base64encodedvalue==</public-key>
</public-key> </public-key>
</client-identity> </client-identity>
<server-auth> <server-auth>
<pinned-ca-certs>explicitly-trusted-server-ca-certs</p\ <pinned-ca-certs>explicitly-trusted-server-ca-certs</p\
inned-ca-certs> inned-ca-certs>
<pinned-server-certs>explicitly-trusted-server-certs</\ <pinned-server-certs>explicitly-trusted-server-certs</\
pinned-server-certs> pinned-server-certs>
</server-auth> </server-auth>
skipping to change at page 13, line 32 skipping to change at page 13, line 39
<!-- endpoints to listen for NETCONF Call Home connections on --> <!-- endpoints to listen for NETCONF Call Home connections on -->
<listen> <listen>
<endpoint> <endpoint>
<name>Intranet-facing listener</name> <name>Intranet-facing listener</name>
<ssh> <ssh>
<address>192.0.2.7</address> <address>192.0.2.7</address>
<client-identity> <client-identity>
<username>foobar</username> <username>foobar</username>
<public-key> <public-key>
<algorithm xmlns:ct="urn:ietf:params:xml:ns:yang:ietf-cr\ <algorithm xmlns:ct="urn:ietf:params:xml:ns:yang:ietf-cr\
ypto-types">ct:secp521r1</algorithm> ypto-types">ct:rsa2048</algorithm>
<private-key>base64encodedvalue==</private-key> <private-key>base64encodedvalue==</private-key>
<public-key>base64encodedvalue==</public-key> <public-key>base64encodedvalue==</public-key>
</public-key> </public-key>
</client-identity> </client-identity>
<server-auth> <server-auth>
<pinned-ca-certs>explicitly-trusted-server-ca-certs</pinne\ <pinned-ca-certs>explicitly-trusted-server-ca-certs</pinne\
d-ca-certs> d-ca-certs>
<pinned-server-certs>explicitly-trusted-server-certs</pinn\ <pinned-server-certs>explicitly-trusted-server-certs</pinn\
ed-server-certs> ed-server-certs>
<pinned-ssh-host-keys>explicitly-trusted-ssh-host-keys</pi\ <pinned-ssh-host-keys>explicitly-trusted-ssh-host-keys</pi\
skipping to change at page 14, line 11 skipping to change at page 14, line 16
</endpoint> </endpoint>
</listen> </listen>
</netconf-client> </netconf-client>
3.3. YANG Module 3.3. YANG Module
This YANG module has normative references to [RFC6242], [RFC6991], This YANG module has normative references to [RFC6242], [RFC6991],
[RFC7589], [RFC8071], [I-D.ietf-netconf-ssh-client-server], and [RFC7589], [RFC8071], [I-D.ietf-netconf-ssh-client-server], and
[I-D.ietf-netconf-tls-client-server]. [I-D.ietf-netconf-tls-client-server].
<CODE BEGINS> file "ietf-netconf-client@2018-09-20.yang" <CODE BEGINS> file "ietf-netconf-client@2018-10-22.yang"
module ietf-netconf-client { module ietf-netconf-client {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-netconf-client"; namespace "urn:ietf:params:xml:ns:yang:ietf-netconf-client";
prefix "ncc"; prefix "ncc";
import ietf-yang-types { import ietf-yang-types {
prefix yang; prefix yang;
reference reference
"RFC 6991: Common YANG Data Types"; "RFC 6991: Common YANG Data Types";
} }
import ietf-inet-types { import ietf-inet-types {
prefix inet; prefix inet;
reference reference
"RFC 6991: Common YANG Data Types"; "RFC 6991: Common YANG Data Types";
} }
import ietf-ssh-client { import ietf-ssh-client {
prefix ss; prefix ss;
revision-date 2018-09-20; // stable grouping definitions revision-date 2018-10-22; // stable grouping definitions
reference reference
"RFC YYYY: YANG Groupings for SSH Clients and SSH Servers"; "RFC YYYY: YANG Groupings for SSH Clients and SSH Servers";
} }
import ietf-tls-client { import ietf-tls-client {
prefix ts; prefix ts;
revision-date 2018-09-20; // stable grouping definitions revision-date 2018-10-22; // stable grouping definitions
reference reference
"RFC ZZZZ: YANG Groupings for TLS Clients and TLS Servers"; "RFC ZZZZ: YANG Groupings for TLS Clients and TLS Servers";
} }
organization organization
"IETF NETCONF (Network Configuration) Working Group"; "IETF NETCONF (Network Configuration) Working Group";
contact contact
"WG Web: <http://datatracker.ietf.org/wg/netconf/> "WG Web: <http://datatracker.ietf.org/wg/netconf/>
WG List: <mailto:netconf@ietf.org> WG List: <mailto:netconf@ietf.org>
skipping to change at page 15, line 25 skipping to change at page 15, line 30
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 XXXX; see This version of this YANG module is part of RFC XXXX; see
the RFC itself for full legal notices."; the RFC itself for full legal notices.";
revision "2018-09-20" { revision "2018-10-22" {
description description
"Initial version"; "Initial version";
reference reference
"RFC XXXX: NETCONF Client and Server Models"; "RFC XXXX: NETCONF Client and Server Models";
} }
// Features // Features
feature initiate { feature initiate {
description description
skipping to change at page 25, line 39 skipping to change at page 25, line 45
| | | +--rw host-key* [name] | | | +--rw host-key* [name]
| | | +--rw name string | | | +--rw name string
| | | +--rw (host-key-type) | | | +--rw (host-key-type)
| | | +--:(public-key) | | | +--:(public-key)
| | | | +--rw public-key | | | | +--rw public-key
| | | | +--rw (local-or-keystore) | | | | +--rw (local-or-keystore)
| | | | +--:(local) | | | | +--:(local)
| | | | | {local-keys-supported\ | | | | | {local-keys-supported\
}? }?
| | | | | +--rw algorithm? | | | | | +--rw algorithm?
| | | | | | ct:key-algorithm-ref | | | | | | asymmetric-key-encr\
yption-algorithm-ref
| | | | | +--rw public-key? | | | | | +--rw public-key?
| | | | | | binary | | | | | | binary
| | | | | +--rw private-key? | | | | | +--rw private-key?
| | | | | | union | | | | | | union
| | | | | +---x generate-hidden-key | | | | | +---x generate-hidden-key
| | | | | | +---w input | | | | | | +---w input
| | | | | | +---w algorithm | | | | | | +---w algorithm
| | | | | | ct:key-algori\ | | | | | | asymmetric-ke\
thm-ref y-encryption-algorithm-ref
| | | | | +---x install-hidden-key | | | | | +---x install-hidden-key
| | | | | +---w input | | | | | +---w input
| | | | | +---w algorithm | | | | | +---w algorithm
| | | | | | ct:key-algori\ | | | | | | asymmetric-ke\
thm-ref y-encryption-algorithm-ref
| | | | | +---w public-key? | | | | | +---w public-key?
| | | | | | binary | | | | | | binary
| | | | | +---w private-key? | | | | | +---w private-key?
| | | | | binary | | | | | binary
| | | | +--:(keystore) | | | | +--:(keystore)
| | | | {keystore-supported}? | | | | {keystore-supported}?
| | | | +--rw reference? | | | | +--rw reference?
| | | | ks:asymmetric-key-r\ | | | | ks:asymmetric-key-r\
ef ef
| | | +--:(certificate) | | | +--:(certificate)
| | | +--rw certificate | | | +--rw certificate
| | | {sshcmn:ssh-x509-certs}? | | | {sshcmn:ssh-x509-certs}?
| | | +--rw (local-or-keystore) | | | +--rw (local-or-keystore)
| | | +--:(local) | | | +--:(local)
| | | | {local-keys-supported\ | | | | {local-keys-supported\
}? }?
| | | | +--rw algorithm? | | | | +--rw algorithm?
| | | | | ct:key-algorithm-ref | | | | | asymmetric-key-encr\
yption-algorithm-ref
| | | | +--rw public-key? | | | | +--rw public-key?
| | | | | binary | | | | | binary
| | | | +--rw private-key? | | | | +--rw private-key?
| | | | | union | | | | | union
| | | | +---x generate-hidden-key | | | | +---x generate-hidden-key
| | | | | +---w input | | | | | +---w input
| | | | | +---w algorithm | | | | | +---w algorithm
| | | | | ct:key-algori\ | | | | | asymmetric-ke\
thm-ref y-encryption-algorithm-ref
| | | | +---x install-hidden-key | | | | +---x install-hidden-key
| | | | | +---w input | | | | | +---w input
| | | | | +---w algorithm | | | | | +---w algorithm
| | | | | | ct:key-algori\ | | | | | | asymmetric-ke\
thm-ref y-encryption-algorithm-ref
| | | | | +---w public-key? | | | | | +---w public-key?
| | | | | | binary | | | | | | binary
| | | | | +---w private-key? | | | | | +---w private-key?
| | | | | binary | | | | | binary
| | | | +--rw cert | | | | +--rw cert?
| | | | | ct:end-entity-cert-\ | | | | | end-entity-cert-cms
cms
| | | | +---n certificate-expiration | | | | +---n certificate-expiration
| | | | +-- expiration-date? | | | | +-- expiration-date
| | | | yang:date-and-ti\ | | | | yang:date-and-ti\
me me
| | | +--:(keystore) | | | +--:(keystore)
| | | {keystore-supported}? | | | {keystore-supported}?
| | | +--rw reference? | | | +--rw reference?
| | | ks:asymmetric-key-c\ | | | ks:asymmetric-key-c\
ertificate-ref ertificate-ref
| | +--rw client-cert-auth {sshcmn:ssh-x509-certs}? | | +--rw client-cert-auth {sshcmn:ssh-x509-certs}?
| | | +--rw pinned-ca-certs? | | | +--rw pinned-ca-certs?
| | | | ta:pinned-certificates-ref | | | | ta:pinned-certificates-ref
skipping to change at page 27, line 31 skipping to change at page 27, line 38
| | +--rw mac | | +--rw mac
| | +--rw mac-alg* identityref | | +--rw mac-alg* identityref
| +--:(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 server-identity | +--rw server-identity
| | +--rw (local-or-keystore) | | +--rw (local-or-keystore)
| | +--:(local) {local-keys-supported}? | | +--:(local) {local-keys-supported}?
| | | +--rw algorithm? | | | +--rw algorithm?
| | | | ct:key-algorithm-ref | | | | asymmetric-key-encryption-algor\
ithm-ref
| | | +--rw public-key? binary | | | +--rw public-key? binary
| | | +--rw private-key? union | | | +--rw private-key? union
| | | +---x generate-hidden-key | | | +---x generate-hidden-key
| | | | +---w input | | | | +---w input
| | | | +---w algorithm | | | | +---w algorithm
| | | | ct:key-algorithm-ref | | | | asymmetric-key-encryption\
-algorithm-ref
| | | +---x install-hidden-key | | | +---x install-hidden-key
| | | | +---w input | | | | +---w input
| | | | +---w algorithm | | | | +---w algorithm
| | | | | ct:key-algorithm-ref | | | | | asymmetric-key-encryption\
-algorithm-ref
| | | | +---w public-key? binary | | | | +---w public-key? binary
| | | | +---w private-key? binary | | | | +---w private-key? binary
| | | +--rw cert | | | +--rw cert?
| | | | ct:end-entity-cert-cms | | | | end-entity-cert-cms
| | | +---n certificate-expiration | | | +---n certificate-expiration
| | | +-- expiration-date? | | | +-- expiration-date
| | | yang:date-and-time | | | yang:date-and-time
| | +--:(keystore) {keystore-supported}? | | +--:(keystore) {keystore-supported}?
| | +--rw reference? | | +--rw reference?
| | ks:asymmetric-key-certificate-r\ | | ks:asymmetric-key-certificate-r\
ef ef
| +--rw client-auth | +--rw client-auth
| | +--rw pinned-ca-certs? | | +--rw pinned-ca-certs?
| | | ta:pinned-certificates-ref | | | ta:pinned-certificates-ref
| | | {ta:x509-certificates}? | | | {ta:x509-certificates}?
| | +--rw pinned-client-certs? | | +--rw pinned-client-certs?
| | | ta:pinned-certificates-ref | | | ta:pinned-certificates-ref
| | | {ta:x509-certificates}? | | | {ta:x509-certificates}?
| | +--rw cert-maps | | +--rw cert-maps
| | +--rw cert-to-name* [id] | | +--rw cert-to-name* [id]
skipping to change at page 28, line 48 skipping to change at page 29, line 9
| | | +--rw host-key* [name] | | | +--rw host-key* [name]
| | | +--rw name string | | | +--rw name string
| | | +--rw (host-key-type) | | | +--rw (host-key-type)
| | | +--:(public-key) | | | +--:(public-key)
| | | | +--rw public-key | | | | +--rw public-key
| | | | +--rw (local-or-keystore) | | | | +--rw (local-or-keystore)
| | | | +--:(local) | | | | +--:(local)
| | | | | {local-keys-sup\ | | | | | {local-keys-sup\
ported}? ported}?
| | | | | +--rw algorithm? | | | | | +--rw algorithm?
| | | | | | ct:key-algori\ | | | | | | asymmetric-ke\
thm-ref y-encryption-algorithm-ref
| | | | | +--rw public-key? | | | | | +--rw public-key?
| | | | | | binary | | | | | | binary
| | | | | +--rw private-key? | | | | | +--rw private-key?
| | | | | | union | | | | | | union
| | | | | +---x generate-hidden\ | | | | | +---x generate-hidden\
-key -key
| | | | | | +---w input | | | | | | +---w input
| | | | | | +---w algorithm | | | | | | +---w algorithm
| | | | | | ct:key-\ | | | | | | asymmet\
algorithm-ref ric-key-encryption-algorithm-ref
| | | | | +---x install-hidden-\ | | | | | +---x install-hidden-\
key key
| | | | | +---w input | | | | | +---w input
| | | | | +---w algorithm | | | | | +---w algorithm
| | | | | | ct:key-\ | | | | | | asymmet\
algorithm-ref ric-key-encryption-algorithm-ref
| | | | | +---w public-ke\ | | | | | +---w public-ke\
y? y?
| | | | | | binary | | | | | | binary
| | | | | +---w private-k\ | | | | | +---w private-k\
ey? ey?
| | | | | binary | | | | | binary
| | | | +--:(keystore) | | | | +--:(keystore)
| | | | {keystore-suppo\ | | | | {keystore-suppo\
rted}? rted}?
| | | | +--rw reference? | | | | +--rw reference?
skipping to change at page 29, line 38 skipping to change at page 29, line 48
-key-ref -key-ref
| | | +--:(certificate) | | | +--:(certificate)
| | | +--rw certificate | | | +--rw certificate
| | | {sshcmn:ssh-x509-certs\ | | | {sshcmn:ssh-x509-certs\
}? }?
| | | +--rw (local-or-keystore) | | | +--rw (local-or-keystore)
| | | +--:(local) | | | +--:(local)
| | | | {local-keys-sup\ | | | | {local-keys-sup\
ported}? ported}?
| | | | +--rw algorithm? | | | | +--rw algorithm?
| | | | | ct:key-algori\ | | | | | asymmetric-ke\
thm-ref y-encryption-algorithm-ref
| | | | +--rw public-key? | | | | +--rw public-key?
| | | | | binary | | | | | binary
| | | | +--rw private-key? | | | | +--rw private-key?
| | | | | union | | | | | union
| | | | +---x generate-hidden\ | | | | +---x generate-hidden\
-key -key
| | | | | +---w input | | | | | +---w input
| | | | | +---w algorithm | | | | | +---w algorithm
| | | | | ct:key-\ | | | | | asymmet\
algorithm-ref ric-key-encryption-algorithm-ref
| | | | +---x install-hidden-\ | | | | +---x install-hidden-\
key key
| | | | | +---w input | | | | | +---w input
| | | | | +---w algorithm | | | | | +---w algorithm
| | | | | | ct:key-\ | | | | | | asymmet\
algorithm-ref ric-key-encryption-algorithm-ref
| | | | | +---w public-ke\ | | | | | +---w public-ke\
y? y?
| | | | | | binary | | | | | | binary
| | | | | +---w private-k\ | | | | | +---w private-k\
ey? ey?
| | | | | binary | | | | | binary
| | | | +--rw cert | | | | +--rw cert?
| | | | | ct:end-entity\ | | | | | end-entity-ce\
-cert-cms rt-cms
| | | | +---n certificate-exp\ | | | | +---n certificate-exp\
iration iration
| | | | +-- expiration-dat\ | | | | +-- expiration-date
e?
| | | | yang:date-\ | | | | yang:date-\
and-time and-time
| | | +--:(keystore) | | | +--:(keystore)
| | | {keystore-suppo\ | | | {keystore-suppo\
rted}? rted}?
| | | +--rw reference? | | | +--rw reference?
| | | ks:asymmetric\ | | | ks:asymmetric\
-key-certificate-ref -key-certificate-ref
| | +--rw client-cert-auth | | +--rw client-cert-auth
| | | {sshcmn:ssh-x509-certs}? | | | {sshcmn:ssh-x509-certs}?
skipping to change at page 31, line 8 skipping to change at page 31, line 17
| | +--rw mac | | +--rw mac
| | +--rw mac-alg* identityref | | +--rw mac-alg* identityref
| +--:(tls) {tls-call-home}? | +--:(tls) {tls-call-home}?
| +--rw tls | +--rw tls
| +--rw address inet:host | +--rw address inet:host
| +--rw port? inet:port-number | +--rw port? inet:port-number
| +--rw server-identity | +--rw server-identity
| | +--rw (local-or-keystore) | | +--rw (local-or-keystore)
| | +--:(local) {local-keys-supported}? | | +--:(local) {local-keys-supported}?
| | | +--rw algorithm? | | | +--rw algorithm?
| | | | ct:key-algorithm-ref | | | | asymmetric-key-encryption\
-algorithm-ref
| | | +--rw public-key? | | | +--rw public-key?
| | | | binary | | | | binary
| | | +--rw private-key? | | | +--rw private-key?
| | | | union | | | | union
| | | +---x generate-hidden-key | | | +---x generate-hidden-key
| | | | +---w input | | | | +---w input
| | | | +---w algorithm | | | | +---w algorithm
| | | | ct:key-algorithm-ref | | | | asymmetric-key-encr\
yption-algorithm-ref
| | | +---x install-hidden-key | | | +---x install-hidden-key
| | | | +---w input | | | | +---w input
| | | | +---w algorithm | | | | +---w algorithm
| | | | | ct:key-algorithm-ref | | | | | asymmetric-key-encr\
yption-algorithm-ref
| | | | +---w public-key? binary | | | | +---w public-key? binary
| | | | +---w private-key? binary | | | | +---w private-key? binary
| | | +--rw cert | | | +--rw cert?
| | | | ct:end-entity-cert-cms | | | | end-entity-cert-cms
| | | +---n certificate-expiration | | | +---n certificate-expiration
| | | +-- expiration-date? | | | +-- expiration-date
| | | yang:date-and-time | | | yang:date-and-time
| | +--:(keystore) {keystore-supported}? | | +--:(keystore) {keystore-supported}?
| | +--rw reference? | | +--rw reference?
| | ks:asymmetric-key-certifi\ | | ks:asymmetric-key-certifi\
cate-ref cate-ref
| +--rw client-auth | +--rw client-auth
| | +--rw pinned-ca-certs? | | +--rw pinned-ca-certs?
| | | ta:pinned-certificates-ref | | | ta:pinned-certificates-ref
| | | {ta:x509-certificates}? | | | {ta:x509-certificates}?
| | +--rw pinned-client-certs? | | +--rw pinned-client-certs?
skipping to change at page 32, line 47 skipping to change at page 33, line 12
<listen> <listen>
<endpoint> <!-- listening for SSH connections --> <endpoint> <!-- listening for SSH connections -->
<name>netconf/ssh</name> <name>netconf/ssh</name>
<ssh> <ssh>
<address>192.0.2.7</address> <address>192.0.2.7</address>
<server-identity> <server-identity>
<host-key> <host-key>
<name>deployment-specific-certificate</name> <name>deployment-specific-certificate</name>
<public-key> <public-key>
<algorithm xmlns:ct="urn:ietf:params:xml:ns:yang:ietf-\ <algorithm xmlns:ct="urn:ietf:params:xml:ns:yang:ietf-\
crypto-types">ct:secp521r1</algorithm> crypto-types">ct:rsa2048</algorithm>
<private-key>base64encodedvalue==</private-key> <private-key>base64encodedvalue==</private-key>
<public-key>base64encodedvalue==</public-key> <public-key>base64encodedvalue==</public-key>
</public-key> </public-key>
</host-key> </host-key>
</server-identity> </server-identity>
<client-cert-auth> <client-cert-auth>
<pinned-ca-certs>explicitly-trusted-client-ca-certs</pinne\ <pinned-ca-certs>explicitly-trusted-client-ca-certs</pinne\
d-ca-certs> d-ca-certs>
<pinned-client-certs>explicitly-trusted-client-certs</pinn\ <pinned-client-certs>explicitly-trusted-client-certs</pinn\
ed-client-certs> ed-client-certs>
</client-cert-auth> </client-cert-auth>
</ssh> </ssh>
</endpoint> </endpoint>
skipping to change at page 33, line 21 skipping to change at page 33, line 32
ed-client-certs> ed-client-certs>
</client-cert-auth> </client-cert-auth>
</ssh> </ssh>
</endpoint> </endpoint>
<endpoint> <!-- listening for TLS sessions --> <endpoint> <!-- listening for TLS sessions -->
<name>netconf/tls</name> <name>netconf/tls</name>
<tls> <tls>
<address>192.0.2.7</address> <address>192.0.2.7</address>
<server-identity> <server-identity>
<algorithm xmlns:ct="urn:ietf:params:xml:ns:yang:ietf-cryp\ <algorithm xmlns:ct="urn:ietf:params:xml:ns:yang:ietf-cryp\
to-types">ct:secp521r1</algorithm> to-types">ct:rsa2048</algorithm>
<private-key>base64encodedvalue==</private-key> <private-key>base64encodedvalue==</private-key>
<public-key>base64encodedvalue==</public-key> <public-key>base64encodedvalue==</public-key>
<cert>base64encodedvalue==</cert> <cert>base64encodedvalue==</cert>
</server-identity> </server-identity>
<client-auth> <client-auth>
<pinned-ca-certs>explicitly-trusted-client-ca-certs</pinne\ <pinned-ca-certs>explicitly-trusted-client-ca-certs</pinne\
d-ca-certs> d-ca-certs>
<pinned-client-certs>explicitly-trusted-client-certs</pinn\ <pinned-client-certs>explicitly-trusted-client-certs</pinn\
ed-client-certs> ed-client-certs>
<cert-maps> <cert-maps>
skipping to change at page 34, line 14 skipping to change at page 34, line 26
<endpoints> <endpoints>
<endpoint> <endpoint>
<name>east-data-center</name> <name>east-data-center</name>
<ssh> <ssh>
<address>east.config-mgr.example.com</address> <address>east.config-mgr.example.com</address>
<server-identity> <server-identity>
<host-key> <host-key>
<name>deployment-specific-certificate</name> <name>deployment-specific-certificate</name>
<public-key> <public-key>
<algorithm xmlns:ct="urn:ietf:params:xml:ns:yang:i\ <algorithm xmlns:ct="urn:ietf:params:xml:ns:yang:i\
etf-crypto-types">ct:secp521r1</algorithm> etf-crypto-types">ct:rsa2048</algorithm>
<private-key>base64encodedvalue==</private-key> <private-key>base64encodedvalue==</private-key>
<public-key>base64encodedvalue==</public-key> <public-key>base64encodedvalue==</public-key>
</public-key> </public-key>
</host-key> </host-key>
</server-identity> </server-identity>
<client-cert-auth> <client-cert-auth>
<pinned-ca-certs>explicitly-trusted-client-ca-certs</p\ <pinned-ca-certs>explicitly-trusted-client-ca-certs</p\
inned-ca-certs> inned-ca-certs>
<pinned-client-certs>explicitly-trusted-client-certs</\ <pinned-client-certs>explicitly-trusted-client-certs</\
pinned-client-certs> pinned-client-certs>
skipping to change at page 34, line 37 skipping to change at page 34, line 49
</endpoint> </endpoint>
<endpoint> <endpoint>
<name>west-data-center</name> <name>west-data-center</name>
<ssh> <ssh>
<address>west.config-mgr.example.com</address> <address>west.config-mgr.example.com</address>
<server-identity> <server-identity>
<host-key> <host-key>
<name>deployment-specific-certificate</name> <name>deployment-specific-certificate</name>
<public-key> <public-key>
<algorithm xmlns:ct="urn:ietf:params:xml:ns:yang:i\ <algorithm xmlns:ct="urn:ietf:params:xml:ns:yang:i\
etf-crypto-types">ct:secp521r1</algorithm> etf-crypto-types">ct:rsa2048</algorithm>
<private-key>base64encodedvalue==</private-key> <private-key>base64encodedvalue==</private-key>
<public-key>base64encodedvalue==</public-key> <public-key>base64encodedvalue==</public-key>
</public-key> </public-key>
</host-key> </host-key>
</server-identity> </server-identity>
<client-cert-auth> <client-cert-auth>
<pinned-ca-certs>explicitly-trusted-client-ca-certs</p\ <pinned-ca-certs>explicitly-trusted-client-ca-certs</p\
inned-ca-certs> inned-ca-certs>
<pinned-client-certs>explicitly-trusted-client-certs</\ <pinned-client-certs>explicitly-trusted-client-certs</\
pinned-client-certs> pinned-client-certs>
</client-cert-auth> </client-cert-auth>
</ssh> </ssh>
skipping to change at page 35, line 24 skipping to change at page 35, line 37
</netconf-client> </netconf-client>
<netconf-client> <!-- TLS-based client --> <netconf-client> <!-- TLS-based client -->
<name>data-collector</name> <name>data-collector</name>
<endpoints> <endpoints>
<endpoint> <endpoint>
<name>east-data-center</name> <name>east-data-center</name>
<tls> <tls>
<address>east.analytics.example.com</address> <address>east.analytics.example.com</address>
<server-identity> <server-identity>
<algorithm xmlns:ct="urn:ietf:params:xml:ns:yang:ietf-\ <algorithm xmlns:ct="urn:ietf:params:xml:ns:yang:ietf-\
crypto-types">ct:secp521r1</algorithm> crypto-types">ct:rsa2048</algorithm>
<private-key>base64encodedvalue==</private-key> <private-key>base64encodedvalue==</private-key>
<public-key>base64encodedvalue==</public-key> <public-key>base64encodedvalue==</public-key>
<cert>base64encodedvalue==</cert> <cert>base64encodedvalue==</cert>
</server-identity> </server-identity>
<client-auth> <client-auth>
<pinned-ca-certs>explicitly-trusted-client-ca-certs</p\ <pinned-ca-certs>explicitly-trusted-client-ca-certs</p\
inned-ca-certs> inned-ca-certs>
<pinned-client-certs>explicitly-trusted-client-certs</\ <pinned-client-certs>explicitly-trusted-client-certs</\
pinned-client-certs> pinned-client-certs>
<cert-maps> <cert-maps>
skipping to change at page 36, line 8 skipping to change at page 36, line 20
</cert-maps> </cert-maps>
</client-auth> </client-auth>
</tls> </tls>
</endpoint> </endpoint>
<endpoint> <endpoint>
<name>west-data-center</name> <name>west-data-center</name>
<tls> <tls>
<address>west.analytics.example.com</address> <address>west.analytics.example.com</address>
<server-identity> <server-identity>
<algorithm xmlns:ct="urn:ietf:params:xml:ns:yang:ietf-\ <algorithm xmlns:ct="urn:ietf:params:xml:ns:yang:ietf-\
crypto-types">ct:secp521r1</algorithm> crypto-types">ct:rsa2048</algorithm>
<private-key>base64encodedvalue==</private-key> <private-key>base64encodedvalue==</private-key>
<public-key>base64encodedvalue==</public-key> <public-key>base64encodedvalue==</public-key>
<cert>base64encodedvalue==</cert> <cert>base64encodedvalue==</cert>
</server-identity> </server-identity>
<client-auth> <client-auth>
<pinned-ca-certs>explicitly-trusted-client-ca-certs</p\ <pinned-ca-certs>explicitly-trusted-client-ca-certs</p\
inned-ca-certs> inned-ca-certs>
<pinned-client-certs>explicitly-trusted-client-certs</\ <pinned-client-certs>explicitly-trusted-client-certs</\
pinned-client-certs> pinned-client-certs>
<cert-maps> <cert-maps>
skipping to change at page 37, line 16 skipping to change at page 37, line 27
This YANG module has normative references to [RFC6242], [RFC6991], This YANG module has normative references to [RFC6242], [RFC6991],
[RFC7407], [RFC7589], [RFC8071], [RFC7407], [RFC7589], [RFC8071],
[I-D.ietf-netconf-ssh-client-server], and [I-D.ietf-netconf-ssh-client-server], and
[I-D.ietf-netconf-tls-client-server]. [I-D.ietf-netconf-tls-client-server].
This YANG module imports YANG types from [RFC6991], and YANG This YANG module imports YANG types from [RFC6991], and YANG
groupings from [RFC7407], [I-D.ietf-netconf-ssh-client-server] and groupings from [RFC7407], [I-D.ietf-netconf-ssh-client-server] and
[I-D.ietf-netconf-ssh-client-server]. [I-D.ietf-netconf-ssh-client-server].
<CODE BEGINS> file "ietf-netconf-server@2018-09-20.yang" <CODE BEGINS> file "ietf-netconf-server@2018-10-22.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 "ncs"; prefix "ncs";
import ietf-yang-types { import ietf-yang-types {
prefix yang; prefix yang;
reference reference
"RFC 6991: Common YANG Data Types"; "RFC 6991: Common YANG Data Types";
skipping to change at page 37, line 43 skipping to change at page 38, line 5
} }
import ietf-x509-cert-to-name { import ietf-x509-cert-to-name {
prefix x509c2n; prefix x509c2n;
reference reference
"RFC 7407: A YANG Data Model for SNMP Configuration"; "RFC 7407: A YANG Data Model for SNMP Configuration";
} }
import ietf-ssh-server { import ietf-ssh-server {
prefix ss; prefix ss;
revision-date 2018-09-20; // stable grouping definitions revision-date 2018-10-22; // stable grouping definitions
reference reference
"RFC YYYY: YANG Groupings for SSH Clients and SSH Servers"; "RFC YYYY: YANG Groupings for SSH Clients and SSH Servers";
} }
import ietf-tls-server { import ietf-tls-server {
prefix ts; prefix ts;
revision-date 2018-09-20; // stable grouping definitions revision-date 2018-10-22; // stable grouping definitions
reference reference
"RFC ZZZZ: YANG Groupings for TLS Clients and TLS Servers"; "RFC ZZZZ: YANG Groupings for TLS Clients and TLS Servers";
} }
organization organization
"IETF NETCONF (Network Configuration) Working Group"; "IETF NETCONF (Network Configuration) Working Group";
contact contact
"WG Web: <http://datatracker.ietf.org/wg/netconf/> "WG Web: <http://datatracker.ietf.org/wg/netconf/>
WG List: <mailto:netconf@ietf.org> WG List: <mailto:netconf@ietf.org>
Author: Kent Watsen Author: Kent Watsen
skipping to change at page 38, line 40 skipping to change at page 38, line 50
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 XXXX; see This version of this YANG module is part of RFC XXXX; see
the RFC itself for full legal notices."; the RFC itself for full legal notices.";
revision "2018-09-20" { revision "2018-10-22" {
description description
"Initial version"; "Initial version";
reference reference
"RFC XXXX: NETCONF Client and Server Models"; "RFC XXXX: NETCONF Client and Server Models";
} }
// Features // Features
feature listen { feature listen {
description description
skipping to change at page 53, line 40 skipping to change at page 53, line 40
8.1. Normative References 8.1. Normative References
[I-D.ietf-netconf-keystore] [I-D.ietf-netconf-keystore]
Watsen, K., "YANG Data Model for a Centralized Keystore Watsen, K., "YANG Data Model for a Centralized Keystore
Mechanism", draft-ietf-netconf-keystore-06 (work in Mechanism", draft-ietf-netconf-keystore-06 (work in
progress), September 2018. progress), September 2018.
[I-D.ietf-netconf-ssh-client-server] [I-D.ietf-netconf-ssh-client-server]
Watsen, K. and G. Wu, "YANG Groupings for SSH Clients and Watsen, K. and G. Wu, "YANG Groupings for SSH Clients and
SSH Servers", draft-ietf-netconf-ssh-client-server-06 SSH Servers", draft-ietf-netconf-ssh-client-server-07
(work in progress), June 2018. (work in progress), September 2018.
[I-D.ietf-netconf-tls-client-server] [I-D.ietf-netconf-tls-client-server]
Watsen, K. and G. Wu, "YANG Groupings for TLS Clients and Watsen, K. and G. Wu, "YANG Groupings for TLS Clients and
TLS Servers", draft-ietf-netconf-tls-client-server-06 TLS Servers", draft-ietf-netconf-tls-client-server-07
(work in progress), June 2018. (work in progress), September 2018.
[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, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>. <https://www.rfc-editor.org/info/rfc2119>.
[RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for
the Network Configuration Protocol (NETCONF)", RFC 6020, the Network Configuration Protocol (NETCONF)", RFC 6020,
DOI 10.17487/RFC6020, October 2010, DOI 10.17487/RFC6020, October 2010,
<https://www.rfc-editor.org/info/rfc6020>. <https://www.rfc-editor.org/info/rfc6020>.
skipping to change at page 57, line 29 skipping to change at page 57, line 29
enum. enum.
o Replaced "connection-type" choice default (persistent) with o Replaced "connection-type" choice default (persistent) with
"mandatory true". "mandatory true".
o Reduced the periodic-connection's "idle-timeout" from 5 to 2 o Reduced the periodic-connection's "idle-timeout" from 5 to 2
minutes. minutes.
o Replaced reconnect-timeout with period/anchor-time combo. o Replaced reconnect-timeout with period/anchor-time combo.
A.8. 07 to 08
o Modified examples to be compatible with new crypto-types algs
Acknowledgements 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, Balazs Kovacs, David Bjorklund, Benoit Claise, Mehmet Ersue, Balazs Kovacs, David
Lamparter, Alan Luchuk, Ladislav Lhotka, Radek Krejci, Tom Petch, Lamparter, Alan Luchuk, Ladislav Lhotka, Radek Krejci, Tom Petch,
Juergen Schoenwaelder, Phil Shafer, Sean Turner, and Bert Wijnen. Juergen Schoenwaelder, Phil Shafer, Sean Turner, and Bert Wijnen.
Author's Address Author's Address
 End of changes. 86 change blocks. 
124 lines changed or deleted 135 lines changed or added

This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/