| < draft-ietf-httpbis-http2-encryption-01.txt | draft-ietf-httpbis-http2-encryption-02.txt > | |||
|---|---|---|---|---|
| HTTPbis Working Group M. Nottingham | HTTP Working Group M. Nottingham | |||
| Internet-Draft | Internet-Draft | |||
| Intended status: Experimental M. Thomson | Intended status: Experimental M. Thomson | |||
| Expires: June 18, 2015 Mozilla | Expires: December 17, 2015 Mozilla | |||
| December 15, 2014 | June 15, 2015 | |||
| Opportunistic Security for HTTP | Opportunistic Security for HTTP | |||
| draft-ietf-httpbis-http2-encryption-01 | draft-ietf-httpbis-http2-encryption-02 | |||
| Abstract | Abstract | |||
| This document describes how "http" URIs can be accessed using | This document describes how "http" URIs can be accessed using | |||
| Transport Layer Security (TLS) to mitigate pervasive monitoring | Transport Layer Security (TLS) to mitigate pervasive monitoring | |||
| attacks. | attacks. | |||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| skipping to change at page 1, line 33 ¶ | skipping to change at page 1, line 33 ¶ | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on June 18, 2015. | This Internet-Draft will expire on December 17, 2015. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2014 IETF Trust and the persons identified as the | Copyright (c) 2015 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| skipping to change at page 2, line 15 ¶ | skipping to change at page 2, line 15 ¶ | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
| 1.1. Goals and Non-Goals . . . . . . . . . . . . . . . . . . . 3 | 1.1. Goals and Non-Goals . . . . . . . . . . . . . . . . . . . 3 | |||
| 1.2. Notational Conventions . . . . . . . . . . . . . . . . . 3 | 1.2. Notational Conventions . . . . . . . . . . . . . . . . . 3 | |||
| 2. Using HTTP URIs over TLS . . . . . . . . . . . . . . . . . . 3 | 2. Using HTTP URIs over TLS . . . . . . . . . . . . . . . . . . 3 | |||
| 3. Server Authentication . . . . . . . . . . . . . . . . . . . . 4 | 3. Server Authentication . . . . . . . . . . . . . . . . . . . . 4 | |||
| 4. Interaction with "https" URIs . . . . . . . . . . . . . . . . 4 | 4. Interaction with "https" URIs . . . . . . . . . . . . . . . . 4 | |||
| 5. Requiring Use of TLS . . . . . . . . . . . . . . . . . . . . 5 | 5. Requiring Use of TLS . . . . . . . . . . . . . . . . . . . . 5 | |||
| 5.1. The HTTP-TLS Header Field . . . . . . . . . . . . . . . . 5 | 5.1. The HTTP-TLS Header Field . . . . . . . . . . . . . . . . 5 | |||
| 5.2. Operational Considerations . . . . . . . . . . . . . . . 6 | 5.2. Operational Considerations . . . . . . . . . . . . . . . 7 | |||
| 6. Security Considerations . . . . . . . . . . . . . . . . . . . 7 | 6. Security Considerations . . . . . . . . . . . . . . . . . . . 7 | |||
| 6.1. Security Indicators . . . . . . . . . . . . . . . . . . . 7 | 6.1. Security Indicators . . . . . . . . . . . . . . . . . . . 7 | |||
| 6.2. Downgrade Attacks . . . . . . . . . . . . . . . . . . . . 7 | 6.2. Downgrade Attacks . . . . . . . . . . . . . . . . . . . . 7 | |||
| 6.3. Privacy Considerations . . . . . . . . . . . . . . . . . 7 | 6.3. Privacy Considerations . . . . . . . . . . . . . . . . . 8 | |||
| 6.4. Confusion Regarding Request Scheme . . . . . . . . . . . 8 | 6.4. Confusion Regarding Request Scheme . . . . . . . . . . . 8 | |||
| 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 8 | 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 7.1. Normative References . . . . . . . . . . . . . . . . . . 8 | 7.1. Normative References . . . . . . . . . . . . . . . . . . 8 | |||
| 7.2. Informative References . . . . . . . . . . . . . . . . . 9 | 7.2. Informative References . . . . . . . . . . . . . . . . . 9 | |||
| Appendix A. Acknowledgements . . . . . . . . . . . . . . . . . . 9 | Appendix A. Acknowledgements . . . . . . . . . . . . . . . . . . 9 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 9 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 1. Introduction | 1. Introduction | |||
| This document describes a use of HTTP Alternative Services | This document describes a use of HTTP Alternative Services | |||
| [I-D.ietf-httpbis-alt-svc] to decouple the URI scheme from the use | [I-D.ietf-httpbis-alt-svc] to decouple the URI scheme from the use | |||
| and configuration of underlying encryption, allowing a "http" URI to | and configuration of underlying encryption, allowing a "http" URI to | |||
| be accessed using TLS [RFC5246] opportunistically. | be accessed using TLS [RFC5246] opportunistically. | |||
| Currently, "https" URIs require acquiring and configuring a valid | Serving "https" URIs require acquiring and configuring a valid | |||
| certificate, which means that some deployments find supporting TLS | certificate, which means that some deployments find supporting TLS | |||
| difficult. Therefore, this document describes a usage model whereby | difficult. This document describes a usage model whereby sites can | |||
| sites can serve "http" URIs over TLS without being required to | serve "http" URIs over TLS without being required to support strong | |||
| support strong server authentication. | server authentication. | |||
| Opportunistic Security [I-D.dukhovni-opportunistic-security] does not | Opportunistic Security [RFC7435] does not provide the same guarantees | |||
| provide the same guarantees as using TLS with "https" URIs; it is | as using TLS with "https" URIs; it is vulnerable to active attacks, | |||
| vulnerable to active attacks, and does not change the security | and does not change the security context of the connection. | |||
| context of the connection. Normally, users will not be able to tell | Normally, users will not be able to tell that it is in use (i.e., | |||
| that it is in use (i.e., there will be no "lock icon"). | there will be no "lock icon"). | |||
| By its nature, this technique is vulnerable to active attacks. A | By its nature, this technique is vulnerable to active attacks. A | |||
| mechanism for partially mitigating them is described in Section 5. | mechanism for partially mitigating them is described in Section 5. | |||
| It does not offer the same level of protection as afforded to "https" | ||||
| URIs, but increases the likelihood that an active attack be detected. | ||||
| 1.1. Goals and Non-Goals | 1.1. Goals and Non-Goals | |||
| The immediate goal is to make the use of HTTP more robust in the face | The immediate goal is to make the use of HTTP more robust in the face | |||
| of pervasive passive monitoring [RFC7258]. | of pervasive passive monitoring [RFC7258]. | |||
| A secondary goal is to limit the potential for active attacks. It is | A secondary goal is to limit the potential for active attacks. It is | |||
| not intended to offer the same level of protection as afforded to | not intended to offer the same level of protection as afforded to | |||
| "https" URIs, but instead to increase the likelihood that an active | "https" URIs, but instead to increase the likelihood that an active | |||
| attack can be detected. | attack can be detected. | |||
| A final (but significant) goal is to provide for ease of | A final (but significant) goal is to provide for ease of | |||
| implementation, deployment and operation. This mechanism should have | implementation, deployment and operation. This mechanism is expected | |||
| a minimal impact upon performance, and should not require extensive | to have a minimal impact upon performance, and a trivial | |||
| administrative effort to configure. | administrative effort to configure. | |||
| 1.2. Notational Conventions | 1.2. Notational Conventions | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
| document are to be interpreted as described in [RFC2119]. | document are to be interpreted as described in [RFC2119]. | |||
| 2. Using HTTP URIs over TLS | 2. Using HTTP URIs over TLS | |||
| An origin server that supports the resolution of "http" URIs can | An origin server that supports the resolution of "http" URIs can | |||
| indicate support for this specification by providing an alternative | indicate support for this specification by providing an alternative | |||
| service advertisement [I-D.ietf-httpbis-alt-svc] for a protocol | service advertisement [I-D.ietf-httpbis-alt-svc] for a protocol | |||
| identifier that uses TLS, such as "h2" [I-D.ietf-httpbis-http2]. | identifier that uses TLS, such as "h2" [RFC7540]. | |||
| A client that receives such an advertisement MAY make future requests | A client that receives such an advertisement MAY make future requests | |||
| intended for the associated origin ([RFC6454]) to the identified | intended for the associated origin ([RFC6454]) to the identified | |||
| service (as specified by [I-D.ietf-httpbis-alt-svc]). | service (as specified by [I-D.ietf-httpbis-alt-svc]). | |||
| A client that places the importance of protection against passive | A client that places the importance of protection against passive | |||
| attacks over performance might choose to withhold requests until an | attacks over performance might choose to withhold requests until an | |||
| encrypted connection is available. However, if such a connection | encrypted connection is available. However, if such a connection | |||
| cannot be successfully established, the client MAY resume its use of | cannot be successfully established, the client can resume its use of | |||
| the cleartext connection. | the cleartext connection. | |||
| A client can also explicitly probe for an alternative service | A client can also explicitly probe for an alternative service | |||
| advertisement by sending a request that bears little or no sensitive | advertisement by sending a request that bears little or no sensitive | |||
| information, such as one with the OPTIONS method. Likewise, clients | information, such as one with the OPTIONS method. Likewise, clients | |||
| with existing alternative services information could make such a | with existing alternative services information could make such a | |||
| request before they expire, in order minimize the delays that might | request before they expire, in order minimize the delays that might | |||
| be incurred. | be incurred. | |||
| 3. Server Authentication | 3. Server Authentication | |||
| skipping to change at page 4, line 20 ¶ | skipping to change at page 4, line 20 ¶ | |||
| operational challenges. For these reasons, server authentication is | operational challenges. For these reasons, server authentication is | |||
| not mandatory for "http" URIs when using the mechanism described in | not mandatory for "http" URIs when using the mechanism described in | |||
| this specification. | this specification. | |||
| When connecting to an alternative service for an "http" URI, clients | When connecting to an alternative service for an "http" URI, clients | |||
| are not required to perform the server authentication procedure | are not required to perform the server authentication procedure | |||
| described in Section 3.1 of [RFC2818]. The server certificate, if | described in Section 3.1 of [RFC2818]. The server certificate, if | |||
| one is proffered by the alternative service, is not necessarily | one is proffered by the alternative service, is not necessarily | |||
| checked for validity, expiration, issuance by a trusted certificate | checked for validity, expiration, issuance by a trusted certificate | |||
| authority or matched against the name in the URI. Therefore, the | authority or matched against the name in the URI. Therefore, the | |||
| alternative service MAY provide any certificate, or even select TLS | alternative service can provide any certificate, or even select TLS | |||
| cipher suites that do not include authentication. | cipher suites that do not include authentication. | |||
| A client MAY perform additional checks on the offered certificate if | A client MAY perform additional checks on the offered certificate if | |||
| the server does not select an unauthenticated TLS cipher suite. This | the server does not select an unauthenticated TLS cipher suite. This | |||
| document doesn't define any such checks, though clients could be | document doesn't define any such checks, though clients could be | |||
| configured with a policy that defines what is acceptable. | configured with a policy that defines what is acceptable. | |||
| As stipulated by [I-D.ietf-httpbis-alt-svc], clients MUST NOT use | As stipulated by [I-D.ietf-httpbis-alt-svc], clients MUST NOT use | |||
| alternative services with a host other than the origin's, unless the | alternative services with a host other than the origin's, unless the | |||
| alternative service itself is strongly authenticated (as the origin's | alternative service itself is strongly authenticated (as the origin's | |||
| host); for example, using TLS with a certificate that validates as | host); for example, using TLS with a certificate that validates as | |||
| per [RFC2818]. | per [RFC2818]. | |||
| 4. Interaction with "https" URIs | 4. Interaction with "https" URIs | |||
| When using alternative services, both "http" and "https" URIs might | When using alternative services, requests for resources identified by | |||
| use the same connection, because HTTP/2 permits requests for multiple | both "http" and "https" URIs might use the same connection, because | |||
| origins on the same connection. | HTTP/2 permits requests for multiple origins on the same connection. | |||
| Since "https" URIs rely on server authentication, a connection that | Since "https" URIs rely on server authentication, a connection that | |||
| is initially created for "http" URIs without authenticating the | is initially created for "http" URIs without authenticating the | |||
| server cannot be used for "https" URIs until the server certificate | server cannot be used for "https" URIs until the server certificate | |||
| is successfully authenticated. Section 3.1 of [RFC2818] describes | is successfully authenticated. Section 3.1 of [RFC2818] describes | |||
| the basic mechanism, though the authentication considerations in | the basic mechanism, though the authentication considerations in | |||
| [I-D.ietf-httpbis-alt-svc] also apply. | [I-D.ietf-httpbis-alt-svc] also apply. | |||
| Connections that are established without any means of server | Connections that are established without any means of server | |||
| authentication (for instance, the purely anonymous TLS cipher | authentication (for instance, the purely anonymous TLS cipher | |||
| suites), cannot be used for "https" URIs. | suites), cannot be used for "https" URIs. | |||
| 5. Requiring Use of TLS | 5. Requiring Use of TLS | |||
| Editors' Note: this is a very rough take on an approach that would | Editors' Note: this is a very rough take on an approach that would | |||
| provide a limited form of protection against downgrade attack. It's | provide a limited form of protection against downgrade attack. It's | |||
| unclear at this point whether the additional effort (and modest | unclear at this point whether the additional effort (and modest | |||
| operational cost) is worthwhile. | operational cost) is worthwhile. | |||
| The mechanism described in this specification is trival to mount an | The mechanism described in this specification is trivial to mount an | |||
| active attack against, for two reasons: | active attack against, for two reasons: | |||
| o A client that doesn't perform authentication an easy victim of | o A client that doesn't perform authentication is an easy victim of | |||
| server impersonation, through man-in-the-middle attacks. | server impersonation, through man-in-the-middle attacks. | |||
| o A client that is willing to use cleartext to resolve the resource | o A client that is willing to use HTTP over cleartext to resolve the | |||
| will do so if access to any TLS-enabled alternative services is | resource will do so if access to any TLS-enabled alternative | |||
| blocked at the network layer. | services is blocked at the network layer. | |||
| Given that the primary goal of this specification is to prevent | Given that the primary goal of this specification is to prevent | |||
| passive attacks, these are not critical failings (especially | passive attacks, these are not critical failings (especially | |||
| considering the alternative - HTTP over cleartext). However, a | considering the alternative - HTTP over cleartext). However, a | |||
| modest form of protection against active attacks can be provided for | modest form of protection against active attacks can be provided for | |||
| clients on subsequent connections. | clients on subsequent connections. | |||
| When an alternative service is able to commit to providing service | When an alternative service is able to commit to providing service | |||
| for a particular origin over TLS for a bounded period of time, | for a particular origin over TLS for a bounded period of time, | |||
| clients can choose to rely upon its avilability, failing when it | clients can choose to rely upon its availability, failing when it | |||
| cannot be contacted. Effectively, this makes the choice to use a | cannot be contacted. Effectively, this makes the choice to use a | |||
| secured protocol "sticky" in the client. | secured protocol "sticky" in the client. | |||
| 5.1. The HTTP-TLS Header Field | 5.1. The HTTP-TLS Header Field | |||
| A alternative service can make this commitment by sending a "HTTP- | A alternative service can make this commitment by sending a "HTTP- | |||
| TLS" header field: | TLS" header field, described here using the '#' ABNF extension | |||
| defined in Section 7 of [RFC7230]: | ||||
| HTTP-TLS = 1#parameter | HTTP-TLS = 1#parameter | |||
| When it appears in a HTTP response from a strongly authenticated | When it appears in a HTTP response from a strongly authenticated | |||
| alternative service, this header field indicates that the | alternative service, this header field indicates that the | |||
| availability of the origin through TLS-protected alternative services | availability of the origin through TLS-protected alternative services | |||
| is "sticky", and that the client MUST NOT fall back to cleartext | is "sticky", and that the client MUST NOT fall back to cleartext | |||
| protocols while this information is considered fresh. | protocols while this information is considered fresh. | |||
| For example: | For example: | |||
| GET /index.html HTTP/1.1 | GET /index.html HTTP/1.1 | |||
| Host: example.com | Host: example.com | |||
| HTTP/1.1 200 OK | HTTP/1.1 200 OK | |||
| Content-Type: text/html | Content-Type: text/html | |||
| Cache-Control: 600 | Cache-Control: max-age=600 | |||
| Age: 30 | Age: 30 | |||
| Date: Thu, 1 May 2014 16:20:09 GMT | Date: Thu, 1 May 2014 16:20:09 GMT | |||
| HTTP-TLS: ma=3600 | HTTP-TLS: ma=3600 | |||
| This header field creates a commitment from the origin [RFC6454] of | This header field creates a commitment from the origin [RFC6454] of | |||
| the associated resource (in the example, "http://example.com"). For | the associated resource (in the example, "http://example.com"). For | |||
| the duration of the commitment, clients SHOULD strongly authenticate | the duration of the commitment, clients SHOULD strongly authenticate | |||
| the server for all subsequent requests made to that origin, though | the server for all subsequent requests made to that origin, though | |||
| this creates some risks for clients Section 5.2. | this creates some risks for clients (see Section 5.2). | |||
| Authentication for HTTP over TLS is described in Section 3.1 of | Authentication for HTTP over TLS is described in Section 3.1 of | |||
| [RFC2818], noting the additional requirements in | [RFC2818], noting the additional requirements in Section 2.1 of | |||
| [I-D.ietf-httpbis-alt-svc]. The header field MUST be ignored if | [I-D.ietf-httpbis-alt-svc]. The header field MUST be ignored if | |||
| strong authentication fails; otherwise, an attacker could create a | strong authentication fails; otherwise, an attacker could create a | |||
| persistent denial of service by falsifying a commitment. | persistent denial of service by falsifying a commitment. | |||
| The commitment to use authenticated TLS persists for a period | The commitment to use authenticated TLS persists for a period | |||
| determined by the value of the "ma" parameter. See Section 4.2.3 of | determined by the value of the "ma" parameter. See Section 4.2.3 of | |||
| [RFC7234] for details of determining response age. | [RFC7234] for details of determining response age. | |||
| ma-parameter = delta-seconds | ma-parameter = delta-seconds | |||
| The commitment made by the "HTTP-TLS" header field applies only to | The commitment made by the "HTTP-TLS" header field applies only to | |||
| the origin of the resource that generates the "HTTP-TLS" header | the origin of the resource that generates the "HTTP-TLS" header | |||
| field. Requests for an origin that has a persisted, unexpired value | field. | |||
| for "HTTP-TLS" MUST fail if they cannot be made over an authenticated | ||||
| TLS connection. | Requests for an origin that has a persisted, unexpired value for | |||
| "HTTP-TLS" MUST fail if they cannot be made over an authenticated TLS | ||||
| connection. | ||||
| Note that the commitment is not bound to a particular alternative | Note that the commitment is not bound to a particular alternative | |||
| service. Clients SHOULD use alternative services that they become | service. Clients SHOULD use alternative services that they become | |||
| aware of. However, clients MUST NOT use an unauthenticated | aware of. However, clients MUST NOT use an unauthenticated | |||
| alternative service for an origin with this commitment. Where there | alternative service for an origin with this commitment. Where there | |||
| is an active commitment, clients MAY instead ignore advertisements | is an active commitment, clients MAY instead ignore advertisements | |||
| for unsecured alternatives services. | for unsecured alternatives services. | |||
| 5.2. Operational Considerations | 5.2. Operational Considerations | |||
| To avoid situations where a persisted value of "HTTP-TLS" causes a | To avoid situations where a persisted value of "HTTP-TLS" causes a | |||
| client to be unable to contact a site, clients SHOULD limit the time | client to be unable to contact a site, clients SHOULD limit the time | |||
| that a value is persisted for a given origin. A lower limit might be | that a value is persisted for a given origin. A lower limit might be | |||
| appropriate for initial observations of "HTTP-TLS"; the certainty | appropriate for initial observations of "HTTP-TLS"; the certainty | |||
| that a site has set a correct value - and the corresponding limit on | that a site has set a correct value - and the corresponding limit on | |||
| persistence - can increase as the value is seen more over time. | persistence - can increase as the value is seen more over time. | |||
| Once a server has indicated that it will support authenticated TLS, a | Once a server has indicated that it will support authenticated TLS, a | |||
| client MAY use key pinning [I-D.ietf-websec-key-pinning] or any other | client MAY use key pinning [RFC7469] or any other mechanism that | |||
| mechanism that would otherwise be restricted to use with "https" | would otherwise be restricted to use with "https" URIs, provided that | |||
| URIs, provided that the mechanism can be restricted to a single HTTP | the mechanism can be restricted to a single HTTP origin. | |||
| origin. | ||||
| 6. Security Considerations | 6. Security Considerations | |||
| 6.1. Security Indicators | 6.1. Security Indicators | |||
| User Agents MUST NOT provide any special security indicia when an | User Agents MUST NOT provide any special security indicia when an | |||
| "http" resource is acquired using TLS. In particular, indicators | "http" resource is acquired using TLS. In particular, indicators | |||
| that might suggest the same level of security as "https" MUST NOT be | that might suggest the same level of security as "https" MUST NOT be | |||
| used (e.g., using a "lock device"). | used (e.g., using a "lock device"). | |||
| skipping to change at page 8, line 13 ¶ | skipping to change at page 8, line 21 ¶ | |||
| based state (i.e., cookies). | based state (i.e., cookies). | |||
| 6.4. Confusion Regarding Request Scheme | 6.4. Confusion Regarding Request Scheme | |||
| Many existing HTTP/1.1 implementations use the presence or absence of | Many existing HTTP/1.1 implementations use the presence or absence of | |||
| TLS in the stack to determine whether requests are for "http" or | TLS in the stack to determine whether requests are for "http" or | |||
| "https" resources. This is necessary in many cases because the most | "https" resources. This is necessary in many cases because the most | |||
| common form of an HTTP/1.1 request does not carry an explicit | common form of an HTTP/1.1 request does not carry an explicit | |||
| indication of the URI scheme. | indication of the URI scheme. | |||
| HTTP/1.1 MUST NOT be sent over HTTP/1.1 or earlier versions of the | HTTP/1.1 MUST NOT be used for opportunistically secured requests. | |||
| protocol. Opportunistically secured HTTP requests MUST include an | ||||
| explicit scheme identifier. | ||||
| 7. References | 7. References | |||
| 7.1. Normative References | 7.1. Normative References | |||
| [I-D.ietf-httpbis-alt-svc] | [I-D.ietf-httpbis-alt-svc] | |||
| Nottingham, M., McManus, P., and J. Reschke, "HTTP | mnot, m., McManus, P., and J. Reschke, "HTTP Alternative | |||
| Alternative Services", draft-ietf-httpbis-alt-svc-05 (work | Services", draft-ietf-httpbis-alt-svc-07 (work in | |||
| in progress), December 2014. | progress), May 2015. | |||
| [I-D.ietf-httpbis-http2] | ||||
| Belshe, M., Peon, R., and M. Thomson, "Hypertext Transfer | ||||
| Protocol version 2", draft-ietf-httpbis-http2-16 (work in | ||||
| progress), November 2014. | ||||
| [I-D.ietf-websec-key-pinning] | ||||
| Evans, C., Palmer, C., and R. Sleevi, "Public Key Pinning | ||||
| Extension for HTTP", draft-ietf-websec-key-pinning-21 | ||||
| (work in progress), October 2014. | ||||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, March 1997. | Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/ | |||
| RFC2119, March 1997, | ||||
| <http://www.rfc-editor.org/info/rfc2119>. | ||||
| [RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, May 2000. | [RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, DOI 10.17487/ | |||
| RFC2818, May 2000, | ||||
| <http://www.rfc-editor.org/info/rfc2818>. | ||||
| [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security | [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security | |||
| (TLS) Protocol Version 1.2", RFC 5246, August 2008. | (TLS) Protocol Version 1.2", RFC 5246, DOI 10.17487/ | |||
| RFC5246, August 2008, | ||||
| <http://www.rfc-editor.org/info/rfc5246>. | ||||
| [RFC6454] Barth, A., "The Web Origin Concept", RFC 6454, December | [RFC6454] Barth, A., "The Web Origin Concept", RFC 6454, DOI 10 | |||
| 2011. | .17487/RFC6454, December 2011, | |||
| <http://www.rfc-editor.org/info/rfc6454>. | ||||
| [RFC7230] Fielding, R. and J. Reschke, "Hypertext Transfer Protocol | ||||
| (HTTP/1.1): Message Syntax and Routing", RFC 7230, DOI 10 | ||||
| .17487/RFC7230, June 2014, | ||||
| <http://www.rfc-editor.org/info/rfc7230>. | ||||
| [RFC7234] Fielding, R., Nottingham, M., and J. Reschke, "Hypertext | [RFC7234] Fielding, R., Nottingham, M., and J. Reschke, "Hypertext | |||
| Transfer Protocol (HTTP/1.1): Caching", RFC 7234, June | Transfer Protocol (HTTP/1.1): Caching", RFC 7234, DOI 10 | |||
| 2014. | .17487/RFC7234, June 2014, | |||
| <http://www.rfc-editor.org/info/rfc7234>. | ||||
| 7.2. Informative References | [RFC7469] Evans, C., Palmer, C., and R. Sleevi, "Public Key Pinning | |||
| Extension for HTTP", RFC 7469, DOI 10.17487/RFC7469, April | ||||
| 2015, <http://www.rfc-editor.org/info/rfc7469>. | ||||
| [I-D.dukhovni-opportunistic-security] | [RFC7540] Belshe, M., Peon, R., and M. Thomson, "Hypertext Transfer | |||
| Dukhovni, V., "Opportunistic Security: Some Protection | Protocol Version 2 (HTTP/2)", RFC 7540, DOI 10.17487/ | |||
| Most of the Time", draft-dukhovni-opportunistic- | RFC7540, May 2015, | |||
| security-06 (work in progress), November 2014. | <http://www.rfc-editor.org/info/rfc7540>. | |||
| 7.2. Informative References | ||||
| [RFC7258] Farrell, S. and H. Tschofenig, "Pervasive Monitoring Is an | [RFC7258] Farrell, S. and H. Tschofenig, "Pervasive Monitoring Is an | |||
| Attack", BCP 188, RFC 7258, May 2014. | Attack", BCP 188, RFC 7258, DOI 10.17487/RFC7258, May | |||
| 2014, <http://www.rfc-editor.org/info/rfc7258>. | ||||
| [RFC7435] Dukhovni, V., "Opportunistic Security: Some Protection | ||||
| Most of the Time", RFC 7435, DOI 10.17487/RFC7435, | ||||
| December 2014, <http://www.rfc-editor.org/info/rfc7435>. | ||||
| Appendix A. Acknowledgements | Appendix A. Acknowledgements | |||
| Thanks to Patrick McManus, Eliot Lear, Stephen Farrell, Guy Podjarny, | Thanks to Patrick McManus, Eliot Lear, Stephen Farrell, Guy Podjarny, | |||
| Stephen Ludin, Erik Nygren, Paul Hoffman, Adam Langley, Eric Rescorla | Stephen Ludin, Erik Nygren, Paul Hoffman, Adam Langley, Eric Rescorla | |||
| and Richard Barnes for their feedback and suggestions. | and Richard Barnes for their feedback and suggestions. | |||
| Authors' Addresses | Authors' Addresses | |||
| Mark Nottingham | Mark Nottingham | |||
| End of changes. 36 change blocks. | ||||
| 73 lines changed or deleted | 83 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||