Citrix ADC

Configurar la acción SSL para reenviar el tráfico del cliente

Al analizar el mensaje de saludo del cliente, un dispositivo Citrix ADC puede reenviar el tráfico del cliente mediante una acción de reenvío SSL asociada a una directiva SSL. La directiva está enlazada al servidor virtual en el punto de enlace de solicitud de saludo del cliente. Algunos casos de uso en los que se puede utilizar el reenvío se describen en las siguientes secciones. Para obtener información acerca de cómo configurar una acción de reenvío SSL si no se admite un cifrado en un dispositivo Citrix ADC, consulte Configurar la acción SSL para reenviar tráfico de cliente si no se admite un cifrado en el ADC.

En la siguiente ilustración se explica el flujo de tráfico. El servidor virtual de reenvío es de tipo SSL_TCP en esta ilustración.

Flujo de tráfico de acción de reenvío SSL

  1. Un cliente inicia el protocolo de enlace SSL y envía el mensaje de saludo del cliente al dispositivo ADC.
  2. El dispositivo evalúa la directiva configurada mediante los parámetros del mensaje de saludo del cliente.
  3. Si la directiva se evalúa como false, el tráfico descifrado se reenvía al servicio HTTP y, a continuación, al servidor back-end.
  4. Si la directiva se evalúa como true, el tráfico se reenvía al servidor virtual de reenvío definido en la acción.
  5. El servidor virtual de reenvío completa el enlace con el cliente.
  6. Todo el tráfico que reúne la regla de directiva se reenvía al servicio back-end a través del servicio enlazado al servidor virtual de reenvío.

Configurar una acción SSL para reenviar el tráfico de cliente si el dispositivo no tiene un certificado específico de dominio (SNI)

Nota: Esta función está disponible en la versión 12.1 compilación 49.x y versiones posteriores.

En el mensaje de saludo del cliente, puede recibir una solicitud para un dominio para el que el certificado no está disponible en el dispositivo. En este caso, puede configurar una acción SSL para reenviar el tráfico del cliente a un servidor virtual diferente. En el siguiente ejemplo, hemos configurado un servidor virtual SSL como servidor virtual de reenvío. Esta configuración garantiza que todas las conexiones que fallan debido a la falta de un certificado SNI en el servidor virtual original se realizan correctamente en el servidor virtual de reenvío.

Siga estos pasos:

  1. Agregue un servidor virtual de equilibrio de carga de tipo SSL (Por ejemplo, VMain). El tráfico de cliente se recibe en este servidor virtual.
  2. Agregue certificados de servidor y CA y enlazarlos al servidor virtual SSL.
  3. Agregue un servicio SSL con el puerto 443.
  4. Enlace este servicio al servidor virtual SSL.
  5. Agregue otro servidor virtual de equilibrio de carga de tipo SSL/SSL_TCP/TCP/SSL_BRIDGE para reenviar el tráfico a. (Por ejemplo, fwd-vserver).
  6. Agregue un servicio y vincularlo a este servidor virtual.
  7. Agregue una acción de reenvío SSL que especifique el servidor virtual SSLfwd-vserver en el parámetro “reenviar”.
  8. Agregue una directiva SSL (por ejemplo, pol-ssl-sni) que especifique la acción anterior si se recibe un nombre de dominio específico (SNI) en el mensaje de saludo del cliente.
  9. Enlazar esta directiva al servidor virtual SSL en CLIENTHELLO_REQ.
  10. Guarde la configuración.

Configuración mediante la CLI

Configuración para el servidor virtual SSL al que reenviar el tráfico:

add lb vserver fwd-vserver SSL 198.51.100.20 443
add ssl certkey sv -cert complete/server/server_rsa_2048.pem -key complete/server/server_rsa_2048.ky
add ssl certkey cacert -cert SHA256-RSA-PEM_512.pem -key SHA256-RSA-PEM_512.ky
bind ssl vserver fwd-vserver -certkeyName sv
bind ssl vserver fwd-vserver -certkeyName cacert -CA
add service ssl-service2 198.51.100.18 SSL 443
bind lb vserver fwd-vserver ssl-service2

