Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
SSL(3)			     Library Functions Manual			  SSL(3)

NAME
     ssl -- OpenSSL TLS library

DESCRIPTION
     The ssl library implements the Transport Layer Security (TLS) protocol, the
     successor to the Secure Sockets Layer (SSL) protocol.

     An  SSL_CTX  object  is created as a framework to establish TLS/SSL enabled
     connections (see SSL_CTX_new(3)).	Various options regarding  certificates,
     algorithms, etc., can be set in this object.

     When  a  network  connection has been created, it can be assigned to an SSL
     object.   After  the  SSL	object	has  been  created   using   SSL_new(3),
     SSL_set_fd(3)  or	SSL_set_bio(3) can be used to associate the network con-
     nection with the object.

     Then the TLS/SSL handshake is performed  using  SSL_accept(3)  or	SSL_con-
     nect(3)  respectively.   SSL_read(3)  and SSL_write(3) are used to read and
     write data on the TLS/SSL connection.  SSL_shutdown(3) can be used to  shut
     down the TLS/SSL connection.

DATA STRUCTURES
     Currently	the  ssl  library  functions deal with the following data struc-
     tures:

     SSL_METHOD (SSL Method)
	     That's a dispatch structure describing  the  internal  ssl  library
	     methods/functions	which  implement  the various protocol versions.
	     It's needed to create an SSL_CTX.	See TLS_method(3) for  construc-
	     tors.

     SSL_CIPHER (SSL Cipher)
	     This structure holds the algorithm information for a particular ci-
	     pher  which  is a core part of the SSL/TLS protocol.  The available
	     ciphers are configured on an SSL_CTX basis and  the  actually  used
	     ones are then part of the SSL_SESSION.

     SSL_CTX (SSL Context)
	     That's the global context structure which is created by a server or
	     client  once  per	program  lifetime and which holds mainly default
	     values for the SSL structures which are later created for the  con-
	     nections.

     SSL_SESSION (SSL Session)
	     This  is a structure containing the current TLS/SSL session details
	     for a connection:	SSL_CIPHERs,  client  and  server  certificates,
	     keys, etc.

     SSL (SSL Connection)
	     That's  the  main SSL/TLS structure which is created by a server or
	     client per established  connection.   This  actually  is  the  core
	     structure	in  the  SSL  API.   At run-time the application usually
	     deals with this structure which  has  links  to  mostly  all  other
	     structures.

HEADER FILES
     Currently	the ssl library provides the following C header files containing
     the prototypes for the data structures and functions:

     ssl.h   That's the common header file for the SSL/TLS API.  Include it into
	     your program to make the API of the ssl library available.  It  in-
	     ternally  includes  both  more private SSL headers and headers from
	     the crypto library.  Whenever you need hardcore details on the  in-
	     ternals of the SSL API, look inside this header file.

     ssl3.h  That's  the  sub  header file dealing with the SSLv3 protocol only.
	     Usually you don't have to include it explicitly  because  it's  al-
	     ready included by ssl.h.

     tls1.h  That's  the  sub  header file dealing with the TLSv1 protocol only.
	     Usually you don't have to include it explicitly  because  it's  al-
	     ready included by ssl.h.

