mirror of https://github.com/nginx/nginx
SSL: $ssl_sigalg, $ssl_client_sigalg.
Variables contain the IANA name of the signature scheme[1] used to sign the TLS handshake. Variables are only meaningful when using OpenSSL 3.5 and above, with older versions they are empty. Moreover, since this data isn't stored in a serialized session, variables are only available for new sessions. [1] https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml Requested by willmafh.
This commit is contained in:
parent
364a94ecec
commit
71f8eb52b7
|
|
@ -5540,6 +5540,32 @@ ngx_ssl_get_curves(ngx_connection_t *c, ngx_pool_t *pool, ngx_str_t *s)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ngx_int_t
|
||||||
|
ngx_ssl_get_sigalg(ngx_connection_t *c, ngx_pool_t *pool, ngx_str_t *s)
|
||||||
|
{
|
||||||
|
#ifdef SSL_get0_signature_name
|
||||||
|
|
||||||
|
const char *name;
|
||||||
|
|
||||||
|
if (SSL_get0_signature_name(c->ssl->connection, &name)) {
|
||||||
|
s->len = ngx_strlen(name);
|
||||||
|
s->data = ngx_pnalloc(pool, s->len);
|
||||||
|
if (s->data == NULL) {
|
||||||
|
return NGX_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
ngx_memcpy(s->data, name, s->len);
|
||||||
|
|
||||||
|
return NGX_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
s->len = 0;
|
||||||
|
return NGX_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
ngx_int_t
|
ngx_int_t
|
||||||
ngx_ssl_get_session_id(ngx_connection_t *c, ngx_pool_t *pool, ngx_str_t *s)
|
ngx_ssl_get_session_id(ngx_connection_t *c, ngx_pool_t *pool, ngx_str_t *s)
|
||||||
{
|
{
|
||||||
|
|
@ -6285,6 +6311,32 @@ ngx_ssl_parse_time(
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ngx_int_t
|
||||||
|
ngx_ssl_get_client_sigalg(ngx_connection_t *c, ngx_pool_t *pool, ngx_str_t *s)
|
||||||
|
{
|
||||||
|
#ifdef SSL_get0_peer_signature_name
|
||||||
|
|
||||||
|
const char *name;
|
||||||
|
|
||||||
|
if (SSL_get0_peer_signature_name(c->ssl->connection, &name)) {
|
||||||
|
s->len = ngx_strlen(name);
|
||||||
|
s->data = ngx_pnalloc(pool, s->len);
|
||||||
|
if (s->data == NULL) {
|
||||||
|
return NGX_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
ngx_memcpy(s->data, name, s->len);
|
||||||
|
|
||||||
|
return NGX_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
s->len = 0;
|
||||||
|
return NGX_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static void *
|
static void *
|
||||||
ngx_openssl_create_conf(ngx_cycle_t *cycle)
|
ngx_openssl_create_conf(ngx_cycle_t *cycle)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -328,6 +328,8 @@ ngx_int_t ngx_ssl_get_curve(ngx_connection_t *c, ngx_pool_t *pool,
|
||||||
ngx_str_t *s);
|
ngx_str_t *s);
|
||||||
ngx_int_t ngx_ssl_get_curves(ngx_connection_t *c, ngx_pool_t *pool,
|
ngx_int_t ngx_ssl_get_curves(ngx_connection_t *c, ngx_pool_t *pool,
|
||||||
ngx_str_t *s);
|
ngx_str_t *s);
|
||||||
|
ngx_int_t ngx_ssl_get_sigalg(ngx_connection_t *c, ngx_pool_t *pool,
|
||||||
|
ngx_str_t *s);
|
||||||
ngx_int_t ngx_ssl_get_session_id(ngx_connection_t *c, ngx_pool_t *pool,
|
ngx_int_t ngx_ssl_get_session_id(ngx_connection_t *c, ngx_pool_t *pool,
|
||||||
ngx_str_t *s);
|
ngx_str_t *s);
|
||||||
ngx_int_t ngx_ssl_get_session_reused(ngx_connection_t *c, ngx_pool_t *pool,
|
ngx_int_t ngx_ssl_get_session_reused(ngx_connection_t *c, ngx_pool_t *pool,
|
||||||
|
|
@ -364,6 +366,8 @@ ngx_int_t ngx_ssl_get_client_v_end(ngx_connection_t *c, ngx_pool_t *pool,
|
||||||
ngx_str_t *s);
|
ngx_str_t *s);
|
||||||
ngx_int_t ngx_ssl_get_client_v_remain(ngx_connection_t *c, ngx_pool_t *pool,
|
ngx_int_t ngx_ssl_get_client_v_remain(ngx_connection_t *c, ngx_pool_t *pool,
|
||||||
ngx_str_t *s);
|
ngx_str_t *s);
|
||||||
|
ngx_int_t ngx_ssl_get_client_sigalg(ngx_connection_t *c, ngx_pool_t *pool,
|
||||||
|
ngx_str_t *s);
|
||||||
|
|
||||||
|
|
||||||
ngx_int_t ngx_ssl_handshake(ngx_connection_t *c);
|
ngx_int_t ngx_ssl_handshake(ngx_connection_t *c);
|
||||||
|
|
|
||||||
|
|
@ -358,6 +358,9 @@ static ngx_http_variable_t ngx_http_ssl_vars[] = {
|
||||||
{ ngx_string("ssl_curves"), NULL, ngx_http_ssl_variable,
|
{ ngx_string("ssl_curves"), NULL, ngx_http_ssl_variable,
|
||||||
(uintptr_t) ngx_ssl_get_curves, NGX_HTTP_VAR_CHANGEABLE, 0 },
|
(uintptr_t) ngx_ssl_get_curves, NGX_HTTP_VAR_CHANGEABLE, 0 },
|
||||||
|
|
||||||
|
{ ngx_string("ssl_sigalg"), NULL, ngx_http_ssl_variable,
|
||||||
|
(uintptr_t) ngx_ssl_get_sigalg, NGX_HTTP_VAR_CHANGEABLE, 0 },
|
||||||
|
|
||||||
{ ngx_string("ssl_session_id"), NULL, ngx_http_ssl_variable,
|
{ ngx_string("ssl_session_id"), NULL, ngx_http_ssl_variable,
|
||||||
(uintptr_t) ngx_ssl_get_session_id, NGX_HTTP_VAR_CHANGEABLE, 0 },
|
(uintptr_t) ngx_ssl_get_session_id, NGX_HTTP_VAR_CHANGEABLE, 0 },
|
||||||
|
|
||||||
|
|
@ -415,6 +418,9 @@ static ngx_http_variable_t ngx_http_ssl_vars[] = {
|
||||||
{ ngx_string("ssl_client_v_remain"), NULL, ngx_http_ssl_variable,
|
{ ngx_string("ssl_client_v_remain"), NULL, ngx_http_ssl_variable,
|
||||||
(uintptr_t) ngx_ssl_get_client_v_remain, NGX_HTTP_VAR_CHANGEABLE, 0 },
|
(uintptr_t) ngx_ssl_get_client_v_remain, NGX_HTTP_VAR_CHANGEABLE, 0 },
|
||||||
|
|
||||||
|
{ ngx_string("ssl_client_sigalg"), NULL, ngx_http_ssl_variable,
|
||||||
|
(uintptr_t) ngx_ssl_get_client_sigalg, NGX_HTTP_VAR_CHANGEABLE, 0 },
|
||||||
|
|
||||||
ngx_http_null_variable
|
ngx_http_null_variable
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -357,6 +357,9 @@ static ngx_stream_variable_t ngx_stream_ssl_vars[] = {
|
||||||
{ ngx_string("ssl_curves"), NULL, ngx_stream_ssl_variable,
|
{ ngx_string("ssl_curves"), NULL, ngx_stream_ssl_variable,
|
||||||
(uintptr_t) ngx_ssl_get_curves, NGX_STREAM_VAR_CHANGEABLE, 0 },
|
(uintptr_t) ngx_ssl_get_curves, NGX_STREAM_VAR_CHANGEABLE, 0 },
|
||||||
|
|
||||||
|
{ ngx_string("ssl_sigalg"), NULL, ngx_stream_ssl_variable,
|
||||||
|
(uintptr_t) ngx_ssl_get_sigalg, NGX_STREAM_VAR_CHANGEABLE, 0 },
|
||||||
|
|
||||||
{ ngx_string("ssl_session_id"), NULL, ngx_stream_ssl_variable,
|
{ ngx_string("ssl_session_id"), NULL, ngx_stream_ssl_variable,
|
||||||
(uintptr_t) ngx_ssl_get_session_id, NGX_STREAM_VAR_CHANGEABLE, 0 },
|
(uintptr_t) ngx_ssl_get_session_id, NGX_STREAM_VAR_CHANGEABLE, 0 },
|
||||||
|
|
||||||
|
|
@ -404,6 +407,9 @@ static ngx_stream_variable_t ngx_stream_ssl_vars[] = {
|
||||||
{ ngx_string("ssl_client_v_remain"), NULL, ngx_stream_ssl_variable,
|
{ ngx_string("ssl_client_v_remain"), NULL, ngx_stream_ssl_variable,
|
||||||
(uintptr_t) ngx_ssl_get_client_v_remain, NGX_STREAM_VAR_CHANGEABLE, 0 },
|
(uintptr_t) ngx_ssl_get_client_v_remain, NGX_STREAM_VAR_CHANGEABLE, 0 },
|
||||||
|
|
||||||
|
{ ngx_string("ssl_client_sigalg"), NULL, ngx_stream_ssl_variable,
|
||||||
|
(uintptr_t) ngx_ssl_get_client_sigalg, NGX_STREAM_VAR_CHANGEABLE, 0 },
|
||||||
|
|
||||||
ngx_stream_null_variable
|
ngx_stream_null_variable
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue