38extern module AP_MODULE_DECLARE_DATA tls_module;
63 gconf->session_cache_spec =
"default";
76#define CONF_S_NAME(s) (s && s->server_hostname? s->server_hostname : "default")
96#define MERGE_INT(base, add, field) \
97 (add->field == TLS_FLAG_UNSET)? base->field : add->field;
156 return a->proxy_ca ==
b->proxy_ca;
164 memset(&local, 0,
sizeof(local));
180 else if (
base->proxy_config) {
257 (void)ptemp; (void)
plog;
259 "%s: tls_proxy_section_post_config called",
s->server_hostname);
271 "%s: adding proxy_conf to globals in proxy_post_config_section",
295 "' does not exist or is empty",
NULL);
321 ": invalid address/port in '", v,
"'",
NULL);
329 ": unable to get sockaddr for '",
host,
"'",
NULL);
334#if APR_VERSION_AT_LEAST(1,7,0)
338 ": error setting ipv6 scope id: '",
scope_id,
"'",
NULL);
343 ": IPv6 scopes not supported by your APR: '",
scope_id,
"'",
NULL);
353 sar->
next =
gc->tls_addresses;
354 gc->tls_addresses = sar;
375 ": value must be 'On' or 'Off': '", v,
"'",
NULL);
379 cmd_parms *
cmd,
void *dc,
const char *cert_file,
const char *pkey_file)
394 ": unable to find certificate file: '",
fpath,
"'",
NULL);
396 cert->cert_file = cert_file;
401 ": unable to find certificate key file: '",
fpath,
"'",
NULL);
404 cert->pkey_file = pkey_file;
431 ": cipher not recognized '",
name,
"'",
NULL);
449 err =
"specify the TLS ciphers to prefer or 'default' for the rustls default ordering.";
465 err =
"specify the TLS ciphers to never use or 'none'.";
506 else if (*v && v[strlen(v)-1] ==
'+') {
512 ": unrecognized protocol version specifier (try TLSv1.2+ or TLSv1.3+): '", v,
"'",
NULL);
518 ": value must be 'default', 'TLSv1.2+' or 'TLSv1.3+': '", v,
"'",
NULL);
627 err =
"specify the proxy TLS ciphers to prefer or 'default' for the rustls default ordering.";
643 err =
"specify the proxy TLS ciphers to never use or 'none'.";
683 ": unknown value: '",
mode,
"', use required/optional/none.",
NULL);
717 ": unable to find certificate file: '",
fpath,
"'",
NULL);
719 cert->cert_file = cert_file;
724 ": unable to find certificate key file: '",
fpath,
"'",
NULL);
727 cert->pkey_file = pkey_file;
738 "Add a certificate to the server by specifying a file containing the "
739 "certificate PEM, followed by its chain PEMs. The PEM of the key must "
740 "either also be there or can be given as a separate file."),
742 "Set the TLS ciphers to prefer when negotiating with a client."),
744 "Set the TLS ciphers to never use when negotiating with a client."),
746 "Set 'on' to have the server honor client preferences in cipher suites, default off."),
748 "Specify an address+port where the module shall handle incoming TLS connections."),
750 "En-/disables optional features in the module."),
752 "Set the minimum TLS protocol version to use."),
754 "Set strictness of client server name (SNI) check against hosts, default on."),
756 "Set which cache to use for TLS sessions."),
758 "Enable TLS encryption of outgoing connections in this location/server."),
760 "Set the trust anchors for certificates from proxied backend servers from a PEM file."),
762 "Set the minimum TLS protocol version to use for proxy connections."),
764 "Set the TLS ciphers to prefer when negotiating a proxy connection."),
766 "Set the TLS ciphers to never use when negotiating a proxy connection."),
769 "Set the trust anchors for client certificates from a PEM file."),
771 "If TLS client authentication is 'required', 'optional' or 'none'."),
773 "Set the SSL variable to be used as user name."),
777 "Add a certificate to be used as client certificate on a proxy connection. "),
Small object cache provider interface.
APR general purpose library routines.
apr_array_append(apr_pool_t *p, const apr_array_header_t *first, const apr_array_header_t *second)
APR Versioning Interface.
#define AP_INIT_TAKE1(directive, func, mconfig, where, help)
#define APLOG_USE_MODULE(foo)
#define ap_get_module_config(v, m)
#define AP_INIT_TAKE_ARGV(directive, func, mconfig, where, help)
struct ap_conf_vector_t ap_conf_vector_t
#define AP_INIT_FLAG(directive, func, mconfig, where, help)
char * ap_server_root_relative(apr_pool_t *p, const char *fname)
#define AP_INIT_TAKE12(directive, func, mconfig, where, help)
#define AP_SQ_RM_CONFIG_DUMP
int ap_state_query(int query_code)
server_rec * ap_server_conf
const char apr_port_t port
apr_bucket apr_bucket_brigade * a
apr_dbd_transaction_t int mode
const char * ap_check_cmd_context(cmd_parms *cmd, unsigned forbidden)
const char int apr_pool_t * pool
const char apr_int32_t flag
void const char apr_status_t(* cleanup)(void *))
int strcasecmp(const char *a, const char *b)
#define apr_pcalloc(p, size)
#define APR_ARRAY_PUSH(ary, type)
apr_int32_t apr_int32_t apr_int32_t err
static long gc(server_rec *s)
A structure that represents the current request.
struct ap_conf_vector_t * per_dir_config
A structure to be used for Per-vhost config.
apr_sockaddr_t * host_addr
A structure to store information for each virtual server.
apr_array_header_t * proxy_machine_cert_specs
apr_array_header_t * proxy_supp_ciphers
apr_array_header_t * proxy_pref_ciphers
tls_conf_proxy_t * proxy_config
apr_array_header_t * proxy_configs
struct tls_proto_conf_t * proto
tls_client_auth_t client_auth
apr_array_header_t * tls_supp_ciphers
apr_array_header_t * tls_pref_ciphers
apr_array_header_t * cert_specs
const char * var_user_name
tls_conf_global_t * global
const char * tls_cache_set_specification(const char *spec, tls_conf_global_t *gconf, apr_pool_t *p, apr_pool_t *ptemp)
static const char * tls_conf_set_proxy_suppressed_ciphers(cmd_parms *cmd, void *dir_conf, int argc, char *const argv[])
static const char * tls_conf_add_engine(cmd_parms *cmd, void *dc, const char *v)
static const char * get_min_protocol(cmd_parms *cmd, const char *v, int *pmin)
void * tls_conf_merge_svr(apr_pool_t *pool, void *basev, void *addv)
static void dir_assign_merge(tls_conf_dir_t *dest, apr_pool_t *pool, tls_conf_dir_t *base, tls_conf_dir_t *add)
static int same_proxy_settings(tls_conf_dir_t *a, tls_conf_dir_t *b)
static const char * tls_conf_add_certificate(cmd_parms *cmd, void *dc, const char *cert_file, const char *pkey_file)
static const char * tls_conf_add_proxy_machine_certificate(cmd_parms *cmd, void *dir_conf, const char *cert_file, const char *pkey_file)
static int flag_value(const char *arg)
static const char * tls_conf_set_proxy_engine(cmd_parms *cmd, void *dir_conf, int flag)
void * tls_conf_create_dir(apr_pool_t *pool, char *dir)
static const char * tls_conf_set_preferred_ciphers(cmd_parms *cmd, void *dc, int argc, char *const argv[])
static const char * tls_conf_set_session_cache(cmd_parms *cmd, void *dc, const char *value)
static const char * tls_conf_set_protocol(cmd_parms *cmd, void *dc, const char *v)
const command_rec tls_conf_cmds[]
static const char * tls_conf_set_strict_sni(cmd_parms *cmd, void *dc, const char *v)
static const char * tls_conf_set_proxy_protocol(cmd_parms *cmd, void *dir_conf, const char *v)
apr_status_t tls_conf_dir_apply_defaults(tls_conf_dir_t *dc, apr_pool_t *p)
int tls_proxy_section_post_config(apr_pool_t *p, apr_pool_t *plog, apr_pool_t *ptemp, server_rec *s, ap_conf_vector_t *section_config)
static void tls_conf_dir_set_options_defaults(apr_pool_t *pool, tls_conf_dir_t *dc)
static const char * tls_conf_set_honor_client_order(cmd_parms *cmd, void *dc, const char *v)
static const char * tls_conf_set_suppressed_ciphers(cmd_parms *cmd, void *dc, int argc, char *const argv[])
static const char * cmd_check_file(cmd_parms *cmd, const char *fpath)
void * tls_conf_merge_dir(apr_pool_t *pool, void *basev, void *addv)
static const char * flag_err(cmd_parms *cmd, const char *v)
static const char * tls_conf_set_proxy_preferred_ciphers(cmd_parms *cmd, void *dir_conf, int argc, char *const argv[])
void * tls_conf_create_svr(apr_pool_t *pool, server_rec *s)
#define MERGE_INT(base, add, field)
tls_conf_proxy_t * tls_conf_proxy_make(apr_pool_t *p, tls_conf_dir_t *dc, tls_conf_global_t *gc, server_rec *s)
tls_conf_server_t * tls_conf_server_get(server_rec *s)
static const char * parse_ciphers(cmd_parms *cmd, tls_conf_global_t *gc, const char *nop_name, int argc, char *const argv[], apr_array_header_t *ciphers)
static const char * tls_conf_set_proxy_ca(cmd_parms *cmd, void *dir_conf, const char *proxy_ca)
static tls_conf_global_t * conf_global_get_or_make(apr_pool_t *pool, server_rec *s)
apr_status_t tls_conf_server_apply_defaults(tls_conf_server_t *sc, apr_pool_t *p)
static const char * tls_conf_set_options(cmd_parms *cmd, void *dcv, int argc, char *const argv[])
tls_conf_dir_t * tls_conf_dir_get(request_rec *r)
tls_conf_dir_t * tls_conf_dir_server_get(server_rec *s)
@ TLS_CLIENT_AUTH_REQUIRED
@ TLS_CLIENT_AUTH_OPTIONAL
apr_status_t tls_proto_get_cipher_by_name(tls_proto_conf_t *conf, const char *name, apr_uint16_t *pcipher)
apr_uint16_t tls_proto_get_version_by_name(tls_proto_conf_t *conf, const char *name)
tls_proto_conf_t * tls_proto_init(apr_pool_t *pool, server_rec *s)
int tls_util_is_file(apr_pool_t *p, const char *fpath)
void tls_var_init_lookup_hash(apr_pool_t *pool, apr_hash_t *map)