Configuración para el servidor virtual SSL que recibe originalmente el tráfico del cliente:

add service ssl-service 198.51.100.5 SSL 443
add lb vserver vMain SSL 198.51.100.25 443
bind ssl vserver vMain -certkeyName sv
bind lb vserver vMain ssl-service
set ssl vserver vMain -sni ENABLED
add ssl certKey snicert2 -cert /nsconfig/ssl/complete/SNI/server/serverabc.pem -key /nsconfig/ssl/complete/SNI/server/serverabc.ky
add ssl certKey snicert -cert /nsconfig/ssl/complete/SNI/server/serverabcnetscaler.pem -key /nsconfig/ssl/complete/SNI/server/serverabcnetscaler.ky
bind ssl vserver vMain -certkeyName snicert -sniCert
bind ssl vserver vMain -certkeyName snicert2 -sniCert

Configuración de directivas para el servidor virtual SSL vMain:

add ssl action act_ssl_fwd -forward fwd-vserver
add ssl policy pol-ssl-sni -rule client.ssl.client_hello.sni.contains("xyz") -action act_ssl_fwd
bind ssl vserver vMain -policyName pol-ssl-sni -type CLIENTHELLO_REQ -priority 1
sh ssl vserver vMain

    Advanced SSL configuration for VServer vMain:
    DH: DISABLED
    DH Private-Key Exponent Size Limit: DISABLED    Ephemeral RSA: ENABLED  Refresh Count: 0
    Session Reuse: ENABLED  Timeout: 120 seconds
    Cipher Redirect: DISABLED
    SSLfwd-vserver Redirect: DISABLED
    ClearText Port: 0
    Client Auth: DISABLED
    SSL Redirect: DISABLED
    Non FIPS Ciphers: DISABLED
    SNI: ENABLED
    OCSP Stapling: DISABLED
    HSTS: DISABLED
    HSTS IncludeSubDomains: NO
    HSTS Max-Age: 0
    SSLfwd-vserver: DISABLED  SSLv3: ENABLED  TLSv1.0: ENABLED  TLSv1.1: ENABLED  TLSv1.2: ENABLED  TLSv1.3: DISABLED
    Push Encryption Trigger: Always
    Send Close-Notify: YES
    Strict Sig-Digest Check: DISABLED
    Zero RTT Early Data: DISABLED
    DHE Key Exchange With PSK: NO
    Tickets Per Authentication Context: 1

ECC Curve: P_256, P_384, P_224, P_521

1)  CertKey Name: sv    Server Certificate
2)  CertKey Name: snicert2  Server Certificate for SNI
3)  CertKey Name: snicert   Server Certificate for SNI


Data policy
1) Policy Name: pol-ssl-sni    Priority: 1



1) Cipher Name: DEFAULT
Description: Default cipher list with encryption strength >= 128bit
Done
sh ssl policy pol-ssl-sni
    Name: pol-ssl-sni
    Rule: client.ssl.client_hello.sni.contains("xyz")
    Action: act_ssl_fwd
    UndefAction: Use Global
    Hits: 0
    Undef Hits: 0


    Policy is bound to following entities
1)  Bound to: CLIENTHELLO_REQ VSERVER v1
    Priority: 1

Done
sh ssl action act_ssl_fwd
1)  Name: act_ssl_fwd
    Type: Data Insertion
    Forward to: fwd-vserver
    Hits: 0
    Undef Hits: 0
    Action Reference Count: 1
Done
sh ssl vserver fwd-vserver

    Advanced SSL configuration for VServer fwd-vserver:
    DH: DISABLED
    DH Private-Key Exponent Size Limit: DISABLED    Ephemeral RSA: ENABLED  Refresh Count: 0
    Session Reuse: ENABLED  Timeout: 120 seconds
    Cipher Redirect: DISABLED
    SSLfwd-vserver Redirect: DISABLED
    ClearText Port: 0
    Client Auth: DISABLED
    SSL Redirect: DISABLED
    Non FIPS Ciphers: DISABLED
    SNI: DISABLED
    OCSP Stapling: DISABLED
    HSTS: DISABLED
    HSTS IncludeSubDomains: NO
    HSTS Max-Age: 0
    SSLfwd-vserver: DISABLED  SSLv3: ENABLED  TLSv1.0: ENABLED  TLSv1.1: ENABLED  TLSv1.2: ENABLED  TLSv1.3: DISABLED
    Push Encryption Trigger: Always
    Send Close-Notify: YES
    Strict Sig-Digest Check: DISABLED
    Zero RTT Early Data: DISABLED
    DHE Key Exchange With PSK: NO
    Tickets Per Authentication Context: 1

    ECC Curve: P_256, P_384, P_224, P_521

1)  CertKey Name: sv    Server Certificate



1)  Cipher Name: DEFAULT
    Description: Default cipher list with encryption strength >= 128bit
Done

Configurar una acción SSL para reenviar el tráfico de cliente basado en el protocolo de aplicación en la extensión ALPN del mensaje de saludo del cliente

Nota: Esta función se admite en la versión 13.0 compilación 61.x y versiones posteriores.

Un dispositivo Citrix ADC puede identificar los protocolos que vienen en la extensión ALPN del mensaje de saludo del cliente mientras analiza el mensaje para la evaluación de directivas. La regla para identificar el protocolo en la extensión ALPN del mensaje de saludo del cliente es client.ssl.client_hello.alpn.has_nextprotocol<protocol_name>. Asocie una acción SSL de tipo “reenvío” con la directiva para reenviar los paquetes al servidor virtual de reenvío. El servidor virtual de reenvío puede ser de tipo SSL, SSL_TCP, SSL_BRIDGE o TCP.

Para negociar el protocolo de aplicación en la extensión ALPN para las conexiones controladas por el servidor virtual SSL_TCP, alpnProtocol se agrega un parámetro a los perfiles SSL front-end. Los valores admitidos para el parámetro son HTTP1.1, HTTP2 o NONE (valor predeterminado). Solo se negocia el protocolo especificado en el perfil SSL, si se recibe el mismo protocolo en la extensión ALPN del mensaje de saludo del cliente. La longitud máxima admitida de la extensión ALPN para la evaluación de directivas es de 4096 bytes.

Ejemplo de configuración para reenviar todas las solicitudes que contienen el protocolo HTTP2 en la extensión ALPN a un servidor virtual SSL_TCP

El servidor virtual SSL_TCP al que reenviar el tráfico es fwd-vserver-1.

Configuración para el servidor virtual SSL al que reenviar el tráfico:

add lb vserver fwd-vserver-1 SSL_TCP 198.51.100.20 443
add ssl certkey sv -cert complete/server/server_rsa_2048.pem -key complete/server/server_rsa_2048.ky
add ssl certkey rootCA -cert SHA256-RSA-PEM_512.pem -key SHA256-RSA-PEM_512.ky
bind ssl vserver fwd-vserver-1 -certkeyName sv
bind ssl vserver fwd-vserver-1 -certkeyName rootCA -CA
add service ssl-tcp-service 198.51.100.14 SSL_TCP 443
bind lb vserver fwd-vserver-1 ssl-tcp-service

Configuración para el servidor virtual SSL que recibe originalmente el tráfico del cliente:

add service ssl-service 198.51.100.5 SSL 443
add lb vserver vMain-alpn SSL 198.51.100.25 443
bind ssl vserver vMain-alpn -certkeyName sv
bind lb vserver vMain-alpn ssl-service

Configuración de directivas para el servidor virtual SSL VMain-Alpn:

add ssl action forward-action-alpn -forward fwd-vserver-1
add ssl policy pol-ssl-alpn -rule "client.ssl.client_hello.alpn.has_nextprotocol("h2")" -action forward-action-alpn
bind ssl vserver VMain-alpn -policyName pol-ssl-alpn -priority 2 -type CLIENTHELLO_REQ
sh ssl vserver vMain-alpn

    Advanced SSL configuration for VServer vMain-alpn:
    DH: DISABLED
    DH Private-Key Exponent Size Limit: DISABLED    Ephemeral RSA: ENABLED  Refresh Count: 0
    Session Reuse: ENABLED  Timeout: 120 seconds
    Cipher Redirect: DISABLED
    ClearText Port: 0
    Client Auth: DISABLED
    SSL Redirect: DISABLED
    Non FIPS Ciphers: DISABLED
    SNI: DISABLED
    OCSP Stapling: DISABLED
    HSTS: DISABLED
    HSTS IncludeSubDomains: NO
    HSTS Max-Age: 0
    HSTS Preload: NO
    SSLv3: ENABLED  TLSv1.0: ENABLED  TLSv1.1: ENABLED  TLSv1.2: ENABLED  TLSv1.3: DISABLED
    Push Encryption Trigger: Always
    Send Close-Notify: YES
    Strict Sig-Digest Check: DISABLED
    Zero RTT Early Data: DISABLED
    DHE Key Exchange With PSK: NO
    Tickets Per Authentication Context: 1

    ECC Curve: P_256, P_384, P_224, P_521

1)  CertKey Name: sv    Server Certificate


    Data policy
1)  Policy Name: pol-ssl-alpn   Priority: 2



1)  Cipher Name: DEFAULT
    Description: Default cipher list with encryption strength >= 128bit
 Done
sh ssl policy pol-ssl-alpn
    Name: pol-ssl-alpn
    Rule: client.ssl.client_hello.alpn.has_nextprotocol("h2")
    Action: forward-action-alpn
    UndefAction: Use Global
    Hits: 0
    Undef Hits: 0


    Policy is bound to following entities
1)  Bound to: CLIENTHELLO_REQ VSERVER VMain-alpn
    Priority: 2

 Done
sh ssl action forward-action-alpn
1)  Name: forward-action-alpn
    Type: Data Insertion
    Forward to: fwd-vserver-1
    Hits: 0
    Undef Hits: 0
    Action Reference Count: 1
 Done
sh ssl vserver fwd-vserver-1
    Advanced SSL configuration for VServer fwd-vserver-1:
    DH: DISABLED
    DH Private-Key Exponent Size Limit: DISABLED    Ephemeral RSA: ENABLED  Refresh Count: 0
    Session Reuse: ENABLED  Timeout: 120 seconds
    Cipher Redirect: DISABLED
    ClearText Port: 0
    Client Auth: DISABLED
    SSL Redirect: DISABLED
    Non FIPS Ciphers: DISABLED
    SNI: DISABLED
    OCSP Stapling: DISABLED
    HSTS: DISABLED
    HSTS IncludeSubDomains: NO
    HSTS Max-Age: 0
    HSTS Preload: NO
    SSLv3: ENABLED  TLSv1.0: ENABLED  TLSv1.1: ENABLED  TLSv1.2: ENABLED  TLSv1.3: DISABLED
    Push Encryption Trigger: Always
    Send Close-Notify: YES
    Strict Sig-Digest Check: DISABLED
    Zero RTT Early Data: DISABLED
    DHE Key Exchange With PSK: NO
    Tickets Per Authentication Context: 1

    ECC Curve: P_256, P_384, P_224, P_521

1)  CertKey Name: sv    Server Certificate
2)  CertKey Name: rootCA    CA Certificate  OCSPCheck: Optional CA_Name Sent



1)  Cipher Name: DEFAULT
    Description: Default cipher list with encryption strength >= 128bit
 Done