]> git.saurik.com Git - apple/security.git/blob - Security/libsecurity_ssl/README
Security-57031.1.35.tar.gz
[apple/security.git] / Security / libsecurity_ssl / README
1 SecureTransport notes
2 14 Feb 2002 dmitch
3
4 -- Server-side cert usage and configuration is highly application dependent.
5
6 -- Although the use of server-initiated key exchange is optional under
7 the SSL3 spec, Netscape browsers (4.61 through 4.75) will not tolerate
8 this operation unless an exportable cipher is selected. The current
9 configuration of the library will attempt to perform server-initiated
10 key exchange if and only if the app has specified an encryption
11 certificate via SSLSetEncryptionCertificate(). Thus, in a config
12 which is required to work with Netscape browsers, if non-export
13 (i.e., strong) ciphers are to be supported, encryption certs
14 must NOT be specified, and the server cert specified in SSLSetCertificate()
15 must be capable of both signing and encryption. This applies to the underlying
16 keys as well.
17
18 -- On top of that, even in a situation where Netscape will allow a server-
19 initiated key exchange (export cipher, app specifies both kinds of certs),
20 Netscape will abort if the *signing-only* cert (specified in
21 SSLSetCertificate()) is not capable of encryption! In this case that cert
22 is never even used for encryption. But that is the real world.
23
24 Thus, to work with Netscape browsers with export-grade ciphers, the main
25 signing cert still has to be capable of encryption, even if the app specifies
26 a separate encryption cert.
27
28 -- The SSL_SERVER_KEYEXCH_HACK flag, in sslBuildFlags.h, was previously used
29 to work around the above-mentioned Netscape bug; when this flag is true,
30 server-initiated key exchange is only performed if an encrypting cert is
31 specified AND an export-grade cipher is selected. The current config has
32 this flag set false.
33
34 -- SSL2 server-side operation requires the presence of a cert and key which is
35 capable of encryption (not signing). One cert, specified in SSLSetCertificate(),
36 can support both SSL2 and SSL3 if and only if it is capable of both signing
37 and encryption.
38
39 -- Server mode operation with IE is fully functional and reliable. There is a
40 bug in IE which is worked around in SSLEncodeServerHello(), in hdskhelo.c.
41 See comments there. Tested with IE 5.0 on OS 9 and 5.1.3 on OS X.
42
43 -- Server untested with Windows clients.
44
45