Citrix ADC

Expresiones de directiva avanzadas: Analizar SSL

Existen expresiones de directiva avanzadas para analizar certificados SSL y mensajes de saludo de cliente SSL.

Analizar certificados SSL

Puede utilizar expresiones de directiva avanzadas para evaluar certificados de cliente de Capa de sockets seguros (SSL) X.509. Un certificado de cliente es un documento electrónico que se puede utilizar para autenticar la identidad de un usuario. Un certificado de cliente contiene (como mínimo) información de versión, un número de serie, un ID de algoritmo de firma, un nombre de emisor, un período de validez, un nombre de sujeto (usuario), una clave pública y firmas.

Puede examinar tanto las conexiones SSL como los datos de los certificados de cliente. Por ejemplo, puede que quiera enviar solicitudes SSL que utilicen cifrados de baja intensidad a una granja de servidores virtuales de equilibrio de carga determinada. El siguiente comando es un ejemplo de una directiva de conmutación de contenido que analiza la intensidad de cifrado en una solicitud y coincide con las fortalezas de cifrado que son menores o iguales a 40:

add cs policy p1 -rule "client.ssl.cipher_bits.le(40)"

Como otro ejemplo, puede configurar una directiva que determine si una solicitud contiene un certificado de cliente:

add cs policy p2 -rule "client.ssl.client_cert exists"

O bien, puede configurar una directiva que examine información concreta en un certificado de cliente. Por ejemplo, la directiva siguiente verifica que el certificado tenga uno o más días antes de su vencimiento:

add cs policy p2 -rule "client.ssl.client_cert exists && client.ssl.client_cert.days_to_expire.ge(1)"

Nota

Para obtener información sobre el análisis de fechas y horas en un certificado, consulte Formato de fechas y horas en una expresión y Expresiones para fechas de certificado SSL.

Prefijos para datos SSL y certificados basados en texto

En la tabla siguiente se describen los prefijos de expresión que identifican elementos basados en texto en transacciones SSL y certificados de cliente.

Tabla 1. Prefijos que devuelven valores de texto o booleanos para SSL y datos de certificados de cliente

Prefijo Descripción
CLIENT.SSL.CLIENT_CERT Devuelve el certificado de cliente SSL en la transacción SSL actual.
CLIENT.SSL.CLIENT_CERT.TO_PEM Devuelve el certificado de cliente SSL en formato binario.
CLIENT.SSL.CIPHER_EXPORTABLE Devuelve un valor booleano TRUE si el cifrado criptográfico SSL criptográfico SSL es exportable.
CLIENT.SSL.NOMBRE_CIFRADO Devuelve el nombre del cifrado SSL si se invoca desde una conexión SSL, y una cadena NULL si se invoca desde una conexión que no sea SSL.
CLIENT.SSL.IS_SSL Devuelve un valor booleano TRUE si la conexión actual está basada en SSL.

Prefijos de datos numéricos en certificados SSL

En la tabla siguiente se describen los prefijos que evalúan datos numéricos distintos de las fechas de los certificados SSL. Estos prefijos se pueden utilizar con las operaciones que se describen en Operaciones básicas en prefijos de expresión y Operaciones compuestas para números.

Tabla 2. Prefijos que evalúan datos numéricos distintos de fechas en certificados SSL

Prefijo Descripción
CLIENT.SSL.CLIENT_CERT.DAYS_TO_EXPIPIRE Devuelve el número de días que el certificado es válido, o devuelve -1 para los certificados caducados.
CLIENT.SSL.CLIENT_CERT.PK_SIZE Devuelve el tamaño de la clave pública utilizada en el certificado.
CLIENT.SSL.CLIENT_CERT.VERSION Devuelve el número de versión del certificado. Si la conexión no está basada en SSL, devuelve cero (0).
CLIENT.SSL.CIPHER_BITS Devuelve el número de bits de la clave criptográfica. Devuelve 0 si la conexión no está basada en SSL.
CLIENT.SSL.VERSION Devuelve un número que representa la versión del protocolo SSL, como se indica a continuación: 0. La transacción no está basada en SSL.; 0x002. La transacción es SSLv2.; 0x300. La transacción es SSLv3.; 0x301. La transacción es TLSv1.; 0x302. La transacción es TLS 1.1.; 0x303. La transacción es TLS 1.2; 0x304. La transacción es TLS 1.3.

Nota

Para ver las expresiones relacionadas con las fechas de caducidad de un certificado, consulte Expresiones para fechas de certificado SSL.

Expresiones para certificados SSL

Puede analizar certificados SSL configurando expresiones que utilicen el prefijo siguiente:

CLIENT.SSL.CLIENT_CERT

En esta sección se describen las expresiones que puede configurar para certificados, excepto las que examinan la caducidad del certificado. Las operaciones basadas en el tiempo se describen en Expresiones de directiva avanzadas: Trabajar con fechas, horas y números.

En la tabla siguiente se describen las operaciones que puede especificar para el prefijo CLIENT.SSL.CLIENT_CERT.

Tabla 3. Operaciones que se pueden especificar con el prefijo CLIENT.SSL.CLIENT_CERT

Operación del certificado SSL Descripción
<certificate>.EXISTS Devuelve un valor booleano TRUE si el cliente tiene un certificado SSL.
<certificate>.ISSUER Devuelve el nombre distinguido (DN) del emisor en el certificado como una lista nombre-valor. Un signo igual (“=”) es el delimitador para el nombre y el valor, y la barra diagonal (“/”) es el delimitador que separa los pares nombre-valor. A continuación se muestra un ejemplo del DN devuelto: /C=US/O=myCompany/OU=www.mycompany.com/CN=www.mycompany.com/emailAddress=myuserid@mycompany.com
<certificate>.ISSUER. IGNORE_EMPTY_ELEMENTS Devuelve el Emisor e ignora los elementos vacíos en una lista nombre-valor. Por ejemplo, considere lo siguiente: Cert-Emisor: /c =in/st=kar//l=bangelore //o =miempresa/ou=ventas/ /emailAddress = myuserid@mycompany.com. La siguiente acción de reescritura devuelve un recuento de 6 basado en la definición del emisor anterior: sh rewrite action insert_ssl_headerNombre: Insert_ssl\Operation: insert_http_header Target:Cert-Issuer Value:CLIENT.SSL.CLIENT_CERT.ISSUER.COUNT. Sin embargo, si cambia el valor al siguiente, el recuento devuelto es 9: CLIENT.SSL.CLIENT_CERT.ISSUER.IGNORE_EMPTY_ELEMENTS.COUNT

Analizar cliente SSL hello

Puede analizar el mensaje de saludo del cliente SSL configurando expresiones que utilicen el prefijo siguiente:

Prefijo Descripción
CLIENT.SSL.CLIENT_HELLO.CIPHERS.HAS_HEXCODE Coincide con el código hexadecimal proporcionado en la expresión con los códigos hexadecimales de conjuntos de cifrado recibidos en el mensaje de saludo del cliente.
CLIENT.SSL.CLIENT_HELLO.CLIENT_VERSION Versión recibida en el encabezado del mensaje de saludo del cliente.
CLIENT.SSL.CLIENT_HELLO.IS_RENEGOTIATE Devuelve true si un cliente o servidor inicia la renegociación de la sesión.
CLIENT.SSL.CLIENT_HELLO.IS_REUSE Devuelve true si el dispositivo vuelve a utilizar la sesión SSL en función del identificador de sesión distinto de cero recibido en el mensaje cliente-hello.
CLIENT.SSL.CLIENT_HELLO.IS_SCSV Devuelve true si la capacidad Signaling Cipher Suite Value (SCSV) se anuncia en el mensaje de saludo del cliente. El código hexadecimal para SCSV de reserva es 0x5600.
CLIENT.SSL.CLIENT_HELLO.IS_SESSION_TICKET Devuelve true si la extensión de tíquet de sesión con longitud distinta de cero se anuncia en el mensaje cliente-hello.
CLIENT.SSL.CLIENT_HELLO.LENGTH Longitud recibida en el encabezado del mensaje de saludo del cliente.
CLIENT.SSL.CLIENT_HELLO.SNI Devuelve el nombre del servidor recibido en la extensión Nombre del servidor del mensaje saludo del cliente.
CLIENT.SSL.CLIENT_HELLO.ALPN.HAS_NEXTPROTOCOL Devuelve true si el protocolo de aplicación en la extensión ALPN recibida en el mensaje saludo del cliente coincide con el protocolo proporcionado en la expresión.

Estas expresiones se pueden utilizar en el punto de enlace CLIENTHELLO_REQ. Para obtener más información, consulte Enlace de directivas SSL.

Expresiones de directiva avanzadas: Analizar SSL