2830
PROPOSED STANDARD
Lightweight Directory Access Protocol (v3): Extension for Transport Layer Security (Obsoleted)
Authors: J. Hodges, R. Morgan, M. Wahl
Date: May 2000
Area: app
Working Group: ldapext
Stream: IETF
Abstract
This document defines the "Start Transport Layer Security (TLS) Operation" for LDAP. [STANDARDS-TRACK]
RFC 2830
Obsoleted by: 4511, 4513, 4510 PROPOSED STANDARD
Updated by: 3377
Network Working Group J. Hodges
Request for Comments: 2830 Oblix Inc.
Category: Standards Track R. Morgan
Univ of Washington
M. Wahl
Sun Microsystems, Inc.
May 2000
<span class="h1">Lightweight Directory Access Protocol (v3):</span>
<span class="h1">Extension for Transport Layer Security</span>
Status of this Memo
This document specifies an Internet standards track protocol for the
Internet community, and requests discussion and suggestions for
improvements. Please refer to the current edition of the "Internet
Official Protocol Standards" (STD 1) for the standardization state
and status of this protocol. Distribution of this memo is unlimited.
Copyright Notice
Copyright (C) The Internet Society (2000). All Rights Reserved.
Abstract
This document defines the "Start Transport Layer Security (TLS)
Operation" for LDAP [<a href="#ref-LDAPv3" title=""Lightweight Directory Access Protocol (v3)"">LDAPv3</a>, <a href="#ref-TLS" title=""The TLS Protocol Version 1.0"">TLS</a>]. This operation provides for TLS
establishment in an LDAP association and is defined in terms of an
LDAP extended request.
<span class="h2"><a class="selflink" id="section-1" href="#section-1">1</a>. Conventions Used in this Document</span>
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in [<a href="#ref-ReqsKeywords" title=""Key Words for use in RFCs to Indicate Requirement Levels"">ReqsKeywords</a>].
<span class="h2"><a class="selflink" id="section-2" href="#section-2">2</a>. The Start TLS Request</span>
This section describes the Start TLS extended request and extended
response themselves: how to form the request, the form of the
response, and enumerates the various result codes the client MUST be
prepared to handle.
The section following this one then describes how to sequence an
overall Start TLS Operation.
<span class="grey">Hodges, et al. Standards Track [Page 1]</span>
<span id="page-2" ></span>
<span class="grey"><a href="./rfc2830">RFC 2830</a> LDAPv3: Extension for Transport Layer Security May 2000</span>
<span class="h3"><a class="selflink" id="section-2.1" href="#section-2.1">2.1</a>. Requesting TLS Establishment</span>
A client may perform a Start TLS operation by transmitting an LDAP
PDU containing an ExtendedRequest [<a href="#ref-LDAPv3" title=""Lightweight Directory Access Protocol (v3)"">LDAPv3</a>] specifying the OID for the
Start TLS operation:
1.3.6.1.4.1.1466.20037
An LDAP ExtendedRequest is defined as follows:
ExtendedRequest ::= [APPLICATION 23] SEQUENCE {
requestName [0] LDAPOID,
requestValue [1] OCTET STRING OPTIONAL }
A Start TLS extended request is formed by setting the requestName
field to the OID string given above. The requestValue field is
absent. The client MUST NOT send any PDUs on this connection
following this request until it receives a Start TLS extended
response.
When a Start TLS extended request is made, the server MUST return an
LDAP PDU containing a Start TLS extended response. An LDAP
ExtendedResponse is defined as follows:
ExtendedResponse ::= [APPLICATION 24] SEQUENCE {
COMPONENTS OF LDAPResult,
responseName [10] LDAPOID OPTIONAL,
response [11] OCTET STRING OPTIONAL }
A Start TLS extended response MUST contain a responseName field which
MUST be set to the same string as that in the responseName field
present in the Start TLS extended request. The response field is
absent. The server MUST set the resultCode field to either success or
one of the other values outlined in <a href="#section-2.3">section 2.3</a>.
<span class="h3"><a class="selflink" id="section-2.2" href="#section-2.2">2.2</a>. "Success" Response</span>
If the ExtendedResponse contains a resultCode of success, this
indicates that the server is willing and able to negotiate TLS. Refer
to <a href="#section-3">section 3</a>, below, for details.
<span class="h3"><a class="selflink" id="section-2.3" href="#section-2.3">2.3</a>. Response other than "success"</span>
If the ExtendedResponse contains a resultCode other than success,
this indicates that the server is unwilling or unable to negotiate
TLS.
<span class="grey">Hodges, et al. Standards Track [Page 2]</span>
<span id="page-3" ></span>
<span class="grey"><a href="./rfc2830">RFC 2830</a> LDAPv3: Extension for Transport Layer Security May 2000</span>
If the Start TLS extended request was not successful, the resultCode
will be one of:
operationsError (operations sequencing incorrect; e.g. TLS already
established)
protocolError (TLS not supported or incorrect PDU structure)
referral (this server doesn't do TLS, try this one)
unavailable (e.g. some major problem with TLS, or server is
shutting down)
The server MUST return operationsError if the client violates any of
the Start TLS extended operation sequencing requirements described in
<a href="#section-3">section 3</a>, below.
If the server does not support TLS (whether by design or by current
configuration), it MUST set the resultCode to protocolError (see
section 4.1.1 of [<a href="#ref-LDAPv3" title=""Lightweight Directory Access Protocol (v3)"">LDAPv3</a>]), or to referral. The server MUST include
an actual referral value in the LDAP Result if it returns a
resultCode of referral. The client's current session is unaffected if
the server does not support TLS. The client MAY proceed with any LDAP
operation, or it MAY close the connection.
The server MUST return unavailable if it supports TLS but cannot
establish a TLS connection for some reason, e.g. the certificate
server not responding, it cannot contact its TLS implementation, or
if the server is in process of shutting down. The client MAY retry
the StartTLS operation, or it MAY proceed with any other LDAP
operation, or it MAY close the connection.
<span class="h2"><a class="selflink" id="section-3" href="#section-3">3</a>. Sequencing of the Start TLS Operation</span>
This section describes the overall procedures clients and servers
MUST follow for TLS establishment. These procedures take into
consideration various aspects of the overall security of the LDAP
association including discovery of resultant security level and
assertion of the client's authorization identity.
Note that the precise effects, on a client's authorization identity,
of establishing TLS on an LDAP association are described in detail in
<a href="#section-5">section 5</a>.
<span class="grey">Hodges, et al. Standards Track [Page 3]</span>
<span id="page-4" ></span>
<span class="grey"><a href="./rfc2830">RFC 2830</a> LDAPv3: Extension for Transport Layer Security May 2000</span>
<span class="h3"><a class="selflink" id="section-3.1" href="#section-3.1">3.1</a>. Requesting to Start TLS on an LDAP Association</span>
The client MAY send the Start TLS extended request at any time after
establishing an LDAP association, except that in the following cases
the client MUST NOT send a Start TLS extended request:
- if TLS is currently established on the connection, or
- during a multi-stage SASL negotiation, or
- if there are any LDAP operations outstanding on the connection.
The result of violating any of these requirements is a resultCode of
operationsError, as described above in <a href="#section-2.3">section 2.3</a>.
The client MAY have already performed a Bind operation when it sends
a Start TLS request, or the client might have not yet bound.
If the client did not establish a TLS connection before sending any
other requests, and the server requires the client to establish a TLS
connection before performing a particular request, the server MUST
reject that request with a confidentialityRequired or
strongAuthRequired result. The client MAY send a Start TLS extended
request, or it MAY choose to close the connection.
<span class="h3"><a class="selflink" id="section-3.2" href="#section-3.2">3.2</a>. Starting TLS</span>
The server will return an extended response with the resultCode of
success if it is willing and able to negotiate TLS. It will return
other resultCodes, documented above, if it is unable.
In the successful case, the client, which has ceased to transfer LDAP
requests on the connection, MUST either begin a TLS negotiation or
close the connection. The client will send PDUs in the TLS Record
Protocol directly over the underlying transport connection to the
server to initiate TLS negotiation [<a href="#ref-TLS" title=""The TLS Protocol Version 1.0"">TLS</a>].
<span class="h3"><a class="selflink" id="section-3.3" href="#section-3.3">3.3</a>. TLS Version Negotiation</span>
Negotiating the version of TLS or SSL to be used is a part of the TLS
Handshake Protocol, as documented in [<a href="#ref-TLS" title=""The TLS Protocol Version 1.0"">TLS</a>]. Please refer to that
document for details.
<span class="h3"><a class="selflink" id="section-3.4" href="#section-3.4">3.4</a>. Discovery of Resultant Security Level</span>
After a TLS connection is established on an LDAP association, both
parties MUST individually decide whether or not to continue based on
the privacy level achieved. Ascertaining the TLS connection's privacy
level is implementation dependent, and accomplished by communicating
with one's respective local TLS implementation.
<span class="grey">Hodges, et al. Standards Track [Page 4]</span>
<span id="page-5" ></span>
<span class="grey"><a href="./rfc2830">RFC 2830</a> LDAPv3: Extension for Transport Layer Security May 2000</span>
If the client or server decides that the level of authentication or
privacy is not high enough for it to continue, it SHOULD gracefully
close the TLS connection immediately after the TLS negotiation has
completed (see sections <a href="#section-4.1">4.1</a> and <a href="#section-5.2">5.2</a>, below).
The client MAY attempt to Start TLS again, or MAY send an unbind
request, or send any other LDAP request.
<span class="h3"><a class="selflink" id="section-3.5" href="#section-3.5">3.5</a>. Assertion of Client's Authorization Identity</span>
The client MAY, upon receipt of a Start TLS extended response
indicating success, assert that a specific authorization identity be
utilized in determining the client's authorization status. The client
accomplishes this via an LDAP Bind request specifying a SASL
mechanism of "EXTERNAL" [<a href="#ref-SASL" title=""Simple Authentication and Security Layer (SASL)"">SASL</a>]. See <a href="#section-5.1.2">section 5.1.2</a>, below.
<span class="h3"><a class="selflink" id="section-3.6" href="#section-3.6">3.6</a>. Server Identity Check</span>
The client MUST check its understanding of the server's hostname
against the server's identity as presented in the server's
Certificate message, in order to prevent man-in-the-middle attacks.
Matching is performed according to these rules:
- The client MUST use the server hostname it used to open the LDAP
connection as the value to compare against the server name as
expressed in the server's certificate. The client MUST NOT use the
server's canonical DNS name or any other derived form of name.
- If a subjectAltName extension of type dNSName is present in the
certificate, it SHOULD be used as the source of the server's
identity.
- Matching is case-insensitive.
- The "*" wildcard character is allowed. If present, it applies only
to the left-most name component.
E.g. *.bar.com would match a.bar.com, b.bar.com, etc. but not
bar.com. If more than one identity of a given type is present in the
certificate (e.g. more than one dNSName name), a match in any one of
the set is considered acceptable.
If the hostname does not match the dNSName-based identity in the
certificate per the above check, user-oriented clients SHOULD either
notify the user (clients MAY give the user the opportunity to
<span class="grey">Hodges, et al. Standards Track [Page 5]</span>
<span id="page-6" ></span>
<span class="grey"><a href="./rfc2830">RFC 2830</a> LDAPv3: Extension for Transport Layer Security May 2000</span>
continue with the connection in any case) or terminate the connection
and indicate that the server's identity is suspect. Automated clients
SHOULD close the connection, returning and/or logging an error
indicating that the server's identity is suspect.
Beyond the server identity checks described in this section, clients
SHOULD be prepared to do further checking to ensure that the server
is authorized to provide the service it is observed to provide. The
client MAY need to make use of local policy information.
<span class="h3"><a class="selflink" id="section-3.7" href="#section-3.7">3.7</a>. Refresh of Server Capabilities Information</span>
The client MUST refresh any cached server capabilities information
(e.g. from the server's root DSE; see section 3.4 of [<a href="#ref-LDAPv3" title=""Lightweight Directory Access Protocol (v3)"">LDAPv3</a>]) upon
TLS session establishment. This is necessary to protect against
active-intermediary attacks which may have altered any server
capabilities information retrieved prior to TLS establishment. The
server MAY advertise different capabilities after TLS establishment.
<span class="h2"><a class="selflink" id="section-4" href="#section-4">4</a>. Closing a TLS Connection</span>
<span class="h3"><a class="selflink" id="section-4.1" href="#section-4.1">4.1</a>. Graceful Closure</span>
Either the client or server MAY terminate the TLS connection on an
LDAP association by sending a TLS closure alert. This will leave the
LDAP association intact.
Before closing a TLS connection, the client MUST either wait for any
outstanding LDAP operations to complete, or explicitly abandon them
[<a href="#ref-LDAPv3" title=""Lightweight Directory Access Protocol (v3)"">LDAPv3</a>].
After the initiator of a close has sent a closure alert, it MUST
discard any TLS messages until it has received an alert from the
other party. It will cease to send TLS Record Protocol PDUs, and
following the receipt of the alert, MAY send and receive LDAP PDUs.
The other party, if it receives a closure alert, MUST immediately
transmit a TLS closure alert. It will subsequently cease to send TLS
Record Protocol PDUs, and MAY send and receive LDAP PDUs.
<span class="h3"><a class="selflink" id="section-4.2" href="#section-4.2">4.2</a>. Abrupt Closure</span>
Either the client or server MAY abruptly close the entire LDAP
association and any TLS connection established on it by dropping the
underlying TCP connection. A server MAY beforehand send the client a
Notice of Disconnection [<a href="#ref-LDAPv3" title=""Lightweight Directory Access Protocol (v3)"">LDAPv3</a>] in this case.
<span class="grey">Hodges, et al. Standards Track [Page 6]</span>
<span id="page-7" ></span>
<span class="grey"><a href="./rfc2830">RFC 2830</a> LDAPv3: Extension for Transport Layer Security May 2000</span>
<span class="h2"><a class="selflink" id="section-5" href="#section-5">5</a>. Effects of TLS on a Client's Authorization Identity</span>
This section describes the effects on a client's authorization
identity brought about by establishing TLS on an LDAP association.
The default effects are described first, and next the facilities for
client assertion of authorization identity are discussed including
error conditions. Lastly, the effects of closing the TLS connection
are described.
Authorization identities and related concepts are defined in
[<a href="#ref-AuthMeth" title=""Authentication Methods for LDAP"">AuthMeth</a>].
<span class="h3"><a class="selflink" id="section-5.1" href="#section-5.1">5.1</a>. TLS Connection Establishment Effects</span>
<span class="h4"><a class="selflink" id="section-5.1.1" href="#section-5.1.1">5.1.1</a>. Default Effects</span>
Upon establishment of the TLS connection onto the LDAP association,
any previously established authentication and authorization
identities MUST remain in force, including anonymous state. This
holds even in the case where the server requests client
authentication via TLS -- e.g. requests the client to supply its
certificate during TLS negotiation (see [<a href="#ref-TLS" title=""The TLS Protocol Version 1.0"">TLS</a>]).
<span class="h4"><a class="selflink" id="section-5.1.2" href="#section-5.1.2">5.1.2</a>. Client Assertion of Authorization Identity</span>
A client MAY either implicitly request that its LDAP authorization
identity be derived from its authenticated TLS credentials or it MAY
explicitly provide an authorization identity and assert that it be
used in combination with its authenticated TLS credentials. The
former is known as an implicit assertion, and the latter as an
explicit assertion.
<span class="h5"><a class="selflink" id="section-5.1.2.1" href="#section-5.1.2.1">5.1.2.1</a>. Implicit Assertion</span>
An implicit authorization identity assertion is accomplished after
TLS establishment by invoking a Bind request of the SASL form using
the "EXTERNAL" mechanism name [<a href="#ref-SASL" title=""Simple Authentication and Security Layer (SASL)"">SASL</a>, <a href="#ref-LDAPv3" title=""Lightweight Directory Access Protocol (v3)"">LDAPv3</a>] that SHALL NOT include
the optional credentials octet string (found within the
SaslCredentials sequence in the Bind Request). The server will derive
the client's authorization identity from the authentication identity
supplied in the client's TLS credentials (typically a public key
certificate) according to local policy. The underlying mechanics of
how this is accomplished are implementation specific.
<span class="grey">Hodges, et al. Standards Track [Page 7]</span>
<span id="page-8" ></span>
<span class="grey"><a href="./rfc2830">RFC 2830</a> LDAPv3: Extension for Transport Layer Security May 2000</span>
<span class="h5"><a class="selflink" id="section-5.1.2.2" href="#section-5.1.2.2">5.1.2.2</a>. Explicit Assertion</span>
An explicit authorization identity assertion is accomplished after
TLS establishment by invoking a Bind request of the SASL form using
the "EXTERNAL" mechanism name [<a href="#ref-SASL" title=""Simple Authentication and Security Layer (SASL)"">SASL</a>, <a href="#ref-LDAPv3" title=""Lightweight Directory Access Protocol (v3)"">LDAPv3</a>] that SHALL include the
credentials octet string. This string MUST be constructed as
documented in section 9 of [<a href="#ref-AuthMeth" title=""Authentication Methods for LDAP"">AuthMeth</a>].
<span class="h5"><a class="selflink" id="section-5.1.2.3" href="#section-5.1.2.3">5.1.2.3</a>. Error Conditions</span>
For either form of assertion, the server MUST verify that the
client's authentication identity as supplied in its TLS credentials
is permitted to be mapped to the asserted authorization identity. The
server MUST reject the Bind operation with an invalidCredentials
resultCode in the Bind response if the client is not so authorized.
Additionally, with either form of assertion, if a TLS session has not
been established between the client and server prior to making the
SASL EXTERNAL Bind request and there is no other external source of
authentication credentials (e.g. IP-level security [<a href="#ref-IPSEC" title=""Security Architecture for the Internet Protocol"">IPSEC</a>]), or if,
during the process of establishing the TLS session, the server did
not request the client's authentication credentials, the SASL
EXTERNAL bind MUST fail with a result code of
inappropriateAuthentication.
After the above Bind operation failures, any client authentication
and authorization state of the LDAP association is lost, so the LDAP
association is in an anonymous state after the failure. TLS
connection state is unaffected, though a server MAY end the TLS
connection, via a TLS close_notify message, based on the Bind failure
(as it MAY at any time).
<span class="h3"><a class="selflink" id="section-5.2" href="#section-5.2">5.2</a>. TLS Connection Closure Effects</span>
Closure of the TLS connection MUST cause the LDAP association to move
to an anonymous authentication and authorization state regardless of
the state established over TLS and regardless of the authentication
and authorization state prior to TLS connection establishment.
<span class="h2"><a class="selflink" id="section-6" href="#section-6">6</a>. Security Considerations</span>
The goals of using the TLS protocol with LDAP are to ensure
connection confidentiality and integrity, and to optionally provide
for authentication. TLS expressly provides these capabilities, as
described in [<a href="#ref-TLS" title=""The TLS Protocol Version 1.0"">TLS</a>].
<span class="grey">Hodges, et al. Standards Track [Page 8]</span>
<span id="page-9" ></span>
<span class="grey"><a href="./rfc2830">RFC 2830</a> LDAPv3: Extension for Transport Layer Security May 2000</span>
All security gained via use of the Start TLS operation is gained by
the use of TLS itself. The Start TLS operation, on its own, does not
provide any additional security.
The use of TLS does not provide or ensure for confidentiality and/or
non-repudiation of the data housed by an LDAP-based directory server.
Nor does it secure the data from inspection by the server
administrators. Once established, TLS only provides for and ensures
confidentiality and integrity of the operations and data in transit
over the LDAP association, and only if the implementations on the
client and server support and negotiate it.
The level of security provided though the use of TLS depends directly
on both the quality of the TLS implementation used and the style of
usage of that implementation. Additionally, an active-intermediary
attacker can remove the Start TLS extended operation from the
supportedExtension attribute of the root DSE. Therefore, both parties
SHOULD independently ascertain and consent to the security level
achieved once TLS is established and before beginning use of the TLS
connection. For example, the security level of the TLS connection
might have been negotiated down to plaintext.
Clients SHOULD either warn the user when the security level achieved
does not provide confidentiality and/or integrity protection, or be
configurable to refuse to proceed without an acceptable level of
security.
Client and server implementors SHOULD take measures to ensure proper
protection of credentials and other confidential data where such
measures are not otherwise provided by the TLS implementation.
Server implementors SHOULD allow for server administrators to elect
whether and when connection confidentiality and/or integrity is
required, as well as elect whether and when client authentication via
TLS is required.
<span class="h2"><a class="selflink" id="section-7" href="#section-7">7</a>. Acknowledgements</span>
The authors thank Tim Howes, Paul Hoffman, John Kristian, Shirish
Rai, Jonathan Trostle, Harald Alvestrand, and Marcus Leech for their
contributions to this document.
<span class="grey">Hodges, et al. Standards Track [Page 9]</span>
<span id="page-10" ></span>
<span class="grey"><a href="./rfc2830">RFC 2830</a> LDAPv3: Extension for Transport Layer Security May 2000</span>
<span class="h2"><a class="selflink" id="section-8" href="#section-8">8</a>. References</span>
[<a id="ref-AuthMeth">AuthMeth</a>] Wahl, M., Alvestrand, H., Hodges, J. and R. Morgan,
"Authentication Methods for LDAP", <a href="./rfc2829">RFC 2829</a>, May 2000.
[<a id="ref-IPSEC">IPSEC</a>] Kent, S. and R. Atkinson, "Security Architecture for
the Internet Protocol", <a href="./rfc2401">RFC 2401</a>, November 1998.
[<a id="ref-LDAPv3">LDAPv3</a>] Wahl, M., Kille S. and T. Howes, "Lightweight
Directory Access Protocol (v3)", <a href="./rfc2251">RFC 2251</a>, December
1997.
[<a id="ref-ReqsKeywords">ReqsKeywords</a>] Bradner, S., "Key Words for use in RFCs to Indicate
Requirement Levels", <a href="https://www.rfc-editor.org/bcp/bcp14">BCP 14</a>, <a href="./rfc2119">RFC 2119</a>, March 1997.
[<a id="ref-SASL">SASL</a>] Myers, J., "Simple Authentication and Security Layer
(SASL)", <a href="./rfc2222">RFC 2222</a>, October 1997.
[<a id="ref-TLS">TLS</a>] Dierks, T. and C. Allen. "The TLS Protocol Version
1.0", <a href="./rfc2246">RFC 2246</a>, January 1999.
<span class="h2"><a class="selflink" id="section-9" href="#section-9">9</a>. Authors' Addresses</span>
Jeff Hodges
Oblix, Inc.
18922 Forge Drive
Cupertino, CA 95014
USA
Phone: +1-408-861-6656
EMail: [email protected]
RL "Bob" Morgan
Computing and Communications
University of Washington
Seattle, WA
USA
Phone: +1-206-221-3307
EMail: [email protected]
Mark Wahl
Sun Microsystems, Inc.
8911 Capital of Texas Hwy #4140
Austin TX 78759
USA
EMail: [email protected]
<span class="grey">Hodges, et al. Standards Track [Page 10]</span>
<span id="page-11" ></span>
<span class="grey"><a href="./rfc2830">RFC 2830</a> LDAPv3: Extension for Transport Layer Security May 2000</span>
<span class="h2"><a class="selflink" id="section-10" href="#section-10">10</a>. Intellectual Property Rights Notices</span>
The IETF takes no position regarding the validity or scope of any
intellectual property or other rights that might be claimed to
pertain to the implementation or use of the technology described in
this document or the extent to which any license under such rights
might or might not be available; neither does it represent that it
has made any effort to identify any such rights. Information on the
IETF's procedures with respect to rights in standards-track and
standards-related documentation can be found in <a href="https://www.rfc-editor.org/bcp/bcp11">BCP-11</a>. Copies of
claims of rights made available for publication and any assurances of
licenses to be made available, or the result of an attempt made to
obtain a general license or permission for the use of such
proprietary rights by implementors or users of this specification can
be obtained from the IETF Secretariat.
The IETF invites any interested party to bring to its attention any
copyrights, patents or patent applications, or other proprietary
rights which may cover technology that may be required to practice
this standard. Please address the information to the IETF Executive
Director.
<span class="grey">Hodges, et al. Standards Track [Page 11]</span>
<span id="page-12" ></span>
<span class="grey"><a href="./rfc2830">RFC 2830</a> LDAPv3: Extension for Transport Layer Security May 2000</span>
<span class="h2"><a class="selflink" id="section-11" href="#section-11">11</a>. Full Copyright Statement</span>
Copyright (C) The Internet Society (2000). All Rights Reserved.
This document and translations of it may be copied and furnished to
others, and derivative works that comment on or otherwise explain it
or assist in its implementation may be prepared, copied, published
and distributed, in whole or in part, without restriction of any
kind, provided that the above copyright notice and this paragraph are
included on all such copies and derivative works. However, this
document itself may not be modified in any way, such as by removing
the copyright notice or references to the Internet Society or other
Internet organizations, except as needed for the purpose of
developing Internet standards in which case the procedures for
copyrights defined in the Internet Standards process must be
followed, or as required to translate it into languages other than
English.
The limited permissions granted above are perpetual and will not be
revoked by the Internet Society or its successors or assigns.
This document and the information contained herein is provided on an
"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Acknowledgement
Funding for the RFC Editor function is currently provided by the
Internet Society.
Hodges, et al. Standards Track [Page 12]
Annotations
Select text to annotate