[jdev] cert handling in xmpp *client* implementations
Peter Saint-Andre
stpeter at jabber.org
Wed May 24 16:51:53 CDT 2006
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Peter Saint-Andre wrote:
> Speaking of cert handling, how do jabber/xmpp clients currently handle
> server certificates? One approach would be to use the existing Mozilla
> NSS store, which is on Linux distros and even many Windows distros. But
> it would be good for clients to "do the right thing" in handling the
> certs for jabber/xmpp servers (I guess that would mean following best
> practices derived from the browser and email client markets).
>
> Perhaps it would be good to document such best practices? Section 14.2
> of RFC 3920 talks about this, but the text there may be a bit opaque for
> many client developers...
BTW, Section 14.2 saith:
******
14.2. Certificate Validation
When an XMPP peer communicates with another peer securely, it MUST
validate the peer's certificate. There are three possible cases:
Case #1: The peer contains an End Entity certificate which appears to
be certified by a chain of certificates terminating in a trust
anchor (as described in Section 6.1 of [X509]).
Case #2: The peer certificate is certified by a Certificate Authority
not known to the validating peer.
Case #3: The peer certificate is self-signed.
In Case #1, the validating peer MUST do one of two things:
1. Verify the peer certificate according to the rules of [X509].
The certificate SHOULD then be checked against the expected
identity of the peer following the rules described in [HTTP-TLS],
except that a subjectAltName extension of type "xmpp" MUST be
used as the identity if present. If one of these checks fails,
user-oriented clients MUST either notify the user (clients MAY
give the user the opportunity to continue with the connection in
any case) or terminate the connection with a bad certificate
error. Automated clients SHOULD terminate the connection (with a
bad certificate error) and log the error to an appropriate audit
log. Automated clients MAY provide a configuration setting that
disables this check, but MUST provide a setting that enables it.
2. The peer SHOULD show the certificate to a user for approval,
including the entire certificate chain. The peer MUST cache the
certificate (or some non-forgeable representation such as a
hash). In future connections, the peer MUST verify that the same
certificate was presented and MUST notify the user if it has
changed.
In Case #2 and Case #3, implementations SHOULD act as in (2) above.
******
/psa
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (Darwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iD8DBQFEdNV4NF1RSzyt3NURAm0aAKCXf4OUki0XS6FQswR4/Za3yd+WOgCfWBZb
fFk9N+8alg3Bf7GOJvB0faA=
=2qkD
-----END PGP SIGNATURE-----
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 3641 bytes
Desc: S/MIME Cryptographic Signature
URL: <https://www.jabber.org/jdev/attachments/20060524/6354dede/attachment-0002.bin>
More information about the JDev
mailing list