draft-ietf-isms-dtls-tm-09.txt   draft-ietf-isms-dtls-tm-10.txt 
ISMS W. Hardaker ISMS W. Hardaker
Internet-Draft Sparta, Inc. Internet-Draft Sparta, Inc.
Intended status: Standards Track March 6, 2010 Intended status: Standards Track April 14, 2010
Expires: September 7, 2010 Expires: October 16, 2010
Transport Layer Security (TLS) Transport Model for SNMP Transport Layer Security (TLS) Transport Model for SNMP
draft-ietf-isms-dtls-tm-09.txt draft-ietf-isms-dtls-tm-10.txt
Abstract Abstract
This document describes a Transport Model for the Simple Network This document describes a Transport Model for the Simple Network
Management Protocol (SNMP), that uses either the Transport Layer Management Protocol (SNMP), that uses either the Transport Layer
Security protocol or the Datagram Transport Layer Security (DTLS) Security protocol or the Datagram Transport Layer Security (DTLS)
protocol. The TLS and DTLS protocols provide authentication and protocol. The TLS and DTLS protocols provide authentication and
privacy services for SNMP applications. This document describes how privacy services for SNMP applications. This document describes how
the TLS Transport Model (TLSTM) implements the needed features of a the TLS Transport Model (TLSTM) implements the needed features of a
SNMP Transport Subsystem to make this protection possible in an SNMP Transport Subsystem to make this protection possible in an
skipping to change at page 2, line 9 skipping to change at page 2, line 9
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."
The list of current Internet-Drafts can be accessed at The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt. http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html. http://www.ietf.org/shadow.html.
This Internet-Draft will expire on September 7, 2010. This Internet-Draft will expire on October 16, 2010.
Copyright Notice Copyright Notice
Copyright (c) 2010 IETF Trust and the persons identified as the Copyright (c) 2010 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
skipping to change at page 4, line 8 skipping to change at page 4, line 8
8. Operational Considerations . . . . . . . . . . . . . . . . . . 52 8. Operational Considerations . . . . . . . . . . . . . . . . . . 52
8.1. Sessions . . . . . . . . . . . . . . . . . . . . . . . . . 52 8.1. Sessions . . . . . . . . . . . . . . . . . . . . . . . . . 52
8.2. Notification Receiver Credential Selection . . . . . . . . 53 8.2. Notification Receiver Credential Selection . . . . . . . . 53
8.3. contextEngineID Discovery . . . . . . . . . . . . . . . . 53 8.3. contextEngineID Discovery . . . . . . . . . . . . . . . . 53
8.4. Transport Considerations . . . . . . . . . . . . . . . . . 54 8.4. Transport Considerations . . . . . . . . . . . . . . . . . 54
9. Security Considerations . . . . . . . . . . . . . . . . . . . 54 9. Security Considerations . . . . . . . . . . . . . . . . . . . 54
9.1. Certificates, Authentication, and Authorization . . . . . 54 9.1. Certificates, Authentication, and Authorization . . . . . 54
9.2. Use with SNMPv1/SNMPv2c Messages . . . . . . . . . . . . . 55 9.2. Use with SNMPv1/SNMPv2c Messages . . . . . . . . . . . . . 55
9.3. MIB Module Security . . . . . . . . . . . . . . . . . . . 55 9.3. MIB Module Security . . . . . . . . . . . . . . . . . . . 55
10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 57 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 57
11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 57 11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 58
12. References . . . . . . . . . . . . . . . . . . . . . . . . . . 58 12. References . . . . . . . . . . . . . . . . . . . . . . . . . . 58
12.1. Normative References . . . . . . . . . . . . . . . . . . . 58 12.1. Normative References . . . . . . . . . . . . . . . . . . . 58
12.2. Informative References . . . . . . . . . . . . . . . . . . 59 12.2. Informative References . . . . . . . . . . . . . . . . . . 59
Appendix A. Target and Notification Configuration Example . . . . 60 Appendix A. Target and Notification Configuration Example . . . . 60
A.1. Configuring the Notification Originator . . . . . . . . . 60 A.1. Configuring the Notification Originator . . . . . . . . . 61
A.2. Configuring the Command Responder . . . . . . . . . . . . 62 A.2. Configuring the Command Responder . . . . . . . . . . . . 62
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 63 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 63
1. Introduction 1. Introduction
It is important to understand the modular SNMPv3 architecture as It is important to understand the modular SNMPv3 architecture as
defined by [RFC3411] and enhanced by the Transport Subsystem defined by [RFC3411] and enhanced by the Transport Subsystem
[RFC5590]. It is also important to understand the terminology of the [RFC5590]. It is also important to understand the terminology of the
SNMPv3 architecture in order to understand where the Transport Model SNMPv3 architecture in order to understand where the Transport Model
described in this document fits into the architecture and how it described in this document fits into the architecture and how it
skipping to change at page 5, line 48 skipping to change at page 5, line 48
Managed objects are accessed via a virtual information store, termed Managed objects are accessed via a virtual information store, termed
the Management Information Base or MIB. MIB objects are generally the Management Information Base or MIB. MIB objects are generally
accessed through the Simple Network Management Protocol (SNMP). accessed through the Simple Network Management Protocol (SNMP).
Objects in the MIB are defined using the mechanisms defined in the Objects in the MIB are defined using the mechanisms defined in the
Structure of Management Information (SMI). This memo specifies a MIB Structure of Management Information (SMI). This memo specifies a MIB
module that is compliant to the SMIv2, which is described in STD 58: module that is compliant to the SMIv2, which is described in STD 58:
[RFC2578], [RFC2579] and [RFC2580]. [RFC2578], [RFC2579] and [RFC2580].
The diagram shown below gives a conceptual overview of two SNMP The diagram shown below gives a conceptual overview of two SNMP
entities communicating using the TLS Transport Model. One entity entities communicating using the TLS Transport Model (shown as "TLS
contains a command responder and notification originator application, TM"). One entity contains a command responder and notification
and the other a command generator and notification responder originator application, and the other a command generator and
application. It should be understood that this particular mix of notification responder application. It should be understood that
application types is an example only and other combinations are this particular mix of application types is an example only and other
equally valid. Note: this diagram shows the Transport Security Model combinations are equally valid. Note: this diagram shows the
(TSM) being used as the security model which is defined in [RFC5591]. Transport Security Model (TSM) being used as the security model which
is defined in [RFC5591].
+---------------------------------------------------------------------+ +---------------------------------------------------------------------+
| Network | | Network |
+---------------------------------------------------------------------+ +---------------------------------------------------------------------+
^ | ^ | ^ | ^ |
|Notifications |Commands |Commands |Notifications |Notifications |Commands |Commands |Notifications
+---|---------------------|-------+ +--|---------------|--------------+ +---|---------------------|-------+ +--|---------------|--------------+
| | V | | | V | | | V | | | V |
| +------------+ +------------+ | | +-----------+ +----------+ | | +------------+ +------------+ | | +-----------+ +----------+ |
| | (D)TLS | | (D)TLS | | | | (D)TLS | | (D)TLS | | | | (D)TLS | | (D)TLS | | | | (D)TLS | | (D)TLS | |
skipping to change at page 10, line 9 skipping to change at page 10, line 9
conceptually be sent through the session from one SNMP message conceptually be sent through the session from one SNMP message
Dispatcher to another SNMP Message Dispatcher. If multiple SNMP Dispatcher to another SNMP Message Dispatcher. If multiple SNMP
messages are needed to be passed between two SNMP applications they messages are needed to be passed between two SNMP applications they
MAY be passed through the same session. A TLSTM implementation MAY be passed through the same session. A TLSTM implementation
engine MAY choose to close the session to conserve resources. engine MAY choose to close the session to conserve resources.
The TLS Transport Model of an SNMP engine will perform the The TLS Transport Model of an SNMP engine will perform the
translation between (D)TLS-specific security parameters and SNMP- translation between (D)TLS-specific security parameters and SNMP-
specific, model-independent parameters. specific, model-independent parameters.
The diagram below depicts where the TLS Transport Model fits into the The diagram below depicts where the TLS Transport Model (shown as
architecture described in RFC3411 and the Transport Subsystem: "(D)TLS TM") fits into the architecture described in RFC3411 and the
Transport Subsystem:
+------------------------------+ +------------------------------+
| Network | | Network |
+------------------------------+ +------------------------------+
^ ^ ^ ^ ^ ^
| | | | | |
v v v v v v
+-------------------------------------------------------------------+ +-------------------------------------------------------------------+
| +--------------------------------------------------+ | | +--------------------------------------------------+ |
| | Transport Subsystem | +--------+ | | | Transport Subsystem | +--------+ |
skipping to change at page 12, line 16 skipping to change at page 12, line 16
sequence number. Since UDP provides no sequencing ability, DTLS sequence number. Since UDP provides no sequencing ability, DTLS
uses a sliding window protocol with the sequence number used for uses a sliding window protocol with the sequence number used for
replay protection (see [RFC4347]). replay protection (see [RFC4347]).
4. Disclosure - The disclosure threat is the danger of eavesdropping 4. Disclosure - The disclosure threat is the danger of eavesdropping
on the exchanges between SNMP engines. on the exchanges between SNMP engines.
(D)TLS provides protection against the disclosure of information (D)TLS provides protection against the disclosure of information
to unauthorized recipients or eavesdroppers by allowing for to unauthorized recipients or eavesdroppers by allowing for
encryption of all traffic between SNMP engines. A TLS Transport encryption of all traffic between SNMP engines. A TLS Transport
Model implementation SHOULD support the message encryption to Model implementation SHOULD support message encryption to protect
protect sensitive data from eavesdropping attacks. sensitive data from eavesdropping attacks.
5. Denial of Service - the RFC 3411 architecture [RFC3411] states 5. Denial of Service - the RFC 3411 architecture [RFC3411] states
that denial of service (DoS) attacks need not be addressed by an that denial of service (DoS) attacks need not be addressed by an
SNMP security protocol. However, connectionless transports (like SNMP security protocol. However, connectionless transports (like
DTLS over UDP) are susceptible to a variety of denial of service DTLS over UDP) are susceptible to a variety of denial of service
attacks because they are more vulnerable to spoofed IP addresses. attacks because they are more vulnerable to spoofed IP addresses.
See Section 4.2 for details how the cookie mechanism is used. See Section 4.2 for details how the cookie mechanism is used.
Note, however, that this mechanism does not provide any defense Note, however, that this mechanism does not provide any defense
against denial of service attacks mounted from valid IP against denial of service attacks mounted from valid IP
addresses. addresses.
skipping to change at page 15, line 12 skipping to change at page 15, line 12
module that extends the SNMP-TARGET-MIB's snmpTargetParamsTable to module that extends the SNMP-TARGET-MIB's snmpTargetParamsTable to
specify a (D)TLS client-side certificate to use for the connection. specify a (D)TLS client-side certificate to use for the connection.
When configuring a (D)TLS target, the snmpTargetAddrTDomain and When configuring a (D)TLS target, the snmpTargetAddrTDomain and
snmpTargetAddrTAddress parameters in snmpTargetAddrTable should be snmpTargetAddrTAddress parameters in snmpTargetAddrTable should be
set to the snmpTLSTCPDomain or snmpDTLSUDPDomain object and an set to the snmpTLSTCPDomain or snmpDTLSUDPDomain object and an
appropriate snmpTLSAddress value. When used with the SNMPv3 message appropriate snmpTLSAddress value. When used with the SNMPv3 message
processing model, the snmpTargetParamsMPModel column of the processing model, the snmpTargetParamsMPModel column of the
snmpTargetParamsTable should be set to a value of 3. The snmpTargetParamsTable should be set to a value of 3. The
snmpTargetParamsSecurityName should be set to an appropriate snmpTargetParamsSecurityName should be set to an appropriate
securityName value and the tlstmParamsClientFingerprint parameter of securityName value and the snmpTlstmParamsClientFingerprint parameter
the tlstmParamsTable should be set a value that refers to a locally of the snmpTlstmParamsTable should be set a value that refers to a
held certificate (and the corresponding private key) to be used. locally held certificate (and the corresponding private key) to be
Other parameters, for example cryptographic configuration such as used. Other parameters, for example cryptographic configuration such
which cipher suites to use, must come from configuration mechanisms as which cipher suites to use, must come from configuration
not defined in this document. mechanisms not defined in this document.
The securityName defined in the snmpTargetParamsSecurityName column The securityName defined in the snmpTargetParamsSecurityName column
will be used by the access control model to authorize any will be used by the access control model to authorize any
notifications that need to be sent. notifications that need to be sent.
4. Elements of the Model 4. Elements of the Model
This section contains definitions required to realize the (D)TLS This section contains definitions required to realize the (D)TLS
Transport Model defined by this document. Transport Model defined by this document.
4.1. X.509 Certificates 4.1. X.509 Certificates
(D)TLS can make use of X.509 certificates for authentication of both (D)TLS can make use of X.509 certificates for authentication of both
sides of the transport. This section discusses the use of X.509 sides of the transport. This section discusses the use of X.509
certificates in the TLSTM. certificates in the TLSTM.
While (D)TLS supports multiple authentication mechanisms, this While (D)TLS supports multiple authentication mechanisms, this
document only discusses X.509 certificate based authentication; Other document only discusses X.509 certificate based authentication; other
forms of authentication are are outside the scope of this forms of authentication are are outside the scope of this
specification. TLSTM implementations are REQUIRED to support X.509 specification. TLSTM implementations are REQUIRED to support X.509
certificates. certificates.
4.1.1. Provisioning for the Certificate 4.1.1. Provisioning for the Certificate
Authentication using (D)TLS will require that SNMP entities have Authentication using (D)TLS will require that SNMP entities have
certificates, either signed by trusted certification authorities, or certificates, either signed by trusted certification authorities, or
self-signed. Furthermore, SNMP entities will most commonly need to self-signed. Furthermore, SNMP entities will most commonly need to
be provisioned with root certificates which represent the list of be provisioned with root certificates which represent the list of
trusted certificate authorities that an SNMP entity can use for trusted certificate authorities that an SNMP entity can use for
certificate verification. SNMP entities SHOULD also be provisioned certificate verification. SNMP entities SHOULD also be provisioned
with a X.509 certificate revocation mechanism which can be used to with a X.509 certificate revocation mechanism which can be used to
verify that a certificate has not been revoked. Trusted public keys verify that a certificate has not been revoked. Trusted public keys
from either CA certificates and/or self-signed certificates, MUST be from either CA certificates and/or self-signed certificates MUST be
installed into the server through a trusted out of band mechanism and installed into the server through a trusted out of band mechanism and
their authenticity MUST be verified before access is granted. their authenticity MUST be verified before access is granted.
Having received a certificate from a connecting TLSTM client, the Having received a certificate from a connecting TLSTM client, the
authenticated tmSecurityName of the principal is derived using the authenticated tmSecurityName of the principal is derived using the
tlstmCertToTSNTable. This table allows mapping of incoming snmpTlstmCertToTSNTable. This table allows mapping of incoming
connections to tmSecurityNames through defined transformations. The connections to tmSecurityNames through defined transformations. The
transformations defined in the TLSTM-MIB include: transformations defined in the SNMP-TLS-TM-MIB include:
o Mapping a certificate's subjectAltName or CommonName components to o Mapping a certificate's subjectAltName or CommonName components to
a tmSecurityName, or a tmSecurityName, or
o Mapping a certificate's fingerprint value to a directly specified o Mapping a certificate's fingerprint value to a directly specified
tmSecurityName tmSecurityName
As an implementation hint: implementations may choose to discard any As an implementation hint: implementations may choose to discard any
connections for which no potential tlstmCertToTSNTable mapping exists connections for which no potential snmpTlstmCertToTSNTable mapping
before performing certificate verification to avoid expending exists before performing certificate verification to avoid expending
computational resources associated with certificate verification. computational resources associated with certificate verification.
Enterprise configurations are encouraged to map a "subjectAltName" Enterprise configurations are encouraged to map a "subjectAltName"
component of the X.509 certificate to the TLSTM specific component of the X.509 certificate to the TLSTM specific
tmSecurityName. The authenticated identity can be obtained by the tmSecurityName. The authenticated identity can be obtained by the
TLS Transport Model by extracting the subjectAltName(s) from the TLS Transport Model by extracting the subjectAltName(s) from the
peer's certificate. The receiving application will then have an peer's certificate. The receiving application will then have an
appropriate tmSecurityName for use by other SNMPv3 components like an appropriate tmSecurityName for use by other SNMPv3 components like an
access control model. access control model.
skipping to change at page 20, line 15 skipping to change at page 20, line 15
4.4.1.1. tmSecurityName 4.4.1.1. tmSecurityName
The tmSecurityName MUST be a human-readable name (in snmpAdminString The tmSecurityName MUST be a human-readable name (in snmpAdminString
format) representing the identity that has been set according to the format) representing the identity that has been set according to the
procedures in Section 5. The tmSecurityName MUST be constant for all procedures in Section 5. The tmSecurityName MUST be constant for all
traffic passing through an TLSTM session. Messages MUST NOT be sent traffic passing through an TLSTM session. Messages MUST NOT be sent
through an existing (D)TLS connection that was established using a through an existing (D)TLS connection that was established using a
different tmSecurityName. different tmSecurityName.
On the (D)TLS server side of a connection the tmSecurityName is On the (D)TLS server side of a connection the tmSecurityName is
derived using the procedures described in Section 5.3.2 and the derived using the procedures described in Section 5.3.2 and the SNMP-
TLSTM-MIB's tlstmCertToTSNTable DESCRIPTION clause. TLS-TM-MIB's snmpTlstmCertToTSNTable DESCRIPTION clause.
On the (D)TLS client side of a connection the tmSecurityName is On the (D)TLS client side of a connection the tmSecurityName is
presented to the TLS Transport Model by the application (possibly presented to the TLS Transport Model by the application (possibly
because of configuration specified in the SNMP-TARGET-MIB). because of configuration specified in the SNMP-TARGET-MIB).
The securityName MAY be derived from the tmSecurityName by a Security The securityName MAY be derived from the tmSecurityName by a Security
Model and MAY be used to configure notifications and access controls Model and MAY be used to configure notifications and access controls
in MIB modules. Transport Models SHOULD generate a predictable in MIB modules. Transport Models SHOULD generate a predictable
tmSecurityName so operators will know what to use when configuring tmSecurityName so operators will know what to use when configuring
MIB modules that use securityNames derived from tmSecurityNames. The MIB modules that use securityNames derived from tmSecurityNames. The
TLSTM generates predictable tmSecurityNames based on the TLSTM generates predictable tmSecurityNames based on the
configuration found in the TLSTM-MIB's tlstmCertToTSNTable and relies configuration found in the SNMP-TLS-TM-MIB's snmpTlstmCertToTSNTable
on the network operators to have configured this table appropriately. and relies on the network operators to have configured this table
appropriately.
4.4.1.2. tmSessionID 4.4.1.2. tmSessionID
The tmSessionID MUST be recorded per message at the time of receipt. The tmSessionID MUST be recorded per message at the time of receipt.
When tmSameSecurity is set, the recorded tmSessionID can be used to When tmSameSecurity is set, the recorded tmSessionID can be used to
determine whether the (D)TLS connection available for sending a determine whether the (D)TLS connection available for sending a
corresponding outgoing message is the same (D)TLS connection as was corresponding outgoing message is the same (D)TLS connection as was
used when receiving the incoming message (e.g., a response to a used when receiving the incoming message (e.g., a response to a
request). request).
skipping to change at page 22, line 23 skipping to change at page 22, line 24
remote transport address, incomingMessage, incomingMessageLength, and remote transport address, incomingMessage, incomingMessageLength, and
the tlstmSessionID. the tlstmSessionID.
1) The TLS Transport Model examines the raw UDP message, in an 1) The TLS Transport Model examines the raw UDP message, in an
implementation-dependent manner. implementation-dependent manner.
2) The TLS Transport Model queries the LCD using the transport 2) The TLS Transport Model queries the LCD using the transport
parameters (source and destination IP addresses and ports) to parameters (source and destination IP addresses and ports) to
determine if a session already exists. determine if a session already exists.
2a) f a matching entry in the LCD does not exist, then the UDP 2a) If a matching entry in the LCD does not exist, then the UDP
packet is passed to the DTLS implementation for processing. packet is passed to the DTLS implementation for processing.
If the DTLS implementation decides to continue with the If the DTLS implementation decides to continue with the
connection and allocate state for it, it returns a new DTLS connection and allocate state for it, it returns a new DTLS
connection handle (an implementation dependent detail). In connection handle (an implementation dependent detail). In
this case, TLSTM selects a new tlstmSessionId, and caches this case, TLSTM selects a new tlstmSessionId, and caches
this and the DTLS connection handle as a new entry in the this and the DTLS connection handle as a new entry in the
LCD (indexed by the transport parameters). If the DTLS LCD (indexed by the transport parameters). If the DTLS
implementation returns an error or does not allocate implementation returns an error or does not allocate
connection state (which can happen with the stateless cookie connection state (which can happen with the stateless cookie
exchange), processing stops. exchange), processing stops.
skipping to change at page 26, line 22 skipping to change at page 26, line 22
IN tmStateReference -- transport information to be used IN tmStateReference -- transport information to be used
OUT tmStateReference -- transport information to be used OUT tmStateReference -- transport information to be used
IN maxMessageSize -- of the sending SNMP entity IN maxMessageSize -- of the sending SNMP entity
) )
The following describes the procedure to follow when establishing a The following describes the procedure to follow when establishing a
SNMP over (D)TLS connection between SNMP engines for exchanging SNMP SNMP over (D)TLS connection between SNMP engines for exchanging SNMP
messages. This process is followed by any SNMP client's engine when messages. This process is followed by any SNMP client's engine when
establishing a session for subsequent use. establishing a session for subsequent use.
This MAY be done automatically for an SNMP application that initiates This procedure MAY be done automatically for an SNMP application that
a transaction, such as a command generator, a notification initiates a transaction, such as a command generator, a notification
originator, or a proxy forwarder. originator, or a proxy forwarder.
1) The snmpTlstmSessionOpens counter is incremented. 1) The snmpTlstmSessionOpens counter is incremented.
2) The client selects the appropriate certificate and cipher_suites 2) The client selects the appropriate certificate and cipher_suites
for the key agreement based on the tmSecurityName and the for the key agreement based on the tmSecurityName and the
tmRequestedSecurityLevel for the session. For sessions being tmRequestedSecurityLevel for the session. For sessions being
established as a result of a SNMP-TARGET-MIB based operation, the established as a result of a SNMP-TARGET-MIB based operation, the
certificate will potentially have been identified via the certificate will potentially have been identified via the
tlstmParamsTable mapping and the cipher_suites will have to be snmpTlstmParamsTable mapping and the cipher_suites will have to
taken from system-wide or implementation-specific configuration. be taken from system-wide or implementation-specific
If no row in the tlstmParamsTable exists then implementations MAY configuration. If no row in the snmpTlstmParamsTable exists then
choose to establish the connection using a default client implementations MAY choose to establish the connection using a
certificate available to the application. Otherwise, the default client certificate available to the application.
certificate and appropriate cipher_suites will need to be passed Otherwise, the certificate and appropriate cipher_suites will
to the openSession() ASI as supplemental information or need to be passed to the openSession() ASI as supplemental
configured through an implementation-dependent mechanism. It is information or configured through an implementation-dependent
also implementation-dependent and possibly policy-dependent how mechanism. It is also implementation-dependent and possibly
tmRequestedSecurityLevel will be used to influence the security policy-dependent how tmRequestedSecurityLevel will be used to
capabilities provided by the (D)TLS connection. However this is influence the security capabilities provided by the (D)TLS
done, the security capabilities provided by (D)TLS MUST be at connection. However this is done, the security capabilities
least as high as the level of security indicated by the provided by (D)TLS MUST be at least as high as the level of
tmRequestedSecurityLevel parameter. The actual security level of security indicated by the tmRequestedSecurityLevel parameter.
the session is reported in the tmStateReference cache as The actual security level of the session is reported in the
tmSecurityLevel. For (D)TLS to provide strong authentication, tmStateReference cache as tmSecurityLevel. For (D)TLS to provide
each principal acting as a command generator SHOULD have its own strong authentication, each principal acting as a command
certificate. generator SHOULD have its own certificate.
3) Using the destTransportDomain and destTransportAddress values, 3) Using the destTransportDomain and destTransportAddress values,
the client will initiate the (D)TLS handshake protocol to the client will initiate the (D)TLS handshake protocol to
establish session keys for message integrity and encryption. establish session keys for message integrity and encryption.
If the attempt to establish a session is unsuccessful, then If the attempt to establish a session is unsuccessful, then
snmpTlstmSessionOpenErrors is incremented, an error indication is snmpTlstmSessionOpenErrors is incremented, an error indication is
returned, and processing stops. If the session failed to open returned, and processing stops. If the session failed to open
because the presented server certificate was unknown or invalid because the presented server certificate was unknown or invalid
then the snmpTlstmSessionUnknownServerCertificate or then the snmpTlstmSessionUnknownServerCertificate or
snmpTlstmSessionInvalidServerCertificates MUST be incremented and snmpTlstmSessionInvalidServerCertificates MUST be incremented and
a tlstmServerCertificateUnknown or tlstmServerInvalidCertificate a snmpTlstmServerCertificateUnknown or
notification SHOULD be sent as appropriate. Reasons for server snmpTlstmServerInvalidCertificate notification SHOULD be sent as
certificate invalidation includes, but is not limited to, appropriate. Reasons for server certificate invalidation
cryptographic validation failures and an unexpected presented includes, but is not limited to, cryptographic validation
certificate identity. failures and an unexpected presented certificate identity.
4) The (D)TLS client MUST then verify that the (D)TLS server's 4) The (D)TLS client MUST then verify that the (D)TLS server's
presented certificate is the expected certificate. The (D)TLS presented certificate is the expected certificate. The (D)TLS
client MUST NOT transmit SNMP messages until the server client MUST NOT transmit SNMP messages until the server
certificate has been authenticated and the client certificate has certificate has been authenticated, the client certificate has
been transmitted. been transmitted and the TLS connection has been fully
established.
If the connection is being established from configuration based If the connection is being established from configuration based
on SNMP-TARGET-MIB configuration, then the tlstmAddrTable on SNMP-TARGET-MIB configuration, then the snmpTlstmAddrTable
DESCRIPTION clause describes how the verification is done (using DESCRIPTION clause describes how the verification is done (using
either a certificate fingerprint, or an identity authenticated either a certificate fingerprint, or an identity authenticated
via certification path validation). via certification path validation).
If the connection is being established for reasons other than If the connection is being established for reasons other than
configuration found in the SNMP-TARGET-MIB then configuration and configuration found in the SNMP-TARGET-MIB then configuration and
procedures outside the scope of this document should be followed. procedures outside the scope of this document should be followed.
Configuration mechanisms SHOULD be similar in nature to those Configuration mechanisms SHOULD be similar in nature to those
defined in the tlstmAddrTable to ensure consistency across defined in the snmpTlstmAddrTable to ensure consistency across
management configuration systems. For example, a command-line management configuration systems. For example, a command-line
tool for generating SNMP GETs might support specifying either the tool for generating SNMP GETs might support specifying either the
server's certificate fingerprint or the expected host name as a server's certificate fingerprint or the expected host name as a
command line argument. command line argument.
5) (D)TLS provides assurance that the authenticated identity has 5) (D)TLS provides assurance that the authenticated identity has
been signed by a trusted configured certification authority. If been signed by a trusted configured certification authority. If
verification of the server's certificate fails in any way (for verification of the server's certificate fails in any way (for
example because of failures in cryptographic verification or the example because of failures in cryptographic verification or the
presented identity did not match the expected named entity) then presented identity did not match the expected named entity) then
skipping to change at page 28, line 20 skipping to change at page 28, line 21
future use. The tlstmSessionID is also stored in the LCD for future use. The tlstmSessionID is also stored in the LCD for
later lookup during processing of incoming messages later lookup during processing of incoming messages
(Section 5.1.2). (Section 5.1.2).
5.3.2. Accepting a Session as a Server 5.3.2. Accepting a Session as a Server
A (D)TLS server should accept new session connections from any client A (D)TLS server should accept new session connections from any client
that it is able to verify the client's credentials for. This is done that it is able to verify the client's credentials for. This is done
by authenticating the client's presented certificate through a by authenticating the client's presented certificate through a
certificate path validation process (e.g. [RFC5280]) or through certificate path validation process (e.g. [RFC5280]) or through
certificate fingerprint verification using fingerprints configure in certificate fingerprint verification using fingerprints configured in
the tlstmCertToTSNTable. Afterward the server will determine the the snmpTlstmCertToTSNTable. Afterward the server will determine the
identity of the remote entity using the following procedures. identity of the remote entity using the following procedures.
The (D)TLS server identifies the authenticated identity from the The (D)TLS server identifies the authenticated identity from the
(D)TLS client's principal certificate using configuration information (D)TLS client's principal certificate using configuration information
from the tlstmCertToTSNTable mapping table. The (D)TLS server MUST from the snmpTlstmCertToTSNTable mapping table. The (D)TLS server
request and expect a certificate from the client and MUST NOT accept MUST request and expect a certificate from the client and MUST NOT
SNMP messages over the (D)TLS connection until the client has sent a accept SNMP messages over the (D)TLS connection until the client has
certificate and it has been authenticated. The resulting derived sent a certificate and it has been authenticated. The resulting
tmSecurityName is recorded in the tmStateReference cache as derived tmSecurityName is recorded in the tmStateReference cache as
tmSecurityName. The details of the lookup process are fully tmSecurityName. The details of the lookup process are fully
described in the DESCRIPTION clause of the tlstmCertToTSNTable MIB described in the DESCRIPTION clause of the snmpTlstmCertToTSNTable
object. If any verification fails in any way (for example because of MIB object. If any verification fails in any way (for example
failures in cryptographic verification or because of the lack of an because of failures in cryptographic verification or because of the
appropriate row in the tlstmCertToTSNTable) then the session lack of an appropriate row in the snmpTlstmCertToTSNTable) then the
establishment MUST fail, the session establishment MUST fail, and the
snmpTlstmSessionInvalidClientCertificates object is incremented. If snmpTlstmSessionInvalidClientCertificates object is incremented. If
the session can not be opened for any reason at all, including the session can not be opened for any reason at all, including
cryptographic verification failures, then the cryptographic verification failures, then the
snmpTlstmSessionOpenErrors counter is incremented and processing snmpTlstmSessionOpenErrors counter is incremented and processing
stops. stops.
Servers that wish to support multiple principals at a particular port Servers that wish to support multiple principals at a particular port
SHOULD make use of a (D)TLS extension that allows server-side SHOULD make use of a (D)TLS extension that allows server-side
principal selection like the Server Name Indication extension defined principal selection like the Server Name Indication extension defined
in Section 3.1 of [RFC4366]. Supporting this will allow, for in Section 3.1 of [RFC4366]. Supporting this will allow, for
skipping to change at page 30, line 15 skipping to change at page 30, line 15
o A new TransportAddress format for describing (D)TLS connection o A new TransportAddress format for describing (D)TLS connection
addressing requirements. addressing requirements.
o A certificate fingerprint allowing MIB module objects to o A certificate fingerprint allowing MIB module objects to
generically refer to a stored X.509 certificate using a generically refer to a stored X.509 certificate using a
cryptographic hash as a reference pointer. cryptographic hash as a reference pointer.
6.3. Statistical Counters 6.3. Statistical Counters
The TLSTM-MIB defines some counters that can provide network The SNMP-TLS-TM-MIB defines some counters that can provide network
management stations with information about session usage and management stations with information about session usage and
potential errors that a MIB-instrumented device may be experiencing. potential errors that a MIB-instrumented device may be experiencing.
6.4. Configuration Tables 6.4. Configuration Tables
The TLSTM-MIB defines configuration tables that an administrator can The SNMP-TLS-TM-MIB defines configuration tables that an
use for configuring a MIB-instrumented device for sending and administrator can use for configuring a MIB-instrumented device for
receiving SNMP messages over (D)TLS. In particular, there are MIB sending and receiving SNMP messages over (D)TLS. In particular,
tables that extend the SNMP-TARGET-MIB for configuring (D)TLS there are MIB tables that extend the SNMP-TARGET-MIB for configuring
certificate usage and a MIB table for mapping incoming (D)TLS client (D)TLS certificate usage and a MIB table for mapping incoming (D)TLS
certificates to SNMPv3 securityNames. client certificates to SNMPv3 securityNames.
6.4.1. Notifications 6.4.1. Notifications
The TLSTM-MIB defines notifications to alert management stations when The SNMP-TLS-TM-MIB defines notifications to alert management
a (D)TLS connection fails because a server's presented certificate stations when a (D)TLS connection fails because a server's presented
did not meet an expected value (tlstmServerCertificateUnknown) or certificate did not meet an expected value
because cryptographic validation failed (snmpTlstmServerCertificateUnknown) or because cryptographic
(tlstmServerInvalidCertificate). validation failed (snmpTlstmServerInvalidCertificate).
6.5. Relationship to Other MIB Modules 6.5. Relationship to Other MIB Modules
Some management objects defined in other MIB modules are applicable Some management objects defined in other MIB modules are applicable
to an entity implementing the TLS Transport Model. In particular, it to an entity implementing the TLS Transport Model. In particular, it
is assumed that an entity implementing the TLSTM-MIB will implement is assumed that an entity implementing the SNMP-TLS-TM-MIB will
the SNMPv2-MIB [RFC3418], the SNMP-FRAMEWORK-MIB [RFC3411], the SNMP- implement the SNMPv2-MIB [RFC3418], the SNMP-FRAMEWORK-MIB [RFC3411],
TARGET-MIB [RFC3413], the SNMP-NOTIFICATION-MIB [RFC3413] and the the SNMP-TARGET-MIB [RFC3413], the SNMP-NOTIFICATION-MIB [RFC3413]
SNMP-VIEW-BASED-ACM-MIB [RFC3415]. and the SNMP-VIEW-BASED-ACM-MIB [RFC3415].
The TLSTM-MIB module contained in this document is for managing TLS The SNMP-TLS-TM-MIB module contained in this document is for managing
Transport Model information. TLS Transport Model information.
6.5.1. MIB Modules Required for IMPORTS 6.5.1. MIB Modules Required for IMPORTS
The TLSTM-MIB module imports items from SNMPv2-SMI [RFC2578], The SNMP-TLS-TM-MIB module imports items from SNMPv2-SMI [RFC2578],
SNMPv2-TC [RFC2579], SNMP-FRAMEWORK-MIB [RFC3411], SNMP-TARGET-MIB SNMPv2-TC [RFC2579], SNMP-FRAMEWORK-MIB [RFC3411], SNMP-TARGET-MIB
[RFC3413] and SNMPv2-CONF [RFC2580]. [RFC3413] and SNMPv2-CONF [RFC2580].
7. MIB Module Definition 7. MIB Module Definition
TLSTM-MIB DEFINITIONS ::= BEGIN SNMP-TLS-TM-MIB DEFINITIONS ::= BEGIN
IMPORTS IMPORTS
MODULE-IDENTITY, OBJECT-TYPE, MODULE-IDENTITY, OBJECT-TYPE,
OBJECT-IDENTITY, snmpModules, snmpDomains, OBJECT-IDENTITY, mib-2, snmpDomains,
Counter32, Unsigned32, NOTIFICATION-TYPE Counter32, Unsigned32, Gauge32, NOTIFICATION-TYPE
FROM SNMPv2-SMI FROM SNMPv2-SMI
TEXTUAL-CONVENTION, TimeStamp, RowStatus, StorageType, TEXTUAL-CONVENTION, TimeStamp, RowStatus, StorageType,
AutonomousType AutonomousType
FROM SNMPv2-TC FROM SNMPv2-TC
MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP
FROM SNMPv2-CONF FROM SNMPv2-CONF
SnmpAdminString SnmpAdminString
FROM SNMP-FRAMEWORK-MIB FROM SNMP-FRAMEWORK-MIB
snmpTargetParamsName, snmpTargetAddrName snmpTargetParamsName, snmpTargetAddrName
FROM SNMP-TARGET-MIB FROM SNMP-TARGET-MIB
; ;
tlstmMIB MODULE-IDENTITY snmpTlstmMIB MODULE-IDENTITY
LAST-UPDATED "201003060000Z" LAST-UPDATED "201004140000Z"
ORGANIZATION "ISMS Working Group" ORGANIZATION "ISMS Working Group"
CONTACT-INFO "WG-EMail: isms@lists.ietf.org CONTACT-INFO "WG-EMail: isms@lists.ietf.org
Subscribe: isms-request@lists.ietf.org Subscribe: isms-request@lists.ietf.org
Chairs: Chairs:
Juergen Schoenwaelder Juergen Schoenwaelder
Jacobs University Bremen Jacobs University Bremen
Campus Ring 1 Campus Ring 1
28725 Bremen 28725 Bremen
Germany Germany
+49 421 200-3587 +49 421 200-3587
j.schoenwaelder@jacobs-university.de j.schoenwaelder@jacobs-university.de
Russ Mundy Russ Mundy
SPARTA, Inc. SPARTA, Inc.
7110 Samuel Morse Drive 7110 Samuel Morse Drive
Columbia, MD 21046 Columbia, MD 21046
USA USA
Co-editors: Editor:
Wes Hardaker Wes Hardaker
Sparta, Inc. Sparta, Inc.
P.O. Box 382 P.O. Box 382
Davis, CA 95617 Davis, CA 95617
USA USA
ietf@hardakers.net ietf@hardakers.net
" "
DESCRIPTION " DESCRIPTION "
The TLS Transport Model MIB The TLS Transport Model MIB
Copyright (c) 2010 IETF Trust and the persons identified as Copyright (c) 2010 IETF Trust and the persons identified as
the document authors. All rights reserved. the document authors. All rights reserved.
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 License to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents Relating to IETF Documents
(http://trustee.ietf.org/license-info). (http://trustee.ietf.org/license-info)."
This version of this MIB module is part of RFC XXXX;
see the RFC itself for full legal notices."
REVISION "201004140000Z"
DESCRIPTION "This version of this MIB module is part of
RFC XXXX; see the RFC itself for full legal
notices."
REVISION "201003060000Z"
DESCRIPTION "The initial version, published in RFC XXXX."
-- NOTE to RFC editor: replace XXXX with actual RFC number -- NOTE to RFC editor: replace XXXX with actual RFC number
-- for this document and change the date to the
-- current date and remove this note
::= { snmpModules xxxx } ::= { mib-2 www }
-- RFC Ed.: replace www with IANA-assigned number under the mib-2
-- SNMP OID tree and remove this note
-- ************************************************ -- ************************************************
-- subtrees of the SNMP-TLS-TM-MIB
-- ************************************************ -- ************************************************
tlstmNotifications OBJECT IDENTIFIER ::= { tlstmMIB 0 } snmpTlstmNotifications OBJECT IDENTIFIER ::= { snmpTlstmMIB 0 }
tlstmIdentities OBJECT IDENTIFIER ::= { tlstmMIB 1 } snmpTlstmIdentities OBJECT IDENTIFIER ::= { snmpTlstmMIB 1 }
tlstmObjects OBJECT IDENTIFIER ::= { tlstmMIB 2 } snmpTlstmObjects OBJECT IDENTIFIER ::= { snmpTlstmMIB 2 }
tlstmConformance OBJECT IDENTIFIER ::= { tlstmMIB 3 } snmpTlstmConformance OBJECT IDENTIFIER ::= { snmpTlstmMIB 3 }
-- ************************************************ -- ************************************************
-- snmpTlstmObjects - Objects
-- ************************************************ -- ************************************************
snmpTLSTCPDomain OBJECT-IDENTITY snmpTLSTCPDomain OBJECT-IDENTITY
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"The SNMP over TLS transport domain. The corresponding "The SNMP over TLS transport domain. The corresponding
transport address is of type SnmpTLSAddress. transport address is of type SnmpTLSAddress.
The securityName prefix to be associated with the The securityName prefix to be associated with the
snmpTLSTCPDomain is 'tls'. This prefix may be used by snmpTLSTCPDomain is 'tls'. This prefix may be used by
skipping to change at page 33, line 29 skipping to change at page 33, line 27
-- RFC Ed.: replace 'tls' with the actual IANA assigned prefix string -- RFC Ed.: replace 'tls' with the actual IANA assigned prefix string
-- if 'tls' is not assigned to this document. -- if 'tls' is not assigned to this document.
snmpDTLSUDPDomain OBJECT-IDENTITY snmpDTLSUDPDomain OBJECT-IDENTITY
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"The SNMP over DTLS/UDP transport domain. The corresponding "The SNMP over DTLS/UDP transport domain. The corresponding
transport address is of type SnmpTLSAddress. transport address is of type SnmpTLSAddress.
The securityName prefix to be associated with the The securityName prefix to be associated with the
snmpDTLSUDPDomain is 'dudp'. This prefix may be used by snmpDTLSUDPDomain is 'dtls'. This prefix may be used by
security models or other components to identify which secure security models or other components to identify which secure
transport infrastructure authenticated a securityName." transport infrastructure authenticated a securityName."
::= { snmpDomains yy } ::= { snmpDomains yy }
-- RFC Ed.: replace yy with IANA-assigned number and -- RFC Ed.: replace yy with IANA-assigned number and
-- remove this note -- remove this note
-- RFC Ed.: replace 'dtls' with the actual IANA assigned prefix string
-- if 'dtls' is not assigned to this document.
SnmpTLSAddress ::= TEXTUAL-CONVENTION SnmpTLSAddress ::= TEXTUAL-CONVENTION
DISPLAY-HINT "1a" DISPLAY-HINT "1a"
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"Represents a IPv4 address, an IPv6 address or an US-ASCII "Represents a IPv4 address, an IPv6 address or an US-ASCII
encoded hostname and port number. encoded hostname and port number.
An IPv4 address must be in dotted decimal format followed by a An IPv4 address must be in dotted decimal format followed by a
colon ':' (US-ASCII character 0x3A) and a decimal port number colon ':' (US-ASCII character 0x3A) and a decimal port number
skipping to change at page 35, line 28 skipping to change at page 35, line 26
This TEXTUAL-CONVENTION allows for a zero-length (blank) This TEXTUAL-CONVENTION allows for a zero-length (blank)
Fingerprint value for use in tables where the fingerprint value Fingerprint value for use in tables where the fingerprint value
may be optional. MIB definitions or implementations may refuse may be optional. MIB definitions or implementations may refuse
to accept a zero-length value as appropriate." to accept a zero-length value as appropriate."
REFERENCE REFERENCE
"RFC 5246: The Transport Layer Security (TLS) Protocol Version 1.2 "RFC 5246: The Transport Layer Security (TLS) Protocol Version 1.2
http://www.iana.org/assignments/tls-parameters/ http://www.iana.org/assignments/tls-parameters/
" "
SYNTAX OCTET STRING (SIZE (0..255)) SYNTAX OCTET STRING (SIZE (0..255))
-- Identities for use in the snmpTlstmCertToTSNTable
tlstmCertToTSNMIdentities OBJECT IDENTIFIER ::= { tlstmIdentities 1 } snmpTlstmCertToTSNMIdentities OBJECT IDENTIFIER
::= { snmpTlstmIdentities 1 }
tlstmCertSpecified OBJECT-IDENTITY snmpTlstmCertSpecified OBJECT-IDENTITY
STATUS current STATUS current
DESCRIPTION "Directly specifies the tmSecurityName to be used for DESCRIPTION "Directly specifies the tmSecurityName to be used for
this certificate. The value of the tmSecurityName this certificate. The value of the tmSecurityName
to use is specified in the tlstmCertToTSNData to use is specified in the snmpTlstmCertToTSNData
column. The tlstmCertToTSNData column must contain column. The snmpTlstmCertToTSNData column must
a non-zero length SnmpAdminString compliant value or contain a non-zero length SnmpAdminString compliant
the mapping described in this row must be considered value or the mapping described in this row must be
a failure." considered a failure."
::= { tlstmCertToTSNMIdentities 1 } ::= { snmpTlstmCertToTSNMIdentities 1 }
tlstmCertSANRFC822Name OBJECT-IDENTITY snmpTlstmCertSANRFC822Name OBJECT-IDENTITY
STATUS current STATUS current
DESCRIPTION "Maps a subjectAltName's rfc822Name to a DESCRIPTION "Maps a subjectAltName's rfc822Name to a
tmSecurityName. The local part of the rfc822Name is tmSecurityName. The local part of the rfc822Name is
passed unaltered but the host-part of the name must passed unaltered but the host-part of the name must
be passed in lower case. be passed in lower case.
Example rfc822Name Field: FooBar@Example.COM Example rfc822Name Field: FooBar@Example.COM
is mapped to tmSecurityName: FooBar@example.com" is mapped to tmSecurityName: FooBar@example.com"
::= { tlstmCertToTSNMIdentities 2 } ::= { snmpTlstmCertToTSNMIdentities 2 }
tlstmCertSANDNSName OBJECT-IDENTITY snmpTlstmCertSANDNSName OBJECT-IDENTITY
STATUS current STATUS current
DESCRIPTION "Maps a subjectAltName's dNSName to a DESCRIPTION "Maps a subjectAltName's dNSName to a
tmSecurityName after first converting it to all tmSecurityName after first converting it to all
lower case." lower case."
::= { tlstmCertToTSNMIdentities 3 } ::= { snmpTlstmCertToTSNMIdentities 3 }
tlstmCertSANIpAddress OBJECT-IDENTITY snmpTlstmCertSANIpAddress OBJECT-IDENTITY
STATUS current STATUS current
DESCRIPTION "Maps a subjectAltName's iPAddress to a DESCRIPTION "Maps a subjectAltName's iPAddress to a
tmSecurityName by transforming the binary encoded tmSecurityName by transforming the binary encoded
address as follows: address as follows:
1) for IPv4 the value is converted into a decimal 1) for IPv4 the value is converted into a decimal
dotted quad address (e.g. '192.0.2.1') dotted quad address (e.g. '192.0.2.1')
2) for IPv6 addresses the value is converted into a 2) for IPv6 addresses the value is converted into a
32-character all lowercase hexadecimal string 32-character all lowercase hexadecimal string
without any colon separators. without any colon separators.
Note that the resulting length is the maximum Note that the resulting length is the maximum
length supported by the View-Based Access Control length supported by the View-Based Access Control
Model (VACM). Note that using both the Transport Model (VACM). Note that using both the Transport
Security Model's support for transport prefixes Security Model's support for transport prefixes
(see the SNMP-TSM-MIB's (see the SNMP-TSM-MIB's
snmpTsmConfigurationUsePrefix object for details) snmpTsmConfigurationUsePrefix object for details)
will result in securityName lengths that exceed will result in securityName lengths that exceed
what VACM can handle." what VACM can handle."
::= { tlstmCertToTSNMIdentities 4 } ::= { snmpTlstmCertToTSNMIdentities 4 }
tlstmCertSANAny OBJECT-IDENTITY snmpTlstmCertSANAny OBJECT-IDENTITY
STATUS current STATUS current
DESCRIPTION "Maps any of the following fields using the DESCRIPTION "Maps any of the following fields using the
corresponding mapping algorithms: corresponding mapping algorithms:
|------------+------------------------| |------------+------------------------|
| Type | Algorithm | | Type | Algorithm |
|------------+------------------------| |------------+------------------------|
| rfc822Name | tlstmCertSANRFC822Name | | rfc822Name | snmpTlstmCertSANRFC822Name |
| dNSName | tlstmCertSANDNSName | | dNSName | snmpTlstmCertSANDNSName |
| iPAddress | tlstmCertSANIpAddress | | iPAddress | snmpTlstmCertSANIpAddress |
|------------+------------------------| |------------+------------------------|
The first matching subjectAltName value found in the The first matching subjectAltName value found in the
certificate of the above types MUST be used when certificate of the above types MUST be used when
deriving the tmSecurityName." deriving the tmSecurityName."
::= { tlstmCertToTSNMIdentities 5 } ::= { snmpTlstmCertToTSNMIdentities 5 }
tlstmCertCommonName OBJECT-IDENTITY snmpTlstmCertCommonName OBJECT-IDENTITY
STATUS current STATUS current
DESCRIPTION "Maps a certificate's CommonName to a tmSecurityName DESCRIPTION "Maps a certificate's CommonName to a tmSecurityName
after converting it to a UTF-8 encoding." after converting it to a UTF-8 encoding."
::= { tlstmCertToTSNMIdentities 6 } ::= { snmpTlstmCertToTSNMIdentities 6 }
-- The snmpTlstmSession Group -- The snmpTlstmSession Group
snmpTlstmSession OBJECT IDENTIFIER ::= { tlstmObjects 1 } snmpTlstmSession OBJECT IDENTIFIER ::= { snmpTlstmObjects 1 }
snmpTlstmSessionOpens OBJECT-TYPE snmpTlstmSessionOpens OBJECT-TYPE
SYNTAX Counter32 SYNTAX Counter32
MAX-ACCESS read-only MAX-ACCESS read-only
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"The number of times an openSession() request has been executed "The number of times an openSession() request has been executed
as an (D)TLS client, regardless of whether it succeeded or as an (D)TLS client, regardless of whether it succeeded or
failed." failed."
::= { snmpTlstmSession 1 } ::= { snmpTlstmSession 1 }
skipping to change at page 38, line 33 skipping to change at page 38, line 33
the session associated with the passed tmStateReference was no the session associated with the passed tmStateReference was no
longer (or was never) available." longer (or was never) available."
::= { snmpTlstmSession 6 } ::= { snmpTlstmSession 6 }
snmpTlstmSessionInvalidClientCertificates OBJECT-TYPE snmpTlstmSessionInvalidClientCertificates OBJECT-TYPE
SYNTAX Counter32 SYNTAX Counter32
MAX-ACCESS read-only MAX-ACCESS read-only
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"The number of times an incoming session was not established "The number of times an incoming session was not established
on an (D)TLS server because the presented client certificate was on an (D)TLS server because the presented client certificate
invalid. Reasons for invalidation include, but are not was invalid. Reasons for invalidation include, but are not
limited to, cryptographic validation failures or lack of a limited to, cryptographic validation failures or lack of a
suitable mapping row in the tlstmCertToTSNTable." suitable mapping row in the snmpTlstmCertToTSNTable."
::= { snmpTlstmSession 7 } ::= { snmpTlstmSession 7 }
snmpTlstmSessionUnknownServerCertificate OBJECT-TYPE snmpTlstmSessionUnknownServerCertificate OBJECT-TYPE
SYNTAX Counter32 SYNTAX Counter32
MAX-ACCESS read-only MAX-ACCESS read-only
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"The number of times an outgoing session was not established "The number of times an outgoing session was not established
on an (D)TLS client because the server certificate presented on an (D)TLS client because the server certificate presented
by a SNMP over (D)TLS server was invalid because no by a SNMP over (D)TLS server was invalid because no
configured fingerprint or CA was acceptable to validate it. configured fingerprint or CA was acceptable to validate it.
This may result because there was no entry in the This may result because there was no entry in the
tlstmAddrTable or because no path could be found to a known snmpTlstmAddrTable or because no path could be found to a
certification authority." known certification authority."
::= { snmpTlstmSession 8 } ::= { snmpTlstmSession 8 }
snmpTlstmSessionInvalidServerCertificates OBJECT-TYPE snmpTlstmSessionInvalidServerCertificates OBJECT-TYPE
SYNTAX Counter32 SYNTAX Counter32
MAX-ACCESS read-only MAX-ACCESS read-only
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"The number of times an outgoing session was not established "The number of times an outgoing session was not established
on an (D)TLS client because the server certificate presented on an (D)TLS client because the server certificate presented
by an SNMP over (D)TLS server could not be validated even if by an SNMP over (D)TLS server could not be validated even if
skipping to change at page 39, line 32 skipping to change at page 39, line 32
SYNTAX Counter32 SYNTAX Counter32
MAX-ACCESS read-only MAX-ACCESS read-only
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"The number of outgoing messages dropped because the "The number of outgoing messages dropped because the
tmStateReference referred to an invalid cache." tmStateReference referred to an invalid cache."
::= { snmpTlstmSession 10 } ::= { snmpTlstmSession 10 }
-- Configuration Objects -- Configuration Objects
tlstmConfig OBJECT IDENTIFIER ::= { tlstmObjects 2 } snmpTlstmConfig OBJECT IDENTIFIER ::= { snmpTlstmObjects 2 }
-- Certificate mapping -- Certificate mapping
tlstmCertificateMapping OBJECT IDENTIFIER ::= { tlstmConfig 1 } snmpTlstmCertificateMapping OBJECT IDENTIFIER ::= { snmpTlstmConfig 1 }
tlstmCertToTSNCount OBJECT-TYPE snmpTlstmCertToTSNCount OBJECT-TYPE
SYNTAX Unsigned32 SYNTAX Gauge32
MAX-ACCESS read-only MAX-ACCESS read-only
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"A count of the number of entries in the tlstmCertToTSNTable" "A count of the number of entries in the
::= { tlstmCertificateMapping 1 } snmpTlstmCertToTSNTable"
::= { snmpTlstmCertificateMapping 1 }
tlstmCertToTSNTableLastChanged OBJECT-TYPE snmpTlstmCertToTSNTableLastChanged OBJECT-TYPE
SYNTAX TimeStamp SYNTAX TimeStamp
MAX-ACCESS read-only MAX-ACCESS read-only
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"The value of sysUpTime.0 when the tlstmCertToTSNTable "The value of sysUpTime.0 when the snmpTlstmCertToTSNTable was
was last modified through any means, or 0 if it has not been last modified through any means, or 0 if it has not been
modified since the command responder was started." modified since the command responder was started."
::= { tlstmCertificateMapping 2 } ::= { snmpTlstmCertificateMapping 2 }
tlstmCertToTSNTable OBJECT-TYPE snmpTlstmCertToTSNTable OBJECT-TYPE
SYNTAX SEQUENCE OF TlstmCertToTSNEntry SYNTAX SEQUENCE OF SnmpTlstmCertToTSNEntry
MAX-ACCESS not-accessible MAX-ACCESS not-accessible
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"A table listing the fingerprints of X.509 certificates known "This table is used by a (D)TLS server to map the (D)TLS
to the entity and the associated method for determining the client's presented X.509 certificate to a tmSecurityName.
SNMPv3 security name from a certificate.
On an incoming (D)TLS/SNMP connection the client's presented On an incoming (D)TLS/SNMP connection the client's presented
certificate must be examined and validated based on an certificate must either be validated based on an established
established trusted path from a CA certificate or self-signed trust anchor, or it must directly match a fingerprint in this
public certificate (e.g. RFC5280). This table provides a table. This table does not provide any mechanisms for
mapping from a validated certificate to a tmSecurityName. configuring the trust anchors; the transfer of any needed
This table does not provide any mechanisms for uploading trusted certificates for path validation is expected to occur
trusted certificates; the transfer of any needed trusted through an out-of-band transfer.
certificates for path validation is expected to occur through
an out-of-band transfer.
Once the authenticity of a certificate has been verified, this Once the certificate has been found acceptable (either by path
table is consulted to determine the appropriate tmSecurityName validation or directly matching a fingerprint in this table),
to identify with the remote connection. This is done by this table is consulted to determine the appropriate
considering each active row from this table in prioritized tmSecurityName to identify with the remote connection. This
order according to its tlstmCertToTSNID value. Each row's is done by considering each active row from this table in
tlstmCertToTSNFingerprint value determines whether the row is a prioritized order according to its snmpTlstmCertToTSNID value.
match for the incoming connection: Each row's snmpTlstmCertToTSNFingerprint value determines
whether the row is a match for the incoming connection:
1) If the row's tlstmCertToTSNFingerprint value identifies 1) If the row's snmpTlstmCertToTSNFingerprint value
the presented certificate then consider the row as a identifies the presented certificate then consider the
successful match. row as a successful match.
2) If the row's tlstmCertToTSNFingerprint value identifies 2) If the row's snmpTlstmCertToTSNFingerprint value
a locally held copy of a trusted CA certificate and identifies a locally held copy of a trusted CA
that CA certificate was used to validate the path to certificate and that CA certificate was used to
the presented certificate then consider the row as a validate the path to the presented certificate then
successful match. consider the row as a successful match.
Once a matching row has been found, the tlstmCertToTSNMapType Once a matching row has been found, the
value can be used to determine how the tmSecurityName to snmpTlstmCertToTSNMapType value can be used to determine how
associate with the session should be determined. See the the tmSecurityName to associate with the session should be
tlstmCertToTSNMapType column's DESCRIPTION for details on determined. See the snmpTlstmCertToTSNMapType column's
determining the tmSecurityName value. If it is impossible to DESCRIPTION for details on determining the tmSecurityName
determine a tmSecurityName from the row's data combined with the value. If it is impossible to determine a tmSecurityName from
data presented in the certificate then additional rows MUST be the row's data combined with the data presented in the
searched looking for another potential match. If a resulting certificate then additional rows MUST be searched looking for
tmSecurityName mapped from a given row is not compatible with another potential match. If a resulting tmSecurityName mapped
the needed requirements of a tmSecurityName (e.g., VACM imposes from a given row is not compatible with the needed
a 32-octet-maximum length and the certificate derived requirements of a tmSecurityName (e.g., VACM imposes a
32-octet-maximum length and the certificate derived
securityName could be longer) then it must be considered an securityName could be longer) then it must be considered an
invalid match and additional rows MUST be searched looking for invalid match and additional rows MUST be searched looking for
another potential match. another potential match.
Missing values of tlstmCertToTSNID are acceptable and Missing values of snmpTlstmCertToTSNID are acceptable and
implementations should continue to the next highest numbered implementations should continue to the next highest numbered
row. E.G., the table may legally contain only two rows with row. E.G., the table may legally contain only two rows with
tlstmCertToTSNID values of 10 and 20. snmpTlstmCertToTSNID values of 10 and 20.
Users are encouraged to make use of certificates with Users are encouraged to make use of certificates with
subjectAltName fields that can be used as tmSecurityNames so subjectAltName fields that can be used as tmSecurityNames so
that a single root CA certificate can allow all child that a single root CA certificate can allow all child
certificate's subjectAltName to map directly to a certificate's subjectAltName to map directly to a
tmSecurityName via a 1:1 transformation. However, this table tmSecurityName via a 1:1 transformation. However, this table
is flexible to allow for situations where existing deployed is flexible to allow for situations where existing deployed
certificate infrastructures do not provide adequate certificate infrastructures do not provide adequate
subjectAltName values for use as tmSecurityNames. subjectAltName values for use as tmSecurityNames.
Certificates may also be mapped to tmSecurityNames using the Certificates may also be mapped to tmSecurityNames using the
CommonName portion of the Subject field. However, the usage CommonName portion of the Subject field. However, the usage
of the CommonName field is deprecated and thus this usage is of the CommonName field is deprecated and thus this usage is
NOT RECOMMENDED. Direct mapping from each individual NOT RECOMMENDED. Direct mapping from each individual
certificate fingerprint to a tmSecurityName is also possible certificate fingerprint to a tmSecurityName is also possible
but requires one entry in the table per tmSecurityName and but requires one entry in the table per tmSecurityName and
requires more management operations to completely configure a requires more management operations to completely configure a
device." device."
::= { tlstmCertificateMapping 3 } ::= { snmpTlstmCertificateMapping 3 }
tlstmCertToTSNEntry OBJECT-TYPE snmpTlstmCertToTSNEntry OBJECT-TYPE
SYNTAX TlstmCertToTSNEntry SYNTAX SnmpTlstmCertToTSNEntry
MAX-ACCESS not-accessible MAX-ACCESS not-accessible
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"A row in the tlstmCertToTSNTable that specifies a mapping for "A row in the snmpTlstmCertToTSNTable that specifies a mapping
an incoming (D)TLS certificate to a tmSecurityName to use for a for an incoming (D)TLS certificate to a tmSecurityName to use
connection." for a connection."
INDEX { tlstmCertToTSNID } INDEX { snmpTlstmCertToTSNID }
::= { tlstmCertToTSNTable 1 } ::= { snmpTlstmCertToTSNTable 1 }
TlstmCertToTSNEntry ::= SEQUENCE { SnmpTlstmCertToTSNEntry ::= SEQUENCE {
tlstmCertToTSNID Unsigned32, snmpTlstmCertToTSNID Unsigned32,
tlstmCertToTSNFingerprint Fingerprint, snmpTlstmCertToTSNFingerprint Fingerprint,
tlstmCertToTSNMapType AutonomousType, snmpTlstmCertToTSNMapType AutonomousType,
tlstmCertToTSNData OCTET STRING, snmpTlstmCertToTSNData OCTET STRING,
tlstmCertToTSNStorageType StorageType, snmpTlstmCertToTSNStorageType StorageType,
tlstmCertToTSNRowStatus RowStatus snmpTlstmCertToTSNRowStatus RowStatus
} }
tlstmCertToTSNID OBJECT-TYPE snmpTlstmCertToTSNID OBJECT-TYPE
SYNTAX Unsigned32 (1..4294967295) SYNTAX Unsigned32 (1..4294967295)
MAX-ACCESS not-accessible MAX-ACCESS not-accessible
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"A unique, prioritized index for the given entry. Lower "A unique, prioritized index for the given entry. Lower
numbers indicate a higher priority." numbers indicate a higher priority."
::= { tlstmCertToTSNEntry 1 } ::= { snmpTlstmCertToTSNEntry 1 }
tlstmCertToTSNFingerprint OBJECT-TYPE snmpTlstmCertToTSNFingerprint OBJECT-TYPE
SYNTAX Fingerprint (SIZE(1..255)) SYNTAX Fingerprint (SIZE(1..255))
MAX-ACCESS read-create MAX-ACCESS read-create
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"A cryptographic hash of a X.509 certificate. The results of "A cryptographic hash of a X.509 certificate. The results of
a successful matching fingerprint to either the trusted CA in a successful matching fingerprint to either the trusted CA in
the certificate validation path or to the certificate itself the certificate validation path or to the certificate itself
is dictated by the tlstmCertToTSNMapType column." is dictated by the snmpTlstmCertToTSNMapType column."
::= { tlstmCertToTSNEntry 2 } ::= { snmpTlstmCertToTSNEntry 2 }
tlstmCertToTSNMapType OBJECT-TYPE snmpTlstmCertToTSNMapType OBJECT-TYPE
SYNTAX AutonomousType SYNTAX AutonomousType
MAX-ACCESS read-create MAX-ACCESS read-create
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"Specifies the mapping type for deriving a tmSecurityName from a "Specifies the mapping type for deriving a tmSecurityName from
certificate. Details for mapping of a particular type SHALL a certificate. Details for mapping of a particular type SHALL
be specified in the DESCRIPTION clause of the OBJECT-IDENTITY be specified in the DESCRIPTION clause of the OBJECT-IDENTITY
that describes the mapping. If a mapping succeeds it will that describes the mapping. If a mapping succeeds it will
return a tmSecurityName for use by the TLSTM model and return a tmSecurityName for use by the TLSTM model and
processing stops. processing stops.
If the resulting mapped value is not compatible with the If the resulting mapped value is not compatible with the
needed requirements of a tmSecurityName (e.g., VACM imposes a needed requirements of a tmSecurityName (e.g., VACM imposes a
32-octet-maximum length and the certificate derived 32-octet-maximum length and the certificate derived
securityName could be longer) then future rows MUST be securityName could be longer) then future rows MUST be
searched for additional tlstmCertToTSNFingerprint matches to searched for additional snmpTlstmCertToTSNFingerprint matches
look for a mapping that succeeds." to look for a mapping that succeeds."
DEFVAL { tlstmCertSpecified } DEFVAL { snmpTlstmCertSpecified }
::= { tlstmCertToTSNEntry 3 } ::= { snmpTlstmCertToTSNEntry 3 }
tlstmCertToTSNData OBJECT-TYPE snmpTlstmCertToTSNData OBJECT-TYPE
SYNTAX OCTET STRING (SIZE(0..1024)) SYNTAX OCTET STRING (SIZE(0..1024))
MAX-ACCESS read-create MAX-ACCESS read-create
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"Auxiliary data used as optional configuration information for "Auxiliary data used as optional configuration information for
a given mapping specified by the tlstmCertToTSNMapType column. a given mapping specified by the snmpTlstmCertToTSNMapType
Only some mapping systems will make use of this column. The column. Only some mapping systems will make use of this
value in this column MUST be ignored for any mapping type that column. The value in this column MUST be ignored for any
does not require data present in this column." mapping type that does not require data present in this
column."
DEFVAL { "" } DEFVAL { "" }
::= { tlstmCertToTSNEntry 4 } ::= { snmpTlstmCertToTSNEntry 4 }
tlstmCertToTSNStorageType OBJECT-TYPE snmpTlstmCertToTSNStorageType OBJECT-TYPE
SYNTAX StorageType SYNTAX StorageType
MAX-ACCESS read-create MAX-ACCESS read-create
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"The storage type for this conceptual row. Conceptual rows "The storage type for this conceptual row. Conceptual rows
having the value 'permanent' need not allow write-access to having the value 'permanent' need not allow write-access to
any columnar objects in the row." any columnar objects in the row."
DEFVAL { nonVolatile } DEFVAL { nonVolatile }
::= { tlstmCertToTSNEntry 5 } ::= { snmpTlstmCertToTSNEntry 5 }
tlstmCertToTSNRowStatus OBJECT-TYPE snmpTlstmCertToTSNRowStatus OBJECT-TYPE
SYNTAX RowStatus SYNTAX RowStatus
MAX-ACCESS read-create MAX-ACCESS read-create
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"The status of this conceptual row. This object may be used "The status of this conceptual row. This object may be used
to create or remove rows from this table. to create or remove rows from this table.
To create a row in this table, an administrator must set this To create a row in this table, an administrator must set this
object to either createAndGo(4) or createAndWait(5). object to either createAndGo(4) or createAndWait(5).
Until instances of all corresponding columns are appropriately Until instances of all corresponding columns are appropriately
configured, the value of the corresponding instance of the configured, the value of the corresponding instance of the
tlstmParamsRowStatus column is 'notReady'. snmpTlstmParamsRowStatus column is 'notReady'.
In particular, a newly created row cannot be made active until In particular, a newly created row cannot be made active until
the corresponding tlstmCertToTSNFingerprint, the corresponding snmpTlstmCertToTSNFingerprint,
tlstmCertToTSNMapType, and tlstmCertToTSNData columns have been snmpTlstmCertToTSNMapType, and snmpTlstmCertToTSNData columns
set. have been set.
The following objects may not be modified while the The following objects may not be modified while the
value of this object is active(1): value of this object is active(1):
- tlstmCertToTSNFingerprint - snmpTlstmCertToTSNFingerprint
- tlstmCertToTSNMapType - snmpTlstmCertToTSNMapType
- tlstmCertToTSNData - snmpTlstmCertToTSNData
An attempt to set these objects while the value of An attempt to set these objects while the value of
tlstmParamsRowStatus is active(1) will result in snmpTlstmParamsRowStatus is active(1) will result in
an inconsistentValue error." an inconsistentValue error."
::= { tlstmCertToTSNEntry 6 }
::= { snmpTlstmCertToTSNEntry 6 }
-- Maps tmSecurityNames to certificates for use by the SNMP-TARGET-MIB -- Maps tmSecurityNames to certificates for use by the SNMP-TARGET-MIB
tlstmParamsCount OBJECT-TYPE snmpTlstmParamsCount OBJECT-TYPE
SYNTAX Unsigned32 SYNTAX Gauge32
MAX-ACCESS read-only MAX-ACCESS read-only
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"A count of the number of entries in the tlstmParamsTable" "A count of the number of entries in the snmpTlstmParamsTable"
::= { tlstmCertificateMapping 4 } ::= { snmpTlstmCertificateMapping 4 }
tlstmParamsTableLastChanged OBJECT-TYPE snmpTlstmParamsTableLastChanged OBJECT-TYPE
SYNTAX TimeStamp SYNTAX TimeStamp
MAX-ACCESS read-only MAX-ACCESS read-only
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"The value of sysUpTime.0 when the tlstmParamsTable "The value of sysUpTime.0 when the snmpTlstmParamsTable
was last modified through any means, or 0 if it has not been was last modified through any means, or 0 if it has not been
modified since the command responder was started." modified since the command responder was started."
::= { tlstmCertificateMapping 5 } ::= { snmpTlstmCertificateMapping 5 }
tlstmParamsTable OBJECT-TYPE snmpTlstmParamsTable OBJECT-TYPE
SYNTAX SEQUENCE OF TlstmParamsEntry SYNTAX SEQUENCE OF SnmpTlstmParamsEntry
MAX-ACCESS not-accessible MAX-ACCESS not-accessible
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"This table is used by a (D)TLS client when a (D)TLS "This table is used by a (D)TLS client when a (D)TLS
connection is being set up using an entry in the connection is being set up using an entry in the
SNMP-TARGET-MIB. It extends the SNMP-TARGET-MIB's SNMP-TARGET-MIB. It extends the SNMP-TARGET-MIB's
snmpTargetParamsTable with a fingerprint of a certificate to snmpTargetParamsTable with a fingerprint of a certificate to
use when establishing such a (D)TLS connection." use when establishing such a (D)TLS connection."
::= { tlstmCertificateMapping 6 } ::= { snmpTlstmCertificateMapping 6 }
tlstmParamsEntry OBJECT-TYPE snmpTlstmParamsEntry OBJECT-TYPE
SYNTAX TlstmParamsEntry SYNTAX SnmpTlstmParamsEntry
MAX-ACCESS not-accessible MAX-ACCESS not-accessible
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"A conceptual row containing a fingerprint hash of a locally "A conceptual row containing a fingerprint hash of a locally
held certificate for a given snmpTargetParamsEntry. The held certificate for a given snmpTargetParamsEntry. The
values in this row should be ignored if the connection that values in this row should be ignored if the connection that
needs to be established, as indicated by the SNMP-TARGET-MIB needs to be established, as indicated by the SNMP-TARGET-MIB
infrastructure, is not a certificate and (D)TLS based infrastructure, is not a certificate and (D)TLS based
connection. The connection SHOULD NOT be established if the connection. The connection SHOULD NOT be established if the
certificate fingerprint stored in this entry does not point to certificate fingerprint stored in this entry does not point to
a valid locally held certificate or if it points to an unusable a valid locally held certificate or if it points to an
certificate (such as might happen when the certificate's unusable certificate (such as might happen when the
expiration date has been reached)." certificate's expiration date has been reached)."
INDEX { IMPLIED snmpTargetParamsName } INDEX { IMPLIED snmpTargetParamsName }
::= { tlstmParamsTable 1 } ::= { snmpTlstmParamsTable 1 }
TlstmParamsEntry ::= SEQUENCE { SnmpTlstmParamsEntry ::= SEQUENCE {
tlstmParamsClientFingerprint Fingerprint, snmpTlstmParamsClientFingerprint Fingerprint,
tlstmParamsStorageType StorageType, snmpTlstmParamsStorageType StorageType,
tlstmParamsRowStatus RowStatus snmpTlstmParamsRowStatus RowStatus
} }
tlstmParamsClientFingerprint OBJECT-TYPE snmpTlstmParamsClientFingerprint OBJECT-TYPE
SYNTAX Fingerprint SYNTAX Fingerprint
MAX-ACCESS read-create MAX-ACCESS read-create
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"A cryptographic hash of a X.509 certificate. This object "A cryptographic hash of a X.509 certificate. This object
should store the hash of a locally held X.509 certificate (and should store the hash of a locally held X.509 certificate that
the corresponding private key) that should be used when should be used (along with the corresponding private key) when
initiating a (D)TLS connection as a (D)TLS client." initiating a (D)TLS connection as a (D)TLS client."
::= { tlstmParamsEntry 1 } ::= { snmpTlstmParamsEntry 1 }
tlstmParamsStorageType OBJECT-TYPE snmpTlstmParamsStorageType OBJECT-TYPE
SYNTAX StorageType SYNTAX StorageType
MAX-ACCESS read-create MAX-ACCESS read-create
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"The storage type for this conceptual row. Conceptual rows "The storage type for this conceptual row. Conceptual rows
having the value 'permanent' need not allow write-access to having the value 'permanent' need not allow write-access to
any columnar objects in the row." any columnar objects in the row."
DEFVAL { nonVolatile } DEFVAL { nonVolatile }
::= { tlstmParamsEntry 2 } ::= { snmpTlstmParamsEntry 2 }
tlstmParamsRowStatus OBJECT-TYPE snmpTlstmParamsRowStatus OBJECT-TYPE
SYNTAX RowStatus SYNTAX RowStatus
MAX-ACCESS read-create MAX-ACCESS read-create
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"The status of this conceptual row. This object may be used "The status of this conceptual row. This object may be used
to create or remove rows from this table. to create or remove rows from this table.
To create a row in this table, an administrator must set this To create a row in this table, an administrator must set this
object to either createAndGo(4) or createAndWait(5). object to either createAndGo(4) or createAndWait(5).
Until instances of all corresponding columns are appropriately Until instances of all corresponding columns are appropriately
configured, the value of the corresponding instance of the configured, the value of the corresponding instance of the
tlstmParamsRowStatus column is 'notReady'. snmpTlstmParamsRowStatus column is 'notReady'.
In particular, a newly created row cannot be made active until In particular, a newly created row cannot be made active until
the corresponding tlstmParamsClientFingerprint column has the corresponding snmpTlstmParamsClientFingerprint column has
been set. been set.
The tlstmParamsClientFingerprint object may not be modified The snmpTlstmParamsClientFingerprint object may not be modified
while the value of this object is active(1). while the value of this object is active(1).
An attempt to set these objects while the value of An attempt to set these objects while the value of
tlstmParamsRowStatus is active(1) will result in snmpTlstmParamsRowStatus is active(1) will result in
an inconsistentValue error." an inconsistentValue error."
::= { tlstmParamsEntry 3 } ::= { snmpTlstmParamsEntry 3 }
tlstmAddrCount OBJECT-TYPE snmpTlstmAddrCount OBJECT-TYPE
SYNTAX Unsigned32 SYNTAX Gauge32
MAX-ACCESS read-only MAX-ACCESS read-only
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"A count of the number of entries in the tlstmAddrTable" "A count of the number of entries in the snmpTlstmAddrTable"
::= { tlstmCertificateMapping 7 } ::= { snmpTlstmCertificateMapping 7 }
tlstmAddrTableLastChanged OBJECT-TYPE snmpTlstmAddrTableLastChanged OBJECT-TYPE
SYNTAX TimeStamp SYNTAX TimeStamp
MAX-ACCESS read-only MAX-ACCESS read-only
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"The value of sysUpTime.0 when the tlstmAddrTable "The value of sysUpTime.0 when the snmpTlstmAddrTable
was last modified through any means, or 0 if it has not been was last modified through any means, or 0 if it has not been
modified since the command responder was started." modified since the command responder was started."
::= { tlstmCertificateMapping 8 } ::= { snmpTlstmCertificateMapping 8 }
tlstmAddrTable OBJECT-TYPE snmpTlstmAddrTable OBJECT-TYPE
SYNTAX SEQUENCE OF TlstmAddrEntry SYNTAX SEQUENCE OF SnmpTlstmAddrEntry
MAX-ACCESS not-accessible MAX-ACCESS not-accessible
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"This table is used by a (D)TLS client when a (D)TLS "This table is used by a (D)TLS client when a (D)TLS
connection is being set up using an entry in the connection is being set up using an entry in the
SNMP-TARGET-MIB. It extends the SNMP-TARGET-MIB's SNMP-TARGET-MIB. It extends the SNMP-TARGET-MIB's
snmpTargetAddrTable so that the client can verify that the snmpTargetAddrTable so that the client can verify that the
correct server has been reached. This verification can use correct server has been reached. This verification can use
either a certificate fingerprint, or an identity either a certificate fingerprint, or an identity
authenticated via certification path validation. authenticated via certification path validation.
If there is an active row in this table corresponding to the If there is an active row in this table corresponding to the
entry in the SNMP-TARGET-MIB that was used to establish the entry in the SNMP-TARGET-MIB that was used to establish the
connection, and the row's tlstmAddrServerFingerprint column connection, and the row's snmpTlstmAddrServerFingerprint
has non-empty value, then the server's presented certificate column has non-empty value, then the server's presented
is compared with the tlstmAddrServerFingerprint value (and certificate is compared with the
the tlstmAddrServerIdentity column is ignored). If the snmpTlstmAddrServerFingerprint value (and the
snmpTlstmAddrServerIdentity column is ignored). If the
fingerprint matches, the verification has succeeded. If the fingerprint matches, the verification has succeeded. If the
fingerprint does not match then the connection MUST be fingerprint does not match then the connection MUST be
closed. closed.
If the server's presented certificate has passed If the server's presented certificate has passed
certification path validation [RFC5280] to a configured certification path validation [RFC5280] to a configured
trust anchor, and an active row exists with a zero-length trust anchor, and an active row exists with a zero-length
tlstmAddrServerFingerprint value, then the snmpTlstmAddrServerFingerprint value, then the
tlstmAddrServerIdentity column contains the expected host snmpTlstmAddrServerIdentity column contains the expected
name. This expected host name is then compared against the host name. This expected host name is then compared against
server's certificate as follows: the server's certificate as follows:
- Implementations MUST support matching the expected host - Implementations MUST support matching the expected host
name against a dNSName in the subjectAltName extension field name against a dNSName in the subjectAltName extension
and SHOULD support checking the name against the common name field and SHOULD support checking the name against the
portion of the subject distinguished name. common name portion of the subject distinguished name.
- The '*' (ASCII 0x2a) wildcard character is allowed in the - The '*' (ASCII 0x2a) wildcard character is allowed in the
dNSName of the subjectAltName extension (and in common name, dNSName of the subjectAltName extension (and in common
if used to store the host name), but only as the left-most name, if used to store the host name), but only as the
(least significant) DNS label in that value. This wildcard left-most (least significant) DNS label in that value.
matches any left-most DNS label in the server name. That This wildcard matches any left-most DNS label in the
is, the subject *.example.com matches the server names server name. That is, the subject *.example.com matches
a.example.com and b.example.com, but does not match the server names a.example.com and b.example.com, but does
example.com or a.b.example.com. Implementations MUST not match example.com or a.b.example.com. Implementations
support wildcards in certificates as specified above, but MUST support wildcards in certificates as specified above,
MAY provide a configuration option to disable them. but MAY provide a configuration option to disable them.
- If the locally configured name is an internationalized - If the locally configured name is an internationalized
domain name, conforming implementations MUST convert it to domain name, conforming implementations MUST convert it to
the ASCII Compatible Encoding (ACE) format for performing the ASCII Compatible Encoding (ACE) format for performing
comparisons, as specified in Section 7 of [RFC5280]. comparisons, as specified in Section 7 of [RFC5280].
If the expected host name fails these conditions then the If the expected host name fails these conditions then the
connection MUST be closed. connection MUST be closed.
If there is no row in this table corresponding to the entry If there is no row in this table corresponding to the entry
in the SNMP-TARGET-MIB and the server can be authorized by in the SNMP-TARGET-MIB and the server can be authorized by
another, implementation dependent means, then the connection another, implementation dependent means, then the connection
MAY still proceed." MAY still proceed."
::= { tlstmCertificateMapping 9 } ::= { snmpTlstmCertificateMapping 9 }
tlstmAddrEntry OBJECT-TYPE snmpTlstmAddrEntry OBJECT-TYPE
SYNTAX TlstmAddrEntry SYNTAX SnmpTlstmAddrEntry
MAX-ACCESS not-accessible MAX-ACCESS not-accessible
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"A conceptual row containing a copy of a certificate's "A conceptual row containing a copy of a certificate's
fingerprint for a given snmpTargetAddrEntry. The values in fingerprint for a given snmpTargetAddrEntry. The values in
this row should be ignored if the connection that needs to be this row should be ignored if the connection that needs to be
established, as indicated by the SNMP-TARGET-MIB established, as indicated by the SNMP-TARGET-MIB
infrastructure, is not a (D)TLS based connection. If an infrastructure, is not a (D)TLS based connection. If an
tlstmAddrEntry exists for a given snmpTargetAddrEntry then the snmpTlstmAddrEntry exists for a given snmpTargetAddrEntry then
presented server certificate MUST match or the connection MUST the presented server certificate MUST match or the connection
NOT be established. If a row in this table does not exist to MUST NOT be established. If a row in this table does not
match a snmpTargetAddrEntry row then the connection SHOULD exist to match a snmpTargetAddrEntry row then the connection
still proceed if some other certificate validation path SHOULD still proceed if some other certificate validation path
algorithm (e.g. RFC5280) can be used." algorithm (e.g. RFC5280) can be used."
INDEX { IMPLIED snmpTargetAddrName } INDEX { IMPLIED snmpTargetAddrName }
::= { tlstmAddrTable 1 } ::= { snmpTlstmAddrTable 1 }
TlstmAddrEntry ::= SEQUENCE { SnmpTlstmAddrEntry ::= SEQUENCE {
tlstmAddrServerFingerprint Fingerprint, snmpTlstmAddrServerFingerprint Fingerprint,
tlstmAddrServerIdentity SnmpAdminString, snmpTlstmAddrServerIdentity SnmpAdminString,
tlstmAddrStorageType StorageType, snmpTlstmAddrStorageType StorageType,
tlstmAddrRowStatus RowStatus snmpTlstmAddrRowStatus RowStatus
} }
tlstmAddrServerFingerprint OBJECT-TYPE snmpTlstmAddrServerFingerprint OBJECT-TYPE
SYNTAX Fingerprint SYNTAX Fingerprint
MAX-ACCESS read-create MAX-ACCESS read-create
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"A cryptographic hash of a public X.509 certificate. This "A cryptographic hash of a public X.509 certificate. This
object should store the hash of the public X.509 certificate object should store the hash of the public X.509 certificate
that the remote server should present during the (D)TLS that the remote server should present during the (D)TLS
connection setup. The fingerprint of the presented connection setup. The fingerprint of the presented
certificate and this hash value MUST match exactly or the certificate and this hash value MUST match exactly or the
connection MUST NOT be established." connection MUST NOT be established."
DEFVAL { "" } DEFVAL { "" }
::= { tlstmAddrEntry 1 } ::= { snmpTlstmAddrEntry 1 }
tlstmAddrServerIdentity OBJECT-TYPE snmpTlstmAddrServerIdentity OBJECT-TYPE
SYNTAX SnmpAdminString SYNTAX SnmpAdminString
MAX-ACCESS read-create MAX-ACCESS read-create
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"The reference identity to check against the identity "The reference identity to check against the identity
presented by the remote system." presented by the remote system."
DEFVAL { "" } DEFVAL { "" }
::= { tlstmAddrEntry 2 } ::= { snmpTlstmAddrEntry 2 }
tlstmAddrStorageType OBJECT-TYPE snmpTlstmAddrStorageType OBJECT-TYPE
SYNTAX StorageType SYNTAX StorageType
MAX-ACCESS read-create MAX-ACCESS read-create
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"The storage type for this conceptual row. Conceptual rows "The storage type for this conceptual row. Conceptual rows
having the value 'permanent' need not allow write-access to having the value 'permanent' need not allow write-access to
any columnar objects in the row." any columnar objects in the row."
DEFVAL { nonVolatile } DEFVAL { nonVolatile }
::= { tlstmAddrEntry 3 } ::= { snmpTlstmAddrEntry 3 }
tlstmAddrRowStatus OBJECT-TYPE snmpTlstmAddrRowStatus OBJECT-TYPE
SYNTAX RowStatus SYNTAX RowStatus
MAX-ACCESS read-create MAX-ACCESS read-create
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"The status of this conceptual row. This object may be used "The status of this conceptual row. This object may be used
to create or remove rows from this table. to create or remove rows from this table.
To create a row in this table, an administrator must set this To create a row in this table, an administrator must set this
object to either createAndGo(4) or createAndWait(5). object to either createAndGo(4) or createAndWait(5).
Until instances of all corresponding columns are Until instances of all corresponding columns are
appropriately configured, the value of the appropriately configured, the value of the
corresponding instance of the tlstmAddrRowStatus corresponding instance of the snmpTlstmAddrRowStatus
column is 'notReady'. column is 'notReady'.
In particular, a newly created row cannot be made active until In particular, a newly created row cannot be made active until
the corresponding tlstmAddrServerFingerprint column has been the corresponding snmpTlstmAddrServerFingerprint column has been
set. set.
Rows MUST NOT be active if the tlstmAddrServerFingerprint Rows MUST NOT be active if the snmpTlstmAddrServerFingerprint
column is blank and the tlstmAddrServerIdentity is set to '*' column is blank and the snmpTlstmAddrServerIdentity is set to
since this would insecurely accept any presented certificate. '*' since this would insecurely accept any presented
certificate.
The tlstmAddrServerFingerprint object may not be modified The snmpTlstmAddrServerFingerprint object may not be modified
while the value of this object is active(1). while the value of this object is active(1).
An attempt to set these objects while the value of An attempt to set these objects while the value of
tlstmAddrRowStatus is active(1) will result in snmpTlstmAddrRowStatus is active(1) will result in
an inconsistentValue error." an inconsistentValue error."
::= { tlstmAddrEntry 4 } ::= { snmpTlstmAddrEntry 4 }
-- ************************************************ -- ************************************************
-- snmpTlstmNotifications - Notifications Information
-- ************************************************ -- ************************************************
snmpTlstmServerCertificateUnknown NOTIFICATION-TYPE
tlstmServerCertificateUnknown NOTIFICATION-TYPE
OBJECTS { snmpTlstmSessionUnknownServerCertificate } OBJECTS { snmpTlstmSessionUnknownServerCertificate }
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"Notification that the server certificate presented by a SNMP "Notification that the server certificate presented by a SNMP
over (D)TLS server was invalid because no configured over (D)TLS server was invalid because no configured
fingerprint or CA was acceptable to validate it. This may fingerprint or CA was acceptable to validate it. This may be
be because there was no entry in the tlstmAddrTable or because there was no entry in the snmpTlstmAddrTable or
because no path could be found to known certificate because no path could be found to known certificate
authority. authority.
To avoid notification loops, this notification MUST NOT be To avoid notification loops, this notification MUST NOT be
sent to servers that themselves have triggered the sent to servers that themselves have triggered the
notification." notification."
::= { tlstmNotifications 1 } ::= { snmpTlstmNotifications 1 }
tlstmServerInvalidCertificate NOTIFICATION-TYPE snmpTlstmServerInvalidCertificate NOTIFICATION-TYPE
OBJECTS { tlstmAddrServerFingerprint, OBJECTS { snmpTlstmAddrServerFingerprint,
snmpTlstmSessionInvalidServerCertificates} snmpTlstmSessionInvalidServerCertificates}
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"Notification that the server certificate presented by an SNMP "Notification that the server certificate presented by an SNMP
over (D)TLS server could not be validated even if the over (D)TLS server could not be validated even if the
fingerprint or expected validation path was known. I.E., a fingerprint or expected validation path was known. I.E., a
cryptographic validation occurred during certificate cryptographic validation occurred during certificate
validation processing. validation processing.
To avoid notification loops, this notification MUST NOT be To avoid notification loops, this notification MUST NOT be
sent to servers that themselves have triggered the sent to servers that themselves have triggered the
notification." notification."
::= { tlstmNotifications 2 } ::= { snmpTlstmNotifications 2 }
-- ************************************************ -- ************************************************
-- snmpTlstmCompliances - Conformance Information
-- ************************************************ -- ************************************************
tlstmCompliances OBJECT IDENTIFIER ::= { tlstmConformance 1 } snmpTlstmCompliances OBJECT IDENTIFIER ::= { snmpTlstmConformance 1 }
tlstmGroups OBJECT IDENTIFIER ::= { tlstmConformance 2 } snmpTlstmGroups OBJECT IDENTIFIER ::= { snmpTlstmConformance 2 }
-- ************************************************ -- ************************************************
-- Compliance statements -- Compliance statements
-- ************************************************ -- ************************************************
tlstmCompliance MODULE-COMPLIANCE snmpTlstmCompliance MODULE-COMPLIANCE
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"The compliance statement for SNMP engines that support the "The compliance statement for SNMP engines that support the
TLSTM-MIB" SNMP-TLS-TM-MIB"
MODULE MODULE
MANDATORY-GROUPS { tlstmStatsGroup, MANDATORY-GROUPS { snmpTlstmStatsGroup,
tlstmIncomingGroup, snmpTlstmIncomingGroup,
tlstmOutgoingGroup, snmpTlstmOutgoingGroup,
tlstmNotificationGroup } snmpTlstmNotificationGroup }
::= { tlstmCompliances 1 } ::= { snmpTlstmCompliances 1 }
-- ************************************************ -- ************************************************
-- Units of conformance -- Units of conformance
-- ************************************************ -- ************************************************
tlstmStatsGroup OBJECT-GROUP snmpTlstmStatsGroup OBJECT-GROUP
OBJECTS { OBJECTS {
snmpTlstmSessionOpens, snmpTlstmSessionOpens,
snmpTlstmSessionClientCloses, snmpTlstmSessionClientCloses,
snmpTlstmSessionOpenErrors, snmpTlstmSessionOpenErrors,
snmpTlstmSessionAccepts, snmpTlstmSessionAccepts,
snmpTlstmSessionServerCloses, snmpTlstmSessionServerCloses,
snmpTlstmSessionNoSessions, snmpTlstmSessionNoSessions,
snmpTlstmSessionInvalidClientCertificates, snmpTlstmSessionInvalidClientCertificates,
snmpTlstmSessionUnknownServerCertificate, snmpTlstmSessionUnknownServerCertificate,
snmpTlstmSessionInvalidServerCertificates, snmpTlstmSessionInvalidServerCertificates,
snmpTlstmSessionInvalidCaches snmpTlstmSessionInvalidCaches
} }
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"A collection of objects for maintaining "A collection of objects for maintaining
statistical information of an SNMP engine which statistical information of an SNMP engine which
implements the SNMP TLS Transport Model." implements the SNMP TLS Transport Model."
::= { tlstmGroups 1 } ::= { snmpTlstmGroups 1 }
tlstmIncomingGroup OBJECT-GROUP snmpTlstmIncomingGroup OBJECT-GROUP
OBJECTS { OBJECTS {
tlstmCertToTSNCount, snmpTlstmCertToTSNCount,
tlstmCertToTSNTableLastChanged, snmpTlstmCertToTSNTableLastChanged,
tlstmCertToTSNFingerprint, snmpTlstmCertToTSNFingerprint,
tlstmCertToTSNMapType, snmpTlstmCertToTSNMapType,
tlstmCertToTSNData, snmpTlstmCertToTSNData,
tlstmCertToTSNStorageType, snmpTlstmCertToTSNStorageType,
tlstmCertToTSNRowStatus snmpTlstmCertToTSNRowStatus
} }
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"A collection of objects for maintaining "A collection of objects for maintaining
incoming connection certificate mappings to incoming connection certificate mappings to
tmSecurityNames of an SNMP engine which implements the tmSecurityNames of an SNMP engine which implements the
SNMP TLS Transport Model." SNMP TLS Transport Model."
::= { tlstmGroups 2 } ::= { snmpTlstmGroups 2 }
tlstmOutgoingGroup OBJECT-GROUP snmpTlstmOutgoingGroup OBJECT-GROUP
OBJECTS { OBJECTS {
tlstmParamsCount, snmpTlstmParamsCount,
tlstmParamsTableLastChanged, snmpTlstmParamsTableLastChanged,
tlstmParamsClientFingerprint, snmpTlstmParamsClientFingerprint,
tlstmParamsStorageType, snmpTlstmParamsStorageType,
tlstmParamsRowStatus, snmpTlstmParamsRowStatus,
tlstmAddrCount, snmpTlstmAddrCount,
tlstmAddrTableLastChanged, snmpTlstmAddrTableLastChanged,
tlstmAddrServerFingerprint, snmpTlstmAddrServerFingerprint,
tlstmAddrServerIdentity, snmpTlstmAddrServerIdentity,
tlstmAddrStorageType, snmpTlstmAddrStorageType,
tlstmAddrRowStatus snmpTlstmAddrRowStatus
} }
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"A collection of objects for maintaining "A collection of objects for maintaining
outgoing connection certificates to use when opening outgoing connection certificates to use when opening
connections as a result of SNMP-TARGET-MIB settings." connections as a result of SNMP-TARGET-MIB settings."
::= { tlstmGroups 3 } ::= { snmpTlstmGroups 3 }
tlstmNotificationGroup NOTIFICATION-GROUP snmpTlstmNotificationGroup NOTIFICATION-GROUP
NOTIFICATIONS { NOTIFICATIONS {
tlstmServerCertificateUnknown, snmpTlstmServerCertificateUnknown,
tlstmServerInvalidCertificate snmpTlstmServerInvalidCertificate
} }
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"Notifications" "Notifications"
::= { tlstmGroups 4 } ::= { snmpTlstmGroups 4 }
END END
8. Operational Considerations 8. Operational Considerations
This section discusses various operational aspects of deploying This section discusses various operational aspects of deploying
TLSTM. TLSTM.
8.1. Sessions 8.1. Sessions
skipping to change at page 54, line 9 skipping to change at page 54, line 12
generators to discover a suitable default contextEngineID. generators to discover a suitable default contextEngineID.
Implementations should consider offering another engineID discovery Implementations should consider offering another engineID discovery
mechanism to continue providing Command Generators with a suitable mechanism to continue providing Command Generators with a suitable
contextEngineID mechanism. A recommended discovery solution is contextEngineID mechanism. A recommended discovery solution is
documented in [RFC5343]. documented in [RFC5343].
8.4. Transport Considerations 8.4. Transport Considerations
This document defines how SNMP messages can be transmitted over the This document defines how SNMP messages can be transmitted over the
TLS and DTLS based protocols. Each of these protocols are TLS and DTLS based protocols. Each of these protocols are
additionally based on other transports (TCP and UDP). These three additionally based on other transports (TCP and UDP). These two base
protocols also have operational considerations that must be taken protocols also have operational considerations that must be taken
into consideration when selecting a (D)TLS based protocol to use such into consideration when selecting a (D)TLS based protocol to use such
as its performance in degraded or limited networks. It is beyond the as its performance in degraded or limited networks. It is beyond the
scope of this document to summarize the characteristics of these scope of this document to summarize the characteristics of these
transport mechanisms. Please refer to the base protocol documents transport mechanisms. Please refer to the base protocol documents
for details on messaging considerations with respect to MTU size, for details on messaging considerations with respect to MTU size,
fragmentation, performance in lossy-networks, etc. fragmentation, performance in lossy-networks, etc.
9. Security Considerations 9. Security Considerations
This document describes a transport model that permits SNMP to This document describes a transport model that permits SNMP to
utilize (D)TLS security services. The security threats and how the utilize (D)TLS security services. The security threats and how the
(D)TLS transport model mitigates these threats are covered in detail (D)TLS transport model mitigates these threats are covered in detail
throughout this document. Security considerations for DTLS are throughout this document. Security considerations for DTLS are
covered in [RFC4347] and security considerations for TLS are covered in [RFC4347] and security considerations for TLS are
described in Section 11 and Appendices D, E, and F of TLS 1.2 described in Section 11 and Appendices D, E, and F of TLS 1.2
[RFC5246]. When run over UDP, DTLS is more vulnerable to denial of [RFC5246]. When run over a connectionless transport such as UDP,
service attacks from spoofed IP addresses; see Section 4.2 for DTLS is more vulnerable to denial of service attacks from spoofed IP
details how the cookie exchange is used to address this issue. addresses; see Section 4.2 for details how the cookie exchange is
used to address this issue.
9.1. Certificates, Authentication, and Authorization 9.1. Certificates, Authentication, and Authorization
Implementations are responsible for providing a security certificate Implementations are responsible for providing a security certificate
installation and configuration mechanism. Implementations SHOULD installation and configuration mechanism. Implementations SHOULD
support certificate revocation lists. support certificate revocation lists.
(D)TLS provides for authentication of the identity of both the (D)TLS (D)TLS provides for authentication of the identity of both the (D)TLS
server and the (D)TLS client. Access to MIB objects for the server and the (D)TLS client. Access to MIB objects for the
authenticated principal MUST be enforced by an access control authenticated principal MUST be enforced by an access control
skipping to change at page 55, line 20 skipping to change at page 55, line 25
For example, command generators must check that the command responder For example, command generators must check that the command responder
presented and authenticated itself with a X.509 certificate that was presented and authenticated itself with a X.509 certificate that was
expected. Not doing so would allow an impostor, at a minimum, to expected. Not doing so would allow an impostor, at a minimum, to
present false data, receive sensitive information and/or provide a present false data, receive sensitive information and/or provide a
false belief that configuration was actually received and acted upon. false belief that configuration was actually received and acted upon.
Authenticating and verifying the identity of the (D)TLS server and Authenticating and verifying the identity of the (D)TLS server and
the (D)TLS client for all operations ensures the authenticity of the the (D)TLS client for all operations ensures the authenticity of the
SNMP engine that provides MIB data. SNMP engine that provides MIB data.
The instructions found in the DESCRIPTION clause of the The instructions found in the DESCRIPTION clause of the
tlstmCertToTSNTable object must be followed exactly. It is also snmpTlstmCertToTSNTable object must be followed exactly. It is also
important that the rows of the table be searched in prioritized order important that the rows of the table be searched in prioritized order
starting with the row containing the lowest numbered tlstmCertToTSNID starting with the row containing the lowest numbered
value. snmpTlstmCertToTSNID value.
9.2. Use with SNMPv1/SNMPv2c Messages 9.2. Use with SNMPv1/SNMPv2c Messages
The SNMPv1 and SNMPv2c message processing described in [RFC3584] (BCP The SNMPv1 and SNMPv2c message processing described in [RFC3584] (BCP
74) always selects the SNMPv1 or SNMPv2c Security Models, 74) always selects the SNMPv1 or SNMPv2c Security Models,
respectively. Both of these and the User-based Security Model respectively. Both of these and the User-based Security Model
typically used with SNMPv3 derive the securityName and securityLevel typically used with SNMPv3 derive the securityName and securityLevel
from the SNMP message received, even when the message was received from the SNMP message received, even when the message was received
over a secure transport. Access control decisions are therefore made over a secure transport. Access control decisions are therefore made
based on the contents of the SNMP message, rather than using the based on the contents of the SNMP message, rather than using the
skipping to change at page 55, line 47 skipping to change at page 56, line 5
9.3. MIB Module Security 9.3. MIB Module Security
There are a number of management objects defined in this MIB module There are a number of management objects defined in this MIB module
with a MAX-ACCESS clause of read-write and/or read-create. Such with a MAX-ACCESS clause of read-write and/or read-create. Such
objects may be considered sensitive or vulnerable in some network objects may be considered sensitive or vulnerable in some network
environments. The support for SET operations in a non-secure environments. The support for SET operations in a non-secure
environment without proper protection can have a negative effect on environment without proper protection can have a negative effect on
network operations. These are the tables and objects and their network operations. These are the tables and objects and their
sensitivity/vulnerability: sensitivity/vulnerability:
o The tlstmParamsTable can be used to change the outgoing X.509 o The snmpTlstmParamsTable can be used to change the outgoing X.509
certificate used to establish a (D)TLS connection. Modification certificate used to establish a (D)TLS connection. Modification
to objects in this table need to be adequately authenticated since to objects in this table need to be adequately authenticated since
modification to values in this table will have profound impacts to modification to values in this table will have profound impacts to
the security of outbound connections from the device. Since the security of outbound connections from the device. Since
knowledge of authorization rules and certificate usage mechanisms knowledge of authorization rules and certificate usage mechanisms
may be considered sensitive, protection from disclosure of the may be considered sensitive, protection from disclosure of the
SNMP traffic via encryption is also highly recommended. SNMP traffic via encryption is also highly recommended.
o The tlstmAddrTable can be used to change the expectations of the o The snmpTlstmAddrTable can be used to change the expectations of
certificates presented by a remote (D)TLS server. Modification to the certificates presented by a remote (D)TLS server.
objects in this table need to be adequately authenticated since Modification to objects in this table need to be adequately
modification to values in this table will have profound impacts to authenticated since modification to values in this table will have
the security of outbound connections from the device. Since profound impacts to the security of outbound connections from the
knowledge of authorization rules and certificate usage mechanisms device. Since knowledge of authorization rules and certificate
may be considered sensitive, protection from disclosure of the usage mechanisms may be considered sensitive, protection from
SNMP traffic via encryption is also highly recommended. disclosure of the SNMP traffic via encryption is also highly
recommended.
o The tlstmCertToTSNTable is used to specify the mapping of incoming o The snmpTlstmCertToTSNTable is used to specify the mapping of
X.509 certificates to tmSecurityNames which eventually get mapped incoming X.509 certificates to tmSecurityNames which eventually
to a SNMPv3 securityName. Modification to objects in this table get mapped to a SNMPv3 securityName. Modification to objects in
need to be adequately authenticated since modification to values this table need to be adequately authenticated since modification
in this table will have profound impacts to the security of to values in this table will have profound impacts to the security
incoming connections to the device. Since knowledge of of incoming connections to the device. Since knowledge of
authorization rules and certificate usage mechanisms may be authorization rules and certificate usage mechanisms may be
considered sensitive, protection from disclosure of the SNMP considered sensitive, protection from disclosure of the SNMP
traffic via encryption is also highly recommended. traffic via encryption is also highly recommended.
Some of the readable objects in this MIB module (i.e., objects with a Some of the readable objects in this MIB module (i.e., objects with a
MAX-ACCESS other than not-accessible) may be considered sensitive or MAX-ACCESS other than not-accessible) may be considered sensitive or
vulnerable in some network environments. It is thus important to vulnerable in some network environments. It is thus important to
control even GET and/or NOTIFY access to these objects and possibly control even GET and/or NOTIFY access to these objects and possibly
to even encrypt the values of these objects when sending them over to even encrypt the values of these objects when sending them over
the network via SNMP. These are the tables and objects and their the network via SNMP. These are the tables and objects and their
skipping to change at page 57, line 18 skipping to change at page 57, line 23
responsibility to ensure that the SNMP entity giving access to an responsibility to ensure that the SNMP entity giving access to an
instance of this MIB module is properly configured to give access to instance of this MIB module is properly configured to give access to
the objects only to those principals (users) that have legitimate the objects only to those principals (users) that have legitimate
rights to indeed GET or SET (change/create/delete) them. rights to indeed GET or SET (change/create/delete) them.
10. IANA Considerations 10. IANA Considerations
IANA is requested to assign: IANA is requested to assign:
1. Two TCP/UDP port numbers from the "Registered Ports" range of the 1. Two TCP/UDP port numbers from the "Registered Ports" range of the
Port Numbers registry, with keywords "snmptls" and "snmptls- Port Numbers registry, with the following keywords (where TBD1
trap". These are the default ports for receipt of SNMP command and TBD2 correspond to the assigned port numbers):
messages (snmptls) and SNMP notification messages (snmptls-trap)
over a TLS Transport Model as defined in this document.
2. an SMI number under snmpDomains for the snmpTLSTCPDomain object Keyword Decimal Description References
------- ------- ----------- ----------
snmptls TBD1/tcp SNMPv3-TLS [RFC-isms-dtls-tm]
snmpdtls TBD1/udp SNMPv3-DTLS [RFC-isms-dtls-tm]
snmptls-trap TBD2/tcp SNMPv3-Trap-TLS [RFC-isms-dtls-tm]
snmpdtls-trap TBD2/udp SNMPv3-Trap-DTLS [RFC-isms-dtls-tm]
These are the default ports for receipt of SNMP command messages
(snmptls and snmpdtls) and SNMP notification messages (snmptls-
trap and snmpdtls-trap) over a TLS Transport Model as defined in
this document.
2. An SMI number under snmpDomains for the snmpTLSTCPDomain object
identifier, identifier,
3. an SMI number under snmpDomains for the snmpDTLSUDPDomain object 3. An SMI number under snmpDomains for the snmpDTLSUDPDomain object
identifier, identifier,
4. a SMI number under snmpModules, for the MIB module in this 4. A SMI number under mib-2, for the MIB module in this document,
document,
5. "tls" as the corresponding prefix for the snmpTLSTCPDomain in the 5. "tls" as the corresponding prefix for the snmpTLSTCPDomain in the
SNMP Transport Model registry, SNMP Transport Model registry,
6. "dudp" as the corresponding prefix for the snmpDTLSUDPDomain in 6. "dtls" as the corresponding prefix for the snmpDTLSUDPDomain in
the SNMP Transport Model registry, the SNMP Transport Model registry,
Editor's note: this section should be replaced with appropriate RFC Editor's note: this section should be replaced with appropriate
descriptive assignment text after IANA assignments are made and prior descriptive assignment text after IANA assignments are made and prior
to publication. to publication.
11. Acknowledgements 11. Acknowledgements
This document closely follows and copies the Secure Shell Transport This document closely follows and copies the Secure Shell Transport
Model for SNMP defined by David Harrington and Joseph Salowey in Model for SNMP defined by David Harrington and Joseph Salowey in
[RFC5292]. [RFC5292].
This document was reviewed by the following people who helped provide This document was reviewed by the following people who helped provide
useful comments (in alphabetical order): Andy Donati, Pasi Eronen, useful comments (in alphabetical order): Andy Donati, Pasi Eronen,
David Harrington, Jeffrey Hutzelman, Alan Luchuk, Tom Petch, Randy David Harrington, Jeffrey Hutzelman, Alan Luchuk, Michael Peck, Tom
Presuhn, Ray Purvis, Joseph Salowey, Jurgen Schonwalder, Dave Shield, Petch, Randy Presuhn, Ray Purvis, Peter Saint-Andre, Joseph Salowey,
Robert Story. Jurgen Schonwalder, Dave Shield, Robert Story.
This work was supported in part by the United States Department of This work was supported in part by the United States Department of
Defense. Large portions of this document are based on work by Defense. Large portions of this document are based on work by
General Dynamics C4 Systems and the following individuals: Brian General Dynamics C4 Systems and the following individuals: Brian
Baril, Kim Bryant, Dana Deluca, Dan Hanson, Tim Huemiller, John Baril, Kim Bryant, Dana Deluca, Dan Hanson, Tim Huemiller, John
Holzhauer, Colin Hoogeboom, Dave Kornbau, Chris Knaian, Dan Knaul, Holzhauer, Colin Hoogeboom, Dave Kornbau, Chris Knaian, Dan Knaul,
Charles Limoges, Steve Moccaldi, Gerardo Orlando, and Brandon Yip. Charles Limoges, Steve Moccaldi, Gerardo Orlando, and Brandon Yip.
12. References 12. References
skipping to change at page 60, line 47 skipping to change at page 61, line 14
Depending on whether this VACM configuration is for a Command Depending on whether this VACM configuration is for a Command
Responder or a command generator the security name "blueberry" will Responder or a command generator the security name "blueberry" will
come from a few different locations. come from a few different locations.
A.1. Configuring the Notification Originator A.1. Configuring the Notification Originator
For notification originators performing authorization checks, the For notification originators performing authorization checks, the
server's certificate must be verified against the expected server's certificate must be verified against the expected
certificate before proceeding to send the notification. The expected certificate before proceeding to send the notification. The expected
certificate from the server may be listed in the tlstmAddrTable or certificate from the server may be listed in the snmpTlstmAddrTable
may be determined through other X.509 path validation mechanisms. or may be determined through other X.509 path validation mechanisms.
The securityName to use for VACM authorization checks is set by the The securityName to use for VACM authorization checks is set by the
SNMP-TARGET-MIB's snmpTargetParamsSecurityName column. SNMP-TARGET-MIB's snmpTargetParamsSecurityName column.
The certificate that the notification originator should present to The certificate that the notification originator should present to
the server is taken from the tlstmParamsClientFingerprint column from the server is taken from the snmpTlstmParamsClientFingerprint column
the appropriate entry in the tlstmParamsTable table. (Or else a from the appropriate entry in the snmpTlstmParamsTable table. (Or
default certificate may be used if available.) else a default certificate may be used if available.)
To configure a notification originator to open a TLS over TCP To configure a notification originator to open a TLS over TCP
connection to a notification receiver it must be configured so the connection to a notification receiver it must be configured so the
server's presented certificate can be verified against the expected server's presented certificate can be verified against the expected
certificate before proceeding to send the notification. This is done certificate before proceeding to send the notification. This is done
by configuring the tlstmAddrTable accordingly. For example, if the by configuring the snmpTlstmAddrTable accordingly. For example, if
verification is done via certification path validation (to a trust the verification is done via certification path validation (to a
anchor configured in implementation dependent manner), then the table trust anchor configured in implementation dependent manner), then the
entries could look like: table entries could look like:
snmpTargetAddrTable row: snmpTargetAddrTable row:
snmpTargetAddrName = "toNRAddr" snmpTargetAddrName = "toNRAddr"
snmpTargetAddrTDomain = snmpTLSTCPDomain snmpTargetAddrTDomain = snmpTLSTCPDomain
snmpTargetAddrTAddress = "192.0.2.1:XXXTLSTCPTRAPPORT" snmpTargetAddrTAddress = "192.0.2.1:XXXTLSTCPTRAPPORT"
snmpTargetAddrTimeout = 1500 snmpTargetAddrTimeout = 1500
snmpTargetAddrRetryCount = 3 snmpTargetAddrRetryCount = 3
snmpTargetAddrTagList = "toNRTag" snmpTargetAddrTagList = "toNRTag"
snmpTargetAddrParams = "toNR" (MUST match below) snmpTargetAddrParams = "toNR" (MUST match below)
snmpTargetAddrStorageType = 3 (nonVolatile) snmpTargetAddrStorageType = 3 (nonVolatile)
snmpTargetAddrColumnStatus = 4 (createAndGo) snmpTargetAddrColumnStatus = 4 (createAndGo)
snmpTargetParamsTable row: snmpTargetParamsTable row:
snmpTargetParamsName = toNR snmpTargetParamsName = toNR
snmpTargetParamsMPModel = SNMPv3 snmpTargetParamsMPModel = SNMPv3
snmpTargetParamsSecurityModel = 4 (TransportSecurityModel) snmpTargetParamsSecurityModel = 4 (TransportSecurityModel)
snmpTargetParamsSecurityName = "blueberry" snmpTargetParamsSecurityName = "blueberry"
snmpTargetParamsSecurityLevel = 3 (authPriv) snmpTargetParamsSecurityLevel = 3 (authPriv)
snmpTargetParamsStorageType = 3 (nonVolatile) snmpTargetParamsStorageType = 3 (nonVolatile)
snmpTargetParamsRowStatus = 4 (createAndGo0 snmpTargetParamsRowStatus = 4 (createAndGo0
tlstmAddrTable row: snmpTlstmAddrTable row:
snmpTargetAddrName = "toNRAddr" snmpTargetAddrName = "toNRAddr"
tlstmAddrServerFingerprint = "" snmpTlstmAddrServerFingerprint = ""
tlstmAddrServerIdentity = "server.example.org" snmpTlstmAddrServerIdentity = "server.example.org"
tlstmAddrStorageType = 3 (nonVolatile) snmpTlstmAddrStorageType = 3 (nonVolatile)
tlstmAddrRowStatus = 4 (createAndGo) snmpTlstmAddrRowStatus = 4 (createAndGo)
Editor's note: replace the string "XXXTLSTCPTRAPPORT" above with the Editor's note: replace the string "XXXTLSTCPTRAPPORT" above with the
appropriately assigned "snmptls-trap" port. appropriately assigned "snmptls-trap" port.
A.2. Configuring the Command Responder A.2. Configuring the Command Responder
For command responder applications, the vacmSecurityName "blueberry" For command responder applications, the vacmSecurityName "blueberry"
value is a value that derived from an incoming (D)TLS connection. value is a value that derived from an incoming (D)TLS connection.
The mapping from a recevied (D)TLS client certificate to a The mapping from a recevied (D)TLS client certificate to a
tmSecurityName is done with the tlstmCertToTSNTable. The tmSecurityName is done with the snmpTlstmCertToTSNTable. The
certificates must be loaded into the device so that a certificates must be loaded into the device so that a
tlstmCertToTSNEntry may refer to it. As an example, consider the snmpTlstmCertToTSNEntry may refer to it. As an example, consider the
following entry which will provide a mapping from a client's public following entry which will provide a mapping from a client's public
X.509's hash fingerprint directly to the "blueberry" tmSecurityName: X.509's hash fingerprint directly to the "blueberry" tmSecurityName:
tlstmCertToTSNID = 1 (chosen by ordering preference) snmpTlstmCertToTSNID = 1 (chosen by ordering preference)
tlstmCertToTSNFingerprint = HASH (appropriate fingerprint) snmpTlstmCertToTSNFingerprint = HASH (appropriate fingerprint)
tlstmCertToTSNMapType = tlstmCertSpecified snmpTlstmCertToTSNMapType = snmpTlstmCertSpecified
tlstmCertToTSNSecurityName = "blueberry" snmpTlstmCertToTSNSecurityName = "blueberry"
tlstmCertToTSNStorageType = 3 (nonVolatile) snmpTlstmCertToTSNStorageType = 3 (nonVolatile)
tlstmCertToTSNRowStatus = 4 (createAndGo) snmpTlstmCertToTSNRowStatus = 4 (createAndGo)
The above is an example of how to map a particular certificate to a The above is an example of how to map a particular certificate to a
particular tmSecurityName. It is recommended, however, that users particular tmSecurityName. It is recommended, however, that users
make use of direct subjectAltName or CommonName mappings where make use of direct subjectAltName or CommonName mappings where
possible as it provides a more scalable approach to certificate possible as it provides a more scalable approach to certificate
management. This entry provides an example of using a subjectAltName management. This entry provides an example of using a subjectAltName
mapping: mapping:
tlstmCertToTSNID = 1 (chosen by ordering preference) snmpTlstmCertToTSNID = 1 (chosen by ordering preference)
tlstmCertToTSNFingerprint = HASH (appropriate fingerprint) snmpTlstmCertToTSNFingerprint = HASH (appropriate fingerprint)
tlstmCertToTSNMapType = tlstmCertSANAny snmpTlstmCertToTSNMapType = snmpTlstmCertSANAny
tlstmCertToTSNData = "" (not used) snmpTlstmCertToTSNData = "" (not used)
tlstmCertToTSNStorageType = 3 (nonVolatile) snmpTlstmCertToTSNStorageType = 3 (nonVolatile)
tlstmCertToTSNRowStatus = 4 (createAndGo) snmpTlstmCertToTSNRowStatus = 4 (createAndGo)
The above entry indicates the subjectAltName field for certificates The above entry indicates the subjectAltName field for certificates
created by an issuing certificate with a corresponding fingerprint created by an issuing certificate with a corresponding fingerprint
will be trusted to always produce common names that are directly one- will be trusted to always produce common names that are directly one-
to-one mappable into tmSecurityNames. This type of configuration to-one mappable into tmSecurityNames. This type of configuration
should only be used when the certificate authorities naming should only be used when the certificate authorities naming
conventions are carefully controlled. conventions are carefully controlled.
In the example, if the incoming (D)TLS client provided certificate In the example, if the incoming (D)TLS client provided certificate
contained a subjectAltName where the first listed subjectAltName in contained a subjectAltName where the first listed subjectAltName in
the extension is the rfc822Name of "blueberry@example.com", the the extension is the rfc822Name of "blueberry@example.com", the
certificate was signed by a certificate matching the certificate was signed by a certificate matching the
tlstmCertToTSNFingerprint value and the CA's certificate was properly snmpTlstmCertToTSNFingerprint value and the CA's certificate was
installed on the device then the string "blueberry@example.com" would properly installed on the device then the string
be used as the tmSecurityName for the session. "blueberry@example.com" would be used as the tmSecurityName for the
session.
Author's Address Author's Address
Wes Hardaker Wes Hardaker
Sparta, Inc. Sparta, Inc.
P.O. Box 382 P.O. Box 382
Davis, CA 95617 Davis, CA 95617
USA USA
Phone: +1 530 792 1913 Phone: +1 530 792 1913
 End of changes. 201 change blocks. 
456 lines changed or deleted 485 lines changed or added

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