RE: WG Last Call: HTTP over TLS (draft-ietf-tls-https-02.txt)
Rene Eberhard <[email protected]> Thu, 5 Aug 1999 08:44:27 -0400
| Newsgroups | gmane.ietf.apps-tls |
|---|---|
| Message-ID | <C7657405A7D6D21185950008C724736504A789@schzmxs1.europe.entrust.com> |
Hi
Below a few comments to draft-ietf-tls-https-02.txt.
2.2 Connection closure
1. The closure behavior is already described in RFC2246.
I'd only refer to the appropriate section in RFC2246.
Definitions such as "premature close" are welcome.
2. >As specified in [TLS], any implementation which receives a connection
>close without first receiving a valid closure alert (a "premature
>close") MUST NOT reuse that session.
It is unclear whether the "Connection: close" as defined in RFC2068 or
a connection termination is considered. The question is whether a
'close'
could be received. In my opinion a HTTP client/server can detect a
close
but not receive.
2.2.1. Client Behavior
1. > Because HTTP uses connection closure to signal end of server data,...
'HTTP' refers to RFC2068. The default behavior of HTTP/1.1 is keep
alive.
Otherwise a 'Connection: Close' header must be added.
2. > client implementations MUST treat any premature closes as errors and
> the data received as potentially truncated.
That means that a HTTP client behaves different using TCP or TLS.
That's contrariety to section '2. HTTP Over TLS'.
In general a HTTP client using TCP can not detect a premature close
without having the content length info.
3. > Clients MUST send a closure alert before closing the connection.
It's up to the TLS layer whether it sends a close_notify message
or not. For the HTTP client the underlying layer should be transparent
and
thus a closure call to that layer looks equal either using TCP or TLS.
Of course a TLS layer should send the close_notify message before
closing
its underlying layer (TCP). But this can not be forced especially for
HTTP
clients.
2.4. URI Format
In the real world this example always fails. Why don't we
use something like https://abc.com/~smith/home.html or
https://abc.com:7443/~smith/home.html?
3.2. Client Identity
The server identity is well defined. We have to consider that, in general,
the purpose of identifying a server is different than identifying a
client.
Client identifying is used to identify a person while server identifying
is used to identify a machine. Thus the matching rules as described in 3.1
are not applicable.
Proposal: Introduction of TLS related HTTP variables.
-----------------------------------------------------
This draft is very useful to combine HTTP and TLS. HTTP is an
application-level protocol independent of the underlying
transport layer. Nevertheless it could be useful for applications
(e.g. servlet, cgi-bin, application server, ...) to gather TLS
related information to behave accordingly. Using such a mechanism
client authentication could be done over TLS and could be used on
application level.
Operational area:
1. A TLS HTTP gateway could add TLS related variables
into the HTTP stream which is passed to a server behind.
2. A TLS HTTP server could add TLS related variables
into the environment which is passed to an application (e.g. cgi).
To illustrate the idea a few examples below. Of course this idea needs
further discussions. The variables are encoded as described in RFC2068
section 2.2.
- TLS_SERVER_CERT_ISSUER_DN:
/C=CH/SP=Zurich/L=Wallisellen/O=TheO/OU=TheOU/CN=TheIssuerCN
- TLS_SERVER_CERT_SUBJECT_DN:
/C=CH/SP=Zurich/L=Wallisellen/O=TheO/OU=TheOU/CN=www.server.xx
- TLS_CLIENT_CERT_ISSUER_DN:
/C=CH/SP=Zurich/L=Wallisellen/O=TheO/OU=TheOU/CN=TheIssuerCN
- TLS_CLIENT_CERT_SUBJECT_DN:
/C=CH/SP=Zurich/L=Wallisellen/O=TheO/OU=TheOU/CN=Rene Eberhard
- TLS_SERVER_CERT_PEM_ENCODED: PEM encoded server cert
- TLS_CLIENT_CERT_PEM_ENCODED: PEM encoded client cert
- TLS_SERVER_CERT_TYPE: RSA_RSA
- TLS_CLIENT_CERT_TYPE: DSA_RSA
- TLS_SERVER_KEYEXCHANGE_LENGTH: 1024
- TLS_CIPHERSUITE: TLS_RSA_WITH_IDEA_CBC_SHA
- TLS_IS_EXPORTABLE: FALSE
- TLS_IS_CLIENT_AUTHENTICATED: TRUE
Regards Rene