I reviewed the document draft-ietf-sip-domain-certs-06 in general
and for its operational impact.
--
Review Summary:
Intended status: Proposed Standard
This document describes how to construct and interpret certain
information in a X.509 PKIX-compliant certificate for use in a
Session Initiation Protocol (SIP) over Transport Layer Security (TLS)
connection. More specifically, this document describes how to encode
and extract the identity of a SIP domain in a certificate and how to
use that identity for SIP domain authentication. As such, this
document is relevant both to implementors of SIP and to issuers of
certificates.
Is the document readable?
Yes.
Does it contain nits?
idnits 2.12.02
tmp/draft-ietf-sip-domain-certs-06.txt:
Checking boilerplate required by RFC 5378 and the IETF Trust (see
http://trustee.ietf.org/license-info):
----------------------------------------------------------------------------
== You're using the IETF Trust Provisions' Section 6.b License Notice from
12 Sep 2009 rather than the newer Notice from 28 Dec 2009. (See
http://trustee.ietf.org/license-info/)
Checking nits according to http://www.ietf.org/id-info/1id-guidelines.txt:
----------------------------------------------------------------------------
No issues found here.
Checking nits according to http://www.ietf.org/id-info/checklist :
----------------------------------------------------------------------------
== The 'Updates: ' line in the draft header should list only the _numbers_
of the RFCs which will be updated by this document (if approved); it
should not include the word 'RFC' in the list.
Miscellaneous warnings:
----------------------------------------------------------------------------
== The document date (March 22, 2010) is 19 days in the past. Is this
intentional?
Checking references for intended status: Proposed Standard
----------------------------------------------------------------------------
(See RFCs 3967 and 4897 for information about using normative references
to lower-maturity documents in RFCs)
** Obsolete normative reference: RFC 4366 (ref. '4') (Obsoleted by RFC 5246)
== Outdated reference: A later version (-04) exists of
draft-drage-sip-essential-correction-03
Summary: 1 error (**), 4 warnings (==), 0 comments (--).
Is the document class appropriate?
Yes.
Is the problem well stated?
Yes. Section 3 describes what the extent of guidance provided in RFC 3261 with
respect to identity placement, as well as issues that have been encountered,
not just within SIP, but also within other usages:
With respect to certificates for TLS, RFC3261 (Section 26.3.1) says:
"Proxy servers, redirect servers and registrars SHOULD possess a
site certificate whose subject corresponds to their canonical
hostname."
. . .
However, the lack of
guidelines in RFC3261 on exactly where to put identities -- in the
subjectAltName field or carried as a Common Name (CN) in the Subject
field -- of a X.509 certificates created ambiguities. Following the
accepted practice of the time, legacy X.509 certificates were allowed
to store the identity in the CN field of the certificate instead of
the currently specified subjectAltName extension. Lack of further
guidelines on how to interpret the identities, which identity to
choose if more than one identity is present in the certificate, the
behavior when multiple identities with different schemes were present
in the certificate, etc. lead to ambiguities when attempting to
interpret the certificate in a uniform manner for TLS use.
Is the problem really a problem?
Yes.
Does the document consider existing solutions?
Not sufficiently.
RFC 3261 was published in June 2002, and RFC 3280 was published in April 2002,
nearly eight years ago.
In the meantime, thousands of SIP proxies and servers have been deployed
utilizing TLS along with certificate authentication.
Given the extensive existing deployment, backward compatibility is a major
issue. Since RFC 3261 did not provide much guidance, implementers typically
followed the general guidance in RFC 3280.
The best advice for interoperability is "be liberal in what you accept,
conservative in what you send." The document
does not always follow this advice. For example, Section 6 of the document
allows SSPs to place the identity in either
the subjectAltName or Subject fields (e.g. liberal in what you send):
When assigning certificates to authoritative servers, a SIP service
provider MUST ensure that the SIP domain used to reach the server
appears as an identity in the subjectAltName field, or for
compatibility with existing certificates, the Subject field of the
certificate.
Yet at the same time, Section 7.1 makes acceptance of identities in the CN
field optional (e.g. conservative in what you accept):
2. If and only if the subjectAltName does not appear in the
certificate, the implementation MAY examine the CN field of the
certificate. If a valid DNS name is found there, the
implementation MAY accept this value as a SIP domain identity.
Accepting a DNS name in the CN value is allowed for backward
compatibility, but when constructing new certificates, consider
the advantages of using the subjectAltName extension field (see
Section 6).
IMHO, a better prescription would be to require that implementations be capable
of accepting identities in any of the permitted formats (though a given
deployment might choose to further constrain identity placement by policy).
Does the solution break existing technology?
Yes. The prescriptions in this document could result in certificates whose
formats are acceptable for issuance not being accepted by other
implementations. Given the scope of existing deployments, this is problematic.
Also, there are also a number of other backward compatibility issues.
Within Section 4:
Routing in SIP is performed by having the client execute RFC 3263 [8]
procedures on a URI, called the "Application Unique String (AUS)
(c.f. Section 8 of RFC 3263 [8]). These procedures take as input a
SIP AUS (the SIP URI), extract the domain portion of that URI for use
as a lookup key, and query the Domain Name Service (DNS) to obtain an
ordered set of one or more IP addresses with a port number and
transport corresponding to each IP address in the set (the "Expected
Output"). If the transport indicates the use of TLS, then a TLS
connection is opened to the server on a specific IP address and port.
The server presents an X.509 certificate to the client for
verification as part of the initial TLS handshake.
The client extracts identifiers from the Subject and any
subjectAltName extension in the certificate (see Section 7.1) and
compares these values to the domain part extracted from the original
sip URI (the AUS). If any identifier match is found, the server is
considered to be authenticated and subsequent signaling can now
proceed over the TLS connection. Matching rules for X.509
certificates and the normative behavior for clients is specified in
Section 7.3.
[BA] Where an SRV or NAPTR RR is used, it is possible for a domain to be
delegated
so that the matching process described above would fail, yet the delegation
would still be legitimate (e.g. the SRV/NAPTR RRs could be signed via DNSSEC,
and might point to an FQDN that matches the identifier extracted from the
certificate, rather than the FQDN in the SIP URI.
Within Section 7.2:
Implemenations MUST NOT match any form of wildcard, such as a
[BA] Implemenations -> Implementations
leading "." or "*." with any other DNS label or sequence of
labels. For example, "*.example.com" matches only
"*.example.com" but not "foo.example.com". Similarly,
".example.com" matches only ".example.com", and does not match
"foo.example.com."
RFC 2818 [7] (HTTP over TLS) allows the dNSName component to
contain a wildcard; e.g., "DNS:*.example.com". RFC 5280
[6], while not disallowing this explicitly, leaves the
interpretation of wildcards to the individual specification.
RFC 3261 [2] does not provide any guidelines on the presence
of wildcards in certificates. Through the rule above, this
document prohibits such wildcards in certificates for SIP
domains.
[BA] At this point, 8 years after the issuance of RFC 3261, wildcards are widely
deployed within SIP certificates. It is therefore not appropriate to prohibit
them.
Does the solution preclude future activity?
No.
Is the solution sufficiently configurable?
No. I believe that the specification should make a distinction between what
implementers need to support and the policies that a given deployment chooses
to implement. It is one thing, for a deployment to decide that to implement a
given policy with respect to identity placement; it is another things for an
implementation to be incapable of accepting identities in formats that are
permitted by the specification.
Can performance be measured? How?
This document is primarily about certificate formats not performance. However,
performance of TLS implementations can presumably be measured utilizing
procedures developed for this purpose.
Does the solution scale well?
Yes.
Is Security Management discussed?
No. That topic is outside the scope of this document.
_______________________________________________
Ietf mailing list
Ietf(_at_)ietf(_dot_)org
https://www.ietf.org/mailman/listinfo/ietf