API FUNCTIONS
   Ciphers
     The  following  pages  describe  functions  acting  on  SSL_CIPHER objects:
     SSL_get_ciphers(3), SSL_get_current_cipher(3), SSL_CIPHER_get_name(3)

   Protocol contexts
     The following pages describe functions acting on SSL_CTX objects.

     Constructors and destructors:  SSL_CTX_new(3),  SSL_CTX_set_ssl_version(3),
     SSL_CTX_free(3)

     Certificate	 configuration: 	SSL_CTX_add_extra_chain_cert(3),
     SSL_CTX_get0_certificate(3),	       SSL_CTX_load_verify_locations(3),
     SSL_CTX_set_cert_store(3), 	    SSL_CTX_set_cert_verify_callback(3),
     SSL_CTX_set_client_cert_cb(3),	       SSL_CTX_set_default_passwd_cb(3),
     SSL_CTX_set_tlsext_status_cb(3)

     Session  configuration:  SSL_CTX_add_session(3), SSL_CTX_flush_sessions(3),
     SSL_CTX_sess_number(3),			 SSL_CTX_sess_set_cache_size(3),
     SSL_CTX_sess_set_get_cb(3),      SSL_CTX_sessions(3),	SSL_CTX_set_ses-
     sion_cache_mode(3),	 SSL_CTX_set_timeout(3),	 SSL_CTX_set_tl-
     sext_ticket_key_cb(3)

     Various	configuration:	  SSL_CTX_get_ex_new_index(3),	 SSL_CTX_set_tl-
     sext_servername_callback(3)

   Common configuration of contexts and connections
     The functions on the following pages each come in two variants: one to  di-
     rectly  configure	a  single  SSL connection and another to be called on an
     SSL_CTX object, to set up defaults for all future SSL  connections  created
     from that context.

     Protocol	and   algorithm   configuration:  SSL_CTX_set_alpn_select_cb(3),
     SSL_CTX_set_cipher_list(3),	       SSL_CTX_set_min_proto_version(3),
     SSL_CTX_set_options(3),	SSL_CTX_set_security_level(3),	 SSL_CTX_set_tl-
     sext_use_srtp(3), SSL_CTX_set_tmp_dh_callback(3), SSL_CTX_set1_groups(3)

     Certificate  configuration:  SSL_CTX_add1_chain_cert(3),	SSL_CTX_get_ver-
     ify_mode(3),  SSL_CTX_set_client_CA_list(3),  SSL_CTX_set_max_cert_list(3),
     SSL_CTX_set_verify(3),			     SSL_CTX_use_certificate(3),
     SSL_get_client_CA_list(3) SSL_set1_param(3)

     Session configuration: SSL_CTX_set_generate_session_id(3), SSL_CTX_set_ses-
     sion_id_context(3)

     Various   configuration:	SSL_CTX_ctrl(3),   SSL_CTX_set_info_callback(3),
     SSL_CTX_set_mode(3),  SSL_CTX_set_msg_callback(3),  SSL_CTX_set_quiet_shut-
     down(3), SSL_CTX_set_read_ahead(3), SSL_set_max_send_fragment(3)

   Sessions
     The following pages describe functions acting on SSL_SESSION objects.

     Constructors and destructors: SSL_SESSION_new(3), SSL_SESSION_free(3)

     Accessors: SSL_SESSION_get_compress_id(3), SSL_SESSION_get_ex_new_index(3),
     SSL_SESSION_get_id(3),	SSL_SESSION_get_protocol_version(3),	SSL_SES-
     SION_get_time(3),	 SSL_SESSION_get0_peer(3),    SSL_SESSION_has_ticket(3),
     SSL_SESSION_set1_id_context(3)

     Encoding	and   decoding:   d2i_SSL_SESSION(3),	PEM_read_SSL_SESSION(3),
     SSL_SESSION_print(3)

   Connections
     The following pages describe functions acting on SSL connection objects:

     Constructors  and	 destructors:	SSL_new(3),   SSL_dup(3),   SSL_free(3),
     BIO_f_ssl(3)

     To    change    the    configuration:   SSL_clear(3),   SSL_set_SSL_CTX(3),
     SSL_copy_session_id(3),	  SSL_set_bio(3),      SSL_set_connect_state(3),
     SSL_set_fd(3),   SSL_set_session(3),  SSL_set1_host(3),  SSL_set_verify_re-
     sult(3)

     To inspect the configuration: SSL_get_certificate(3), SSL_get_default_time-
     out(3),	SSL_get_ex_new_index(3),     SSL_get_fd(3),	SSL_get_rbio(3),
     SSL_get_SSL_CTX(3)

     To   transmit   data:   DTLSv1_listen(3),	 SSL_accept(3),  SSL_connect(3),
     SSL_do_handshake(3),  SSL_read(3),  SSL_read_early_data(3),   SSL_renegoti-
     ate(3), SSL_shutdown(3), SSL_write(3)

     To  inspect  the  state  after a connection is established: SSL_export_key-
     ing_material(3),				       SSL_get_client_random(3),
     SSL_get_ex_data_X509_STORE_CTX_idx(3),	     SSL_get_peer_cert_chain(3),
     SSL_get_peer_certificate(3),   SSL_get_server_tmp_key(3),	 SSL_get_server-
     name(3),  SSL_get_session(3), SSL_get_shared_ciphers(3), SSL_get_verify_re-
     sult(3), SSL_get_version(3), SSL_session_reused(3)

     To  inspect  the  state  during  ongoing  communication:  SSL_get_error(3),
     SSL_get_shutdown(3), SSL_get_state(3), SSL_num_renegotiations(3), SSL_pend-
     ing(3), SSL_rstate_string(3), SSL_state_string(3), SSL_want(3)

   Utility functions
     SSL_alert_type_string(3), SSL_dup_CA_list(3), SSL_load_client_CA_file(3)

   Obsolete functions
     OPENSSL_init_ssl(3),		    SSL_COMP_get_compression_methods(3),
     SSL_CTX_set_tmp_rsa_callback(3), SSL_library_init(3), SSL_set_tmp_ecdh(3)

SEE ALSO
     openssl(1), crypto(3), tls_init(3)

HISTORY
     The ssl document appeared in OpenSSL 0.9.2.

FreeBSD 15.1			 August 31, 2024			  SSL(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=ssl&sektion=3&manpath=FreeBSD+15.1-RELEASE+and+Ports>

home | help