Ir al contenido

Caché de conexiones HTTP Pix

Las solicitudes HTTP Pix utilizan su propia caché de conexiones, independiente de la caché de sesiones del HSM. Abrir una nueva conexión implica repetir el protocolo de enlace TLS, y cada protocolo de enlace completo utiliza la clave privada del HSM; reutilizar la conexión evita ambos costes.

La caché almacena las conexiones HTTP ya establecidas con el par. Cada solicitud de un identificador en el modo predeterminado toma prestada una conexión y la devuelve al finalizar, de modo que el número de conexiones se ajusta a la concurrencia real de la aplicación, y no al número de identificadores abiertos. Los identificadores creados con DN_PIX_NO_CACHE no forman parte de la caché.

Características de la caché de conexiones HTTP:

  1. Intraproceso: al igual que la caché de sesiones, la caché se gestiona por proceso. Dos aplicaciones en la misma máquina no comparten conexiones;
  2. Una conexión por entrada: cada entrada de la caché mantiene exactamente una conexión, por lo que el número de entradas es igual al número de conexiones abiertas con el par;
  3. Selección MRU: de entre las conexiones libres equivalentes, se elige la que se ha utilizado más recientemente. Esto mantiene activa una pequeña parte de las conexiones y deja que el resto caduquen por inactividad, en lugar de distribuir el tráfico entre todas ellas.

Reutilización

Una conexión solo se reutiliza para una solicitud equivalente. Se tienen en cuenta:

  • la identidad autenticada en el HSM;
  • los identificadores de la clave privada, del certificado y de la cadena del par;
  • el destino (servidor:puerto).

Dado que el destino forma parte del criterio, un mismo identificador utilizado con dos puntos finales diferentes mantiene una conexión para cada uno de ellos, en lugar de volver a conectarse cada vez que se cambia de uno a otro.

Reanudación de una sesión TLS (session resumption)

Al establecer una nueva conexión, el cliente intenta reanudar la sesión TLS de otra conexión equivalente, lo que evita un handshake completo. La reanudación (session resumption) se realiza mediante el identificador de sesión (session ID): los tickets de sesión (RFC 5077) están desactivados en el cliente HTTP, por lo que la reanudación solo se produce cuando el par mantiene un caché de session ID en el lado del servidor.

Un handshake reanudado no envía CertificateVerify y, por lo tanto, no utiliza la clave privada del HSM. Eso es lo que hace que la reconexión resulte económica, y es la diferencia observable entre los contadores de handshakes y de firmas en el HSM.

Ociosidad y límites

Una conexión que permanezca inactiva durante más tiempo que el TTL de inactividad se cerrará en la siguiente ronda de comprobación. Este tiempo se configura mediante la variable de entorno HSM_PIX_POOL_IDLE_TTL.

El número máximo de conexiones se configura mediante HSM_PIX_POOL_MAX_HANDLES. Al tratarse de una conexión por entrada, este es el propio límite máximo de conexiones simultáneas que se presenta al par. El valor por defecto es ilimitado, lo que hace que la caché crezca en función de la concurrencia de la aplicación; al alcanzar un límite configurado, la solicitud falla en lugar de abrir una conexión que supere dicho límite.

Ambas variables también se pueden ajustar en tiempo de ejecución mediante la función DPIXSetCacheParam().

Intercambio de certificados

Los objetos del HSM (clave privada, certificado y cadena) se leen durante el handshake. Una conexión ya establecida no los vuelve a leer, por lo que un intercambio programado solo entra en vigor cuando se restablece la conexión.

Para evitar esperas, borra la caché con DPIXSetCacheParam() utilizando PIXCP_CLEAR: las conexiones inactivas se cierran inmediatamente y las que están en uso, al finalizar la solicitud en curso. La siguiente solicitud abre una nueva conexión y vuelve a leer los objetos.

Contadores

La función DPIXGetCacheParam() con PIXCP_STATS devuelve los contadores de la caché, útiles para ajustar el límite y realizar un seguimiento del coste de las conexiones: conexiones activas, en uso, máximo alcanzado hasta el momento, conexiones cerradas por inactividad, handshakes TLS y firmas realizadas en el HSM.

Para obtener más información sobre la configuración , consulta el tema «Sesiones» en Pix.