Fix wrong information with respect to CAs listed to the client
(follows from technical discussion with Amit Chopra <amitc@pspl.co.in>).
This commit is contained in:
parent
d349c5f8fd
commit
26c329cd84
@ -33,10 +33,6 @@ which can be used e.g. for descriptions of the certificates.
|
|||||||
The B<CAfile> is processed on execution of the SSL_CTX_load_verify_locations()
|
The B<CAfile> is processed on execution of the SSL_CTX_load_verify_locations()
|
||||||
function.
|
function.
|
||||||
|
|
||||||
If on an TLS/SSL server no special setting is performed using *client_CA_list()
|
|
||||||
functions, the certificates contained in B<CAfile> are listed to the client
|
|
||||||
as available CAs during the TLS/SSL handshake.
|
|
||||||
|
|
||||||
If B<CApath> is not NULL, it points to a directory containing CA certificates
|
If B<CApath> is not NULL, it points to a directory containing CA certificates
|
||||||
in PEM format. The files each contain one CA certificate. The files are
|
in PEM format. The files each contain one CA certificate. The files are
|
||||||
looked up by the CA subject name hash value, which must hence be available.
|
looked up by the CA subject name hash value, which must hence be available.
|
||||||
@ -50,9 +46,6 @@ The certificates in B<CApath> are only looked up when required, e.g. when
|
|||||||
building the certificate chain or when actually performing the verification
|
building the certificate chain or when actually performing the verification
|
||||||
of a peer certificate.
|
of a peer certificate.
|
||||||
|
|
||||||
On a server, the certificates in B<CApath> are not listed as available
|
|
||||||
CA certificates to a client during a TLS/SSL handshake.
|
|
||||||
|
|
||||||
When looking up CA certificates, the OpenSSL library will first search the
|
When looking up CA certificates, the OpenSSL library will first search the
|
||||||
certificates in B<CAfile>, then those in B<CApath>. Certificate matching
|
certificates in B<CAfile>, then those in B<CApath>. Certificate matching
|
||||||
is done based on the subject name, the key identifier (if present), and the
|
is done based on the subject name, the key identifier (if present), and the
|
||||||
@ -62,6 +55,13 @@ matching the parameters is found, the verification process will be performed;
|
|||||||
no other certificates for the same parameters will be searched in case of
|
no other certificates for the same parameters will be searched in case of
|
||||||
failure.
|
failure.
|
||||||
|
|
||||||
|
In server mode, when requesting a client certificate, the server must send
|
||||||
|
the list of CAs of which it will accept client certificates. This list
|
||||||
|
is not influenced by the contents of B<CAfile> or B<CApath> and must
|
||||||
|
explicitely be set using the
|
||||||
|
L<SSL_CTX_set_client_CA_list(3)|SSL_CTX_set_client_CA_list(3)>
|
||||||
|
family of functions.
|
||||||
|
|
||||||
When building its own certificate chain, an OpenSSL client/server will
|
When building its own certificate chain, an OpenSSL client/server will
|
||||||
try to fill in missing certificates from B<CAfile>/B<CApath>, if the
|
try to fill in missing certificates from B<CAfile>/B<CApath>, if the
|
||||||
certificate chain was not explicitly specified (see
|
certificate chain was not explicitly specified (see
|
||||||
|
@ -36,25 +36,23 @@ the chosen B<ssl>, overriding the setting valid for B<ssl>'s SSL_CTX object.
|
|||||||
|
|
||||||
When a TLS/SSL server requests a client certificate (see
|
When a TLS/SSL server requests a client certificate (see
|
||||||
B<SSL_CTX_set_verify_options()>), it sends a list of CAs, for which
|
B<SSL_CTX_set_verify_options()>), it sends a list of CAs, for which
|
||||||
it will accept certificates, to the client. If no special list is provided,
|
it will accept certificates, to the client.
|
||||||
the CAs available using the B<CAfile> option in
|
|
||||||
L<SSL_CTX_load_verify_locations(3)|SSL_CTX_load_verify_locations(3)>
|
|
||||||
are sent.
|
|
||||||
|
|
||||||
This list can be explicitly set using the SSL_CTX_set_client_CA_list() for
|
This list must explicitly be set using SSL_CTX_set_client_CA_list() for
|
||||||
B<ctx> and SSL_set_client_CA_list() for the specific B<ssl>. The list
|
B<ctx> and SSL_set_client_CA_list() for the specific B<ssl>. The list
|
||||||
specified overrides the previous setting. The CAs listed do not become
|
specified overrides the previous setting. The CAs listed do not become
|
||||||
trusted (B<list> only contains the names, not the complete certificates); use
|
trusted (B<list> only contains the names, not the complete certificates); use
|
||||||
L<SSL_CTX_load_verify_locations(3)|SSL_CTX_load_verify_locations(3)>
|
L<SSL_CTX_load_verify_locations(3)|SSL_CTX_load_verify_locations(3)>
|
||||||
to additionally load them for verification.
|
to additionally load them for verification.
|
||||||
|
|
||||||
|
If the list of acceptable CAs is compiled in a file, the
|
||||||
|
L<SSL_load_client_CA_file(3)|SSL_load_client_CA_file(3)>
|
||||||
|
function can be used to help importing the necessary data.
|
||||||
|
|
||||||
SSL_CTX_add_client_CA() and SSL_add_client_CA() can be used to add additional
|
SSL_CTX_add_client_CA() and SSL_add_client_CA() can be used to add additional
|
||||||
items the list of client CAs. If no list was specified before using
|
items the list of client CAs. If no list was specified before using
|
||||||
SSL_CTX_set_client_CA_list() or SSL_set_client_CA_list(), a new client
|
SSL_CTX_set_client_CA_list() or SSL_set_client_CA_list(), a new client
|
||||||
CA list for B<ctx> or B<ssl> (as appropriate) is opened. The CAs implicitly
|
CA list for B<ctx> or B<ssl> (as appropriate) is opened.
|
||||||
specified using
|
|
||||||
L<SSL_CTX_load_verify_locations(3)|SSL_CTX_load_verify_locations(3)>
|
|
||||||
are no longer used automatically.
|
|
||||||
|
|
||||||
These functions are only useful for TLS/SSL servers.
|
These functions are only useful for TLS/SSL servers.
|
||||||
|
|
||||||
@ -80,11 +78,17 @@ to find out the reason.
|
|||||||
|
|
||||||
=back
|
=back
|
||||||
|
|
||||||
|
=head1 EXAMPLES
|
||||||
|
|
||||||
|
Scan all certificates in B<CAfile> and list them as acceptable CAs:
|
||||||
|
|
||||||
|
SSL_CTX_set_client_CA_list(ctx,SSL_load_client_CA_file(CAfile));
|
||||||
|
|
||||||
=head1 SEE ALSO
|
=head1 SEE ALSO
|
||||||
|
|
||||||
L<ssl(3)|ssl(3)>,
|
L<ssl(3)|ssl(3)>,
|
||||||
L<SSL_get_client_CA_list(3)|SSL_get_client_CA_list(3)>,
|
L<SSL_get_client_CA_list(3)|SSL_get_client_CA_list(3)>,
|
||||||
L<SSL_load_client_CA_file(3)|SSL_load_client_CA_file(3)>
|
L<SSL_load_client_CA_file(3)|SSL_load_client_CA_file(3)>,
|
||||||
L<SSL_CTX_load_verify_locations(3)|SSL_CTX_load_verify_locations(3)>
|
L<SSL_CTX_load_verify_locations(3)|SSL_CTX_load_verify_locations(3)>
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
Loading…
x
Reference in New Issue
Block a user