SSL#
Proporciona el soporte necesario para HTTPS.
Cuando se compila desde el código fuente, este módulo
no se compila por defecto; debe habilitarse con la opción de
compilación --with-http_ssl_module.
En paquetes e imágenes de nuestros repositorios, el módulo está incluido en la compilación.
Nota
Este módulo requiere la biblioteca OpenSSL.
Ejemplo de configuración#
Para reducir la carga del procesador, se recomienda:
establecer el número de procesos de trabajo igual al número de procesadores;
habilitar las conexiones keep-alive;
habilitar la caché de sesión compartida;
deshabilitar la caché de sesión incorporada;
si es necesario, aumentar el tiempo de vida de la sesión (por defecto, 5 minutos).
Por ejemplo:
worker_processes auto;
http {
# ...
server {
listen 443 ssl;
keepalive_timeout 70;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5;
ssl_certificate /usr/local/angie/conf/cert.pem;
ssl_certificate_key /usr/local/angie/conf/cert.key;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
# ...
}
Directivas#
ssl_buffer_size#
Establece el tamaño del búfer utilizado para enviar datos.
Por defecto, el tamaño del búfer es de 16k, lo que corresponde a una sobrecarga mínima al enviar respuestas grandes. Para minimizar el Time To First Byte puede ser beneficioso usar valores más pequeños, por ejemplo:
ssl_buffer_size 4k;
ssl_certificate#
Especifica el certificado en formato PEM para el servidor virtual dado. Los certificados intermedios, si los hay, siguen al certificado primario en el mismo archivo o valor; también puede colocarse allí una clave secreta en formato PEM.
El valor es la ruta al archivo del certificado; una ruta relativa se resuelve
respecto al directorio del archivo de configuración principal. Un valor que
empieza por data: contiene el propio texto PEM del certificado, de modo
que no hace falta ningún archivo. Escriba dicho valor entre comillas, ya que el
texto PEM contiene espacios. Para mantenerlo en una sola línea dentro de una
configuración con sangría, escriba cada salto de línea como \n:
ssl_certificate 'data:-----BEGIN CERTIFICATE-----\nMIIBszCCAVmgAwIBAgIU...\n-----END CERTIFICATE-----\n';
Un salto de línea literal también funciona, pero entonces cada línea siguiente del texto PEM debe empezar en la primera columna; con líneas con sangría, el certificado no se carga:
ssl_certificate 'data:-----BEGIN CERTIFICATE-----
MIIBszCCAVmgAwIBAgIU...
-----END CERTIFICATE-----';
ssl_certificate_key /etc/angie/ssl/example.com.key;
Esta directiva puede especificarse varias veces para cargar certificados de diferentes tipos, por ejemplo, RSA y ECDSA:
server {
listen 443 ssl;
server_name example.com;
ssl_certificate example.com.rsa.crt;
ssl_certificate_key example.com.rsa.key;
ssl_certificate example.com.ecdsa.crt;
ssl_certificate_key example.com.ecdsa.key;
# ...
}
El valor puede contener variables, en su totalidad o
en parte. Si algún valor de ssl_certificate o de ssl_certificate_key
de un servidor virtual contiene variables, Angie carga todos los certificados y
claves de este servidor en cada handshake SSL, en lugar de hacerlo al leer la
configuración. El valor evaluado se interpreta como se describió antes: texto
PEM si empieza por data:, y una ruta de archivo en caso contrario:
ssl_certificate $ssl_server_name.crt;
ssl_certificate_key $ssl_server_name.key;
El handshake precede a la solicitud, por lo que solo tienen valor las variables
ya conocidas en ese momento: por ejemplo, $ssl_server_name,
$remote_addr, $server_addr y las variables que map
deriva de ellas. Una variable asignada con set sigue vacía durante el
handshake, y un valor vacío hace que el handshake falle. La variable
$acme_cert_<name> del módulo ACME
es un ejemplo de variable cuyo valor es un valor data: ya listo.
Cargar los certificados en cada handshake consume tiempo de CPU; la directiva ssl_certificate_cache conserva los certificados y claves cargados para reutilizarlos. Los certificados cargados durante el handshake no se grapan (stapling) ni se comprimen: ssl_stapling y ssl_certificate_compression no tienen efecto sobre ellos.
Nota
Debe tenerse en cuenta que debido a las limitaciones del protocolo HTTPS para máxima interoperabilidad, los servidores virtuales deben escuchar en diferentes direcciones IP.
Si ssl_ntls está habilitado, la directiva puede aceptar dos argumentos (las partes de firma y cifrado del certificado) en lugar de uno:
listen ... ssl;
ssl_ntls on;
# certificado NTLS dual
ssl_certificate sign.crt enc.crt;
ssl_certificate_key sign.key enc.key;
# puede usarse junto con un certificado RSA regular
ssl_certificate rsa.crt;
ssl_certificate_key rsa.key;
ssl_certificate_cache#
| |
Predeterminado |
|
http, server |
Define una caché que almacena certificados SSL y claves secretas especificadas mediante variables.
La directiva admite los siguientes parámetros:
max— establece el número máximo de elementos en la caché. Cuando la caché se desborda, se eliminan los elementos menos utilizados recientemente (LRU).inactive— define el tiempo después del cual se elimina un elemento si no ha sido accedido durante ese tiempo, incluso si todavía está dentro de su períodovalid; cada acceso reinicia este temporizador. El valor predeterminado es 10 segundos.valid— define el tiempo durante el cual un elemento en caché se reutiliza sin comprobaciones. El valor predeterminado es 60 segundos. Pasado este período, un elemento cargado desde un archivo se recarga solo si el archivo ha cambiado, y una clave cargada con el prefijoengine:ostore:se vuelve a cargar; un elemento especificado con el prefijodata:sigue siendo válido.off— desactiva la caché.
Las claves protegidas por una frase de contraseña (véase ssl_password_file) no se almacenan en caché.
Ejemplo:
ssl_certificate $ssl_server_name.crt;
ssl_certificate_key $ssl_server_name.key;
ssl_certificate_cache max=1000 inactive=20s valid=1m;
ssl_certificate_compression#
| |
Predeterminado |
|
http, server |
Habilita la compresión TLS 1.3 de certificados de servidor.
Nota
La directiva es compatible cuando se utiliza OpenSSL 3.2 o superior; la lista de algoritmos de compresión compatibles es proporcionada por la biblioteca.
Nota
La directiva es compatible cuando se utiliza BoringSSL; la lista de algoritmos de compresión compatibles incluye zlib.
La directiva es incompatible con ssl_stapling: una configuración que habilita ambas en el mismo servidor no se carga.
ssl_certificate_key#
| |
Predeterminado | — |
http, server |
Especifica la clave secreta en formato PEM para el servidor virtual dado.
Una ruta de archivo y un valor data: se interpretan como en
ssl_certificate. Hay dos prefijos más, disponibles solo para claves:
engine:nombre:id: la clave con el identificador id del motor OpenSSL nombre;store:uri: la clave que la API STORE de OpenSSL encuentra en uri, por ejemplo, una clave en un token direccionado mediante un URI PKCS #11, como'store:pkcs11:token=hsm;object=server'; escriba dicho valor entre comillas por el carácter;.
El valor puede contener variables; en ese caso Angie carga la clave en cada handshake SSL, junto con el certificado, como se describe en ssl_certificate. Una clave protegida por una frase de contraseña se descifra con las frases de contraseña de ssl_password_file, tanto si se carga con la configuración como durante el handshake.
El valor puede llegar íntegro al registro de errores: el
mensaje de error sobre una clave que no se carga reproduce el valor, y con
variables, el registro de nivel debug anota cada valor evaluado de certificado y clave en cada
handshake. Con el prefijo data:, el registro recibe así la propia clave
secreta.
Si ssl_ntls está habilitado, la directiva puede aceptar dos argumentos (las partes de firma y cifrado de la clave) en lugar de uno:
listen ... ssl;
ssl_ntls on;
# certificado NTLS dual
ssl_certificate sign.crt enc.crt;
ssl_certificate_key sign.key enc.key;
# puede usarse junto con un certificado RSA regular
ssl_certificate rsa.crt;
ssl_certificate_key rsa.key;
ssl_ciphers#
Especifica los cifrados habilitados. Los cifrados se especifican en el formato entendido por la biblioteca OpenSSL, por ejemplo:
ssl_ciphers ALL:!aNULL:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
La lista de cifrados depende de la versión de OpenSSL instalada.
La lista completa se puede ver usando el comando openssl ciphers.
Advertencia
Con OpenSSL, la directiva ssl_ciphers no configura los cifrados de TLS 1.3;
en su lugar, configúrelos con el comando Ciphersuites de la directiva
ssl_conf_command. La directiva ssl_ciphers ignora los nombres de cifrados
TLS 1.3 de su valor, por lo que dichos nombres no restringen las conexiones
TLS 1.3. Si el valor consta únicamente de tales nombres, por ejemplo
TLS_AES_128_GCM_SHA256, la configuración no se carga y se produce
el error no cipher match.
En LibreSSL, los cifrados TLS 1.3 pueden configurarse usando
ssl_ciphers.En BoringSSL, los cifrados TLS 1.3 no pueden configurarse en absoluto.
ssl_client_certificate#
Especifica un archivo con certificados de CA de confianza en formato PEM utilizados para verificar certificados de cliente y respuestas OCSP si ssl_stapling está habilitado.
La lista de certificados se enviará a los clientes. Si esto no es deseable, se puede usar la directiva ssl_trusted_certificate.
ssl_conf_command#
Establece comandos de configuración OpenSSL arbitrarios.
Nota
La directiva es compatible cuando se utiliza OpenSSL 1.0.2 o superior.
El comando Ciphersuites, que configura los cifrados de TLS 1.3, requiere
OpenSSL 1.1.1 o superior.
Se pueden especificar varias directivas ssl_conf_command en el mismo nivel:
ssl_conf_command Options PrioritizeChaCha;
ssl_conf_command Ciphersuites TLS_CHACHA20_POLY1305_SHA256;
Estas directivas se heredan del nivel de configuración anterior si y solo si no hay directivas ssl_conf_command definidas en el nivel actual.
Advertencia
Configurar OpenSSL directamente podría resultar en un comportamiento inesperado.
ssl_crl#
Especifica un archivo con certificados revocados (CRL) en formato PEM utilizado para verificar certificados de cliente.
ssl_dhparam#
Especifica un archivo con parámetros DH para cifrados DHE.
Advertencia
Por defecto no se establecen parámetros, y por lo tanto los cifrados DHE no se utilizarán.
ssl_early_data#
Habilita o deshabilita TLS 1.3 early data.
Las solicitudes enviadas dentro de early data están sujetas a ataques de reproducción. Para proteger contra tales ataques a nivel de la aplicación, se debe utilizar la variable $ssl_early_data.
proxy_set_header Early-Data $ssl_early_data;
Nota
La directiva es compatible cuando se utiliza OpenSSL 1.1.1 o superior o BoringSSL.
ssl_ecdh_curve#
Especifica una curva para cifrados ECDHE.
Nota
Cuando se utiliza OpenSSL 1.0.2 o superior, es posible especificar múltiples curvas, por ejemplo:
ssl_ecdh_curve prime256v1:secp384r1;
El valor especial auto corresponde a la lista de curvas integradas en la biblioteca OpenSSL para OpenSSL 1.0.2 o superior, o prime256v1 para versiones anteriores.
Nota
Cuando se utiliza OpenSSL 1.0.2 o superior, esta directiva establece la lista de curvas soportadas por el servidor. Por lo tanto, para que los certificados ECDSA funcionen, es importante incluir las curvas utilizadas en los certificados.
ssl_encrypted_hello_key#
Added in version 1.11.0.
Especifica un archivo con una clave secreta y una configuración para la extensión TLS Encrypted Client Hello (ECH), que oculta el nombre del servidor solicitado por el cliente frente a los observadores de la red. La variable $ssl_encrypted_hello indica si la extensión se utilizó en un protocolo de enlace.
La directiva puede especificarse varias veces, lo que permite rotar las claves: todas las claves se usan para el descifrado, pero solo la configuración de la primera clave se ofrece a los clientes para los reintentos.
ssl_encrypted_hello_key current.ech;
ssl_encrypted_hello_key previous.ech;
El archivo contiene una clave secreta seguida de una ECHConfigList, ambas en formato PEM. Con la rama de la característica ECH de OpenSSL, dicho archivo se crea con:
$ openssl ech -public_name public.example.com -out example.ech
Con BoringSSL, bssl generate-ech escribe la clave y la ECHConfigList en
archivos binarios separados, y ninguno de los dos es utilizable tal cual. Ambos
deben combinarse en un único archivo PEM: la clave en bruto debe envolverse en
una estructura PKCS#8 y codificarse en base64 dentro de un bloque
PRIVATE KEY, seguido de la ECHConfigList, y no un ECHConfig suelto,
codificada en base64 dentro de un bloque ECHCONFIG. Las compilaciones con
BoringSSL solo admiten claves X25519. El formato en sí no depende de la
biblioteca TLS, por lo que un archivo generado con el comando anterior también es
válido para una compilación con BoringSSL.
Angie descifra el ClientHello antes de conocer el nombre del servidor
solicitado a través de SNI, por lo que las claves deben especificarse para el
servidor predeterminado.
Nota
El soporte de ECH proviene de la biblioteca TLS, por lo que Angie debe enlazarse con una que lo proporcione: la rama de la característica ECH de OpenSSL, que se configura así:
$ ./configure --with-openssl=../openssl-ech
o BoringSSL, que se configura de otra manera. De lo contrario, la directiva se ignora con una advertencia en el registro de errores.
ssl_keylog_file#
Added in version 1.12.0.
Especifica un archivo en el que registrar las claves SSL/TLS de las conexiones gestionadas por el contexto, con el formato SSLKEYLOGFILE que utilizan herramientas como Wireshark para descifrar el tráfico TLS capturado.
La directiva no debe usarse con LibreSSL.
Advertencia
El archivo contiene material de claves TLS sensible que puede descifrar el tráfico capturado de las conexiones correspondientes. Utilice esta directiva únicamente para depuración o análisis de protocolo, restrinja el acceso al archivo y elimínelo cuando ya no sea necesario.
ssl_ntls#
Habilita el soporte del lado del servidor para NTLS cuando se utiliza la biblioteca TLS Tongsuo.
listen ... ssl;
ssl_ntls on;
Nota
Angie debe compilarse con el parámetro de configuración --with-ntls y una biblioteca SSL con soporte NTLS:
$ ./configure --with-openssl=../Tongsuo-8.3.0 \
--with-openssl-opt=enable-ntls \
--with-ntls
ssl_ocsp#
Habilita la validación OCSP de la cadena de certificados del cliente. El parámetro leaf habilita la validación solo del certificado del cliente.
Para que la validación OCSP funcione, la directiva ssl_verify_client debe establecerse en on u optional.
Para resolver el nombre de host del respondedor OCSP, también debe especificarse la directiva resolver.
Ejemplo:
ssl_verify_client on;
ssl_ocsp on;
resolver 127.0.0.53;
ssl_ocsp_cache#
| |
Predeterminado |
|
http, server |
Establece el nombre y tamaño de la caché que almacena el estado del certificado del cliente para la validación OCSP. La caché se comparte entre todos los procesos de trabajo. Una caché con el mismo nombre puede utilizarse en varios servidores virtuales.
El parámetro off prohíbe el uso de la caché.
ssl_ocsp_responder#
Anula el URI del respondedor OCSP especificado en la extensión del certificado "Authority Information Access" para la validación de certificados de cliente.
Solo se admiten respondedores OCSP http://:
ssl_ocsp_responder http://ocsp.example.com/;
ssl_password_file#
Especifica un archivo con frases de contraseña para claves secretas donde cada frase de contraseña se especifica en una línea separada. Las frases de contraseña se prueban sucesivamente al cargar la clave.
Ejemplo:
http {
ssl_password_file /etc/keys/global.pass;
...
server {
server_name www1.example.com;
ssl_certificate_key /etc/keys/first.key;
}
server {
server_name www2.example.com;
# también se puede usar una tubería con nombre en lugar de un archivo
ssl_password_file /etc/keys/fifo;
ssl_certificate_key /etc/keys/second.key;
}
}
ssl_prefer_server_ciphers#
| |
Predeterminado |
|
http, server |
Especifica que los cifrados del servidor deben ser preferidos sobre los cifrados del cliente cuando se utilizan los protocolos SSLv3 y TLS.
ssl_protocols#
| |
Predeterminado |
|
http, server |
Habilita los protocolos especificados.
Nota
Los parámetros TLSv1.1 y TLSv1.2 solo funcionan cuando se utiliza OpenSSL 1.0.1 o superior.
El parámetro TLSv1.3 solo funciona cuando se utiliza OpenSSL 1.1.1 o superior.
ssl_reject_handshake#
Si está habilitado, los handshakes SSL en el bloque server serán rechazados.
Por ejemplo, en la siguiente configuración, los handshakes SSL con nombres de servidor distintos a example.com son rechazados:
server {
listen 443 ssl default_server;
ssl_reject_handshake on;
}
server {
listen 443 ssl;
server_name example.com;
ssl_certificate example.com.crt;
ssl_certificate_key example.com.key;
}
ssl_session_cache#
| |
Predeterminado |
|
http, server |
Establece los tipos y tamaños de cachés que almacenan parámetros de sesión. Una caché puede ser de cualquiera de los siguientes tipos:
| el uso de una caché de sesión está estrictamente prohibido: Angie explícitamente le dice al cliente que las sesiones no pueden ser reutilizadas. |
| el uso de una caché de sesión está suavemente deshabilitado: Angie le dice al cliente que las sesiones pueden ser reutilizadas, pero no almacena realmente los parámetros de sesión en la caché. |
| una caché integrada en OpenSSL; utilizada por un solo proceso de trabajo. El tamaño de la caché se especifica en sesiones. Si no se proporciona el tamaño, es igual a 20480 sesiones. El uso de la caché integrada puede causar fragmentación de memoria. |
| una caché compartida entre todos los procesos de trabajo. El tamaño de la caché se especifica en bytes; un megabyte puede almacenar aproximadamente 4000 sesiones. Cada caché compartida debe tener un nombre arbitrario. Una caché con el mismo nombre puede ser utilizada en varios servidores virtuales. También se utiliza para generar automáticamente, almacenar y rotar periódicamente las claves de ticket de sesión TLS a menos que se configure explícitamente usando la directiva ssl_session_ticket_key. |
Ambos tipos de caché pueden ser utilizados simultáneamente, por ejemplo:
ssl_session_cache builtin:1000 shared:SSL:10m;
pero usar solo la caché compartida sin la caché integrada debería ser más eficiente.
ssl_session_ticket_key#
Establece un archivo con la clave secreta utilizada para cifrar y descifrar tickets de sesión TLS. La directiva es necesaria si la misma clave necesita ser compartida entre múltiples servidores. Por defecto, se utiliza una clave generada aleatoriamente.
Si se especifican varias claves, solo la primera clave se utiliza para cifrar los tickets de sesión TLS. Esto permite configurar la rotación de claves, por ejemplo:
ssl_session_ticket_key current.key;
ssl_session_ticket_key previous.key;
El archivo debe contener 80 o 48 bytes de datos aleatorios y puede crearse utilizando el siguiente comando:
$ openssl rand 80 > ticket.key
Dependiendo del tamaño del archivo, se utilizará AES256 (para claves de 80 bytes) o AES128 (para claves de 48 bytes) para el cifrado.
ssl_session_tickets#
Habilita o deshabilita la reanudación de sesión a través de tickets de sesión TLS.
ssl_session_timeout#
Especifica un tiempo durante el cual un cliente puede reutilizar los parámetros de sesión.
ssl_stapling#
Habilita o deshabilita el grapado de respuestas OCSP por el servidor. Ejemplo:
ssl_stapling on;
resolver 127.0.0.53;
Para que el grapado OCSP funcione, el certificado del emisor del certificado del servidor debe ser conocido. Si el archivo ssl_certificate no contiene certificados intermedios, el certificado del emisor del certificado del servidor debe estar presente en el archivo especificado por la directiva ssl_trusted_certificate.
Advertencia
Para la resolución del nombre de host del respondedor OCSP, también debe especificarse la directiva resolver.
ssl_stapling_file#
Cuando se establece, la respuesta OCSP grapada se tomará del archivo especificado en lugar de consultar al respondedor OCSP especificado en el certificado del servidor.
El archivo debe estar en formato DER, tal como lo produce el comando openssl ocsp.
ssl_stapling_responder#
Sobrescribe la URI del respondedor OCSP especificada en la extensión de certificado "Authority Information Access".
Solo se admiten respondedores OCSP http://:
ssl_stapling_responder http://ocsp.example.com/;
ssl_stapling_verify#
Habilita o deshabilita la verificación de respuestas OCSP por el servidor.
Para que la verificación funcione, el certificado del emisor del certificado del servidor, el certificado raíz y todos los certificados intermedios deben configurarse como confiables utilizando la directiva ssl_trusted_certificate.
ssl_trusted_certificate#
Especifica un archivo con certificados CA de confianza en formato PEM utilizados para verificar certificados de cliente y respuestas OCSP si ssl_stapling está habilitado.
A diferencia del conjunto de certificados establecido por ssl_client_certificate, la lista de estos certificados no se enviará a los clientes.
ssl_verify_client#
| |
Predeterminado |
|
http, server |
Habilita la verificación de certificados de cliente. El resultado de la verificación se almacena en la variable $ssl_client_verify.
| solicita el certificado del cliente y lo verifica si el certificado está presente. |
| solicita el certificado del cliente pero no requiere que esté firmado por un certificado CA de confianza. Esto está destinado a usarse en casos en los que un servicio externo a Angie realiza la verificación real del certificado. |
ssl_verify_depth#
Establece la profundidad de verificación en la cadena de certificados del cliente.
Procesamiento de errores#
El módulo http_ssl admite varios códigos de error no estándar que pueden utilizarse para redirecciones mediante la directiva error_page:
| se ha producido un error durante la verificación del certificado del cliente; |
| un cliente no ha presentado el certificado requerido; |
| se ha enviado una solicitud normal al puerto HTTPS. |
La redirección ocurre después de que la solicitud se analiza completamente y las variables, como $request_uri, $uri, $args y otras, están disponibles.
Variables integradas#
El módulo http_ssl admite variables integradas: devuelve el protocolo seleccionado por ALPN durante el handshake SSL, o una cadena vacía en caso contrario. devuelve el nombre del cifrado utilizado para una conexión SSL establecida. devuelve la lista de cifrados compatibles con el cliente. Los cifrados conocidos se enumeran por nombres, los desconocidos se muestran en hexadecimal, por ejemplo: Nota La variable solo es totalmente compatible cuando se utiliza OpenSSL versión 1.0.2 o superior. Con versiones anteriores, la variable solo está disponible para nuevas sesiones y enumera únicamente los cifrados conocidos. devuelve el certificado del cliente en formato PEM (codificado en URL) para una conexión SSL establecida. devuelve la huella SHA1 del certificado del cliente para una conexión SSL establecida. devuelve la cadena "issuer DN" del certificado del cliente para una conexión SSL establecida según RFC 2253. devuelve la cadena "issuer DN" del certificado del cliente para una conexión SSL establecida. devuelve el certificado del cliente en formato PEM para una conexión SSL establecida. devuelve la cadena "subject DN" del certificado del cliente para una conexión SSL establecida según RFC 2253. devuelve la cadena "subject DN" del certificado del cliente para una conexión SSL establecida. devuelve el número de serie del certificado del cliente para una conexión SSL establecida. devuelve el algoritmo de firma del certificado del cliente para una conexión SSL establecida. Nota La variable solo es compatible cuando se utiliza OpenSSL versión 3.5 o superior. Con versiones anteriores, el valor de la variable será una cadena vacía. Nota La variable solo está disponible para nuevas sesiones. devuelve la fecha de finalización del certificado del cliente. devuelve el número de días hasta que caduque el certificado del cliente. devuelve la fecha de inicio del certificado del cliente. devuelve el resultado de la verificación del certificado del cliente: devuelve la curva negociada utilizada para el intercambio de claves durante el handshake SSL. Las curvas conocidas se enumeran por nombres, las desconocidas se muestran en hexadecimal, por ejemplo: Nota La variable solo es compatible cuando se utiliza OpenSSL versión 3.0 o superior. Con versiones anteriores, el valor de la variable será una cadena vacía. devuelve la lista de curvas compatibles con el cliente. Las curvas conocidas se enumeran por nombres, las desconocidas se muestran en hexadecimal, por ejemplo: Nota La variable solo es compatible cuando se utiliza OpenSSL versión 1.0.2 o superior. Con versiones anteriores, el valor de la variable será una cadena vacía. Nota La variable solo está disponible para nuevas sesiones. devuelve "1" si se utilizan datos tempranos de TLS 1.3 y el handshake no está completo, de lo contrario "". Added in version 1.11.0. devuelve "1" si el devuelve el protocolo de una conexión SSL establecida. toma los valores devuelve el nombre del servidor solicitado a través de SNI. devuelve el identificador de sesión de una conexión SSL establecida. devuelve "r" si se reutilizó una sesión SSL, o "." en caso contrario. devuelve el algoritmo de firma del certificado del servidor para una conexión SSL establecida. Nota La variable solo es compatible cuando se utiliza OpenSSL versión 3.5 o superior. Con versiones anteriores, el valor de la variable será una cadena vacía. Nota La variable solo está disponible para nuevas sesiones. devuelve la lista de algoritmos de firma ofrecidos por el cliente durante el handshake SSL, como una lista separada por dos puntos. Nota Con OpenSSL versión 4.0 o superior, los algoritmos se devuelven por nombre;
un algoritmo sin nombre recurre a su código hexadecimal sin procesar. Las
bibliotecas SSL que exponen la API de algoritmos de firma más antigua
devuelven todos los algoritmos como códigos hexadecimales sin procesar. Las
compilaciones sin una API de algoritmos de firma compatible devuelven un
valor vacío.$ssl_alpn_protocol#$ssl_cipher#$ssl_ciphers#AES128-SHA:AES256-SHA:0x00ff
$ssl_client_escaped_cert#$ssl_client_fingerprint#$ssl_client_i_dn#$ssl_client_i_dn_legacy#$ssl_client_raw_cert#$ssl_client_s_dn#$ssl_client_s_dn_legacy#$ssl_client_serial#$ssl_client_sigalg#$ssl_client_v_end#$ssl_client_v_remain#$ssl_client_v_start#$ssl_client_verify#SUCCESS, FAILED:reason, y NONE si no se presentó un certificado.$ssl_curve#prime256v1
$ssl_curves#0x001d:prime256v1:secp521r1:secp384r1
$ssl_early_data#$ssl_encrypted_hello#ClientHello se descifró mediante la extensión TLS
Encrypted Client Hello (ECH), de lo contrario "".$ssl_protocol#$ssl_server_cert_type#RSA, DSA, ECDSA, ED448,
ED25519, SM2, RSA-PSS, o unknown dependiendo
del tipo de certificado y clave del servidor.$ssl_server_name#$ssl_session_id#$ssl_session_reused#$ssl_sigalg#$ssl_sigalgs#