Citrix ADC

Acciones integradas SSL y acciones definidas por el usuario

A menos que solo necesite las acciones integradas en sus directivas, debe crear las acciones antes de crear las directivas. A continuación, puede especificar las acciones al crear las directivas. Las acciones integradas son de dos tipos, acciones de control y acciones de datos. Las acciones de control se utilizan en las directivas de control y las acciones de datos en las directivas de datos.

Las acciones de control integradas son:

  • doClientAuth—Ejecute la autenticación de certificados de cliente.
  • NoClientAuth—No realice la autenticación de certificados de cliente.

Las acciones de datos integradas son:

  • Restablecer: Cierre la conexión enviando un paquete RST al cliente.
  • Descartar: Suelta todos los paquetes del cliente. La conexión permanece abierta hasta que el cliente la cierra.
  • Noop: Reenvía el paquete sin realizar ninguna operación en él.

Puede crear acciones de datos definidas por el usuario. Si habilita la autenticación de cliente, puede crear una acción SSL para insertar datos de certificado de cliente en el encabezado de solicitud antes de reenviar la solicitud al servidor web.

Si una evaluación de directivas resulta en un estado indefinido, se realiza una acción del FNUD. Para una directiva de datos o una directiva de control, puede especificar RESET, DROP o NOOP como acción UNDEF. Para una directiva de control, también tiene la opción de especificar DOCENTEAUTH o NOCLIENTEAUTH.

Ejemplos de acciones integradas en una directiva

En el ejemplo siguiente, si el cliente envía un cifrado distinto de un cifrado de categoría EXPORT, el dispositivo Citrix ADC solicita la autenticación del cliente. El cliente tiene que proporcionar un certificado válido para una transacción correcta.

add ssl policy pol1 -rule CLIENT.SSL.CIPHER_EXPORTABLE.NOT -reqAction DOCLIENTAUTH

En los ejemplos siguientes se supone que la autenticación de cliente está habilitada.

Si la versión del certificado proporcionado por el usuario coincide con la versión de la directiva, no se realiza ninguna acción y se reenvía el paquete:

add ssl policy pol1 -rule CLIENT.SSL.CLIENT_CERT.VERSION.EQ(2) -reqAction NOOP

Si la versión del certificado proporcionado por el usuario coincide con la versión de la directiva, se elimina la conexión:

add ssl policy pol1 -rule CLIENT.SSL.CLIENT_CERT.VERSION.EQ(2) -reqAction DROP

Si la versión del certificado proporcionado por el usuario coincide con la versión de la directiva, se restablece la conexión:

add ssl policy pol1 -rule CLIENT.SSL.CLIENT_CERT.VERSION.EQ(2) -reqAction RESET

Verificación de certificados de cliente con autenticación de cliente basada en directivas

Puede establecer la verificación de certificados de cliente como obligatoria u opción cuando haya configurado la autenticación de cliente basada en directivas. El valor predeterminado es obligatorio.

Establezca la verificación de certificados de cliente como opcional mediante la CLI

En el símbolo del sistema, escriba:

add ssl action <name> ((-clientAuth ( DOCLIENTAUTH | NOCLIENTAUTH ) [-clientCertVerification ( Mandatory | Optional )]

Ejemplo:

add ssl action sslact -clientauth DOCLIENTAUTH -clientcertverification OPTIONAL

Establezca la verificación de certificados de cliente como opcional mediante la interfaz gráfica de usuario

  1. Vaya a Administración del tráfico > SSL > Directivas.

  2. En la ficha Acciones SSL, haga clic en Agregar.

  3. Especifique un nombre y, en la lista Verificación de certificados de cliente, seleccione Opcional.

Acciones SSL definidas por el usuario

Además de las acciones integradas, también puede configurar otras acciones SSL en función de su implementación. Estas acciones se denominan acciones definidas por el usuario.

Configurar una acción SSL definida por el usuario mediante la CLI

En el símbolo del sistema, escriba los siguientes comandos para configurar una acción y verificar la configuración:

add SSL action <name> -clientAuth(DOCLIENTAUTH | NOCLIENTAUTH) -clientCert (ENABLED | DISABLED) certHeader <string> -clientHeader <string> -clientCertSerialNumber (ENABLED | DISABLED) -certSerialHeader <string> -clientCertSubject (ENABLED | DISABLED) -certSubjectHeader <string> -clientCertHash (ENABLED | DISABLED) -certHashHeader <string> -clientCertIssuer (ENABLED | DISABLED) -certIssuerHeader <string> -sessionID (ENABLED | DISABLED) -sessionIDheader <string> -cipher (ENABLED | DISABLED) -cipherHeader <string> -clientCertNotBefore (ENABLED | DISABLED) -certNotBeforeHeader <string> -clientCertNotAfter (ENABLED | DISABLED) -certNotAfterHeader <string> -OWASupport (ENABLED | DISABLED)
show ssl action [<name>]

Ejemplo:

add ssl action Action-SSL-ClientCert -clientCert ENABLED -certHeader "X-Client-Cert"
show ssl action Action-SSL-ClientCert

1)      Name: Action-SSL-ClientCert
        Data Insertion Action:
        Cert Header: ENABLED            Cert Tag: X-Client-Cert
Done

Configurar una acción SSL definida por el usuario mediante la interfaz gráfica de usuario

Vaya a Administración del tráfico > SSL > Directivas y, en la ficha Acciones, haga clic en Agregar.

Configurar una acción SSL para reenviar tráfico de cliente a otro servidor virtual

Los administradores pueden configurar una acción SSL para reenviar el tráfico de cliente recibido en un servidor virtual SSL a otro servidor virtual para evitar la descarga de SSL. O para finalizar la conexión en el dispositivo ADC. Este servidor virtual puede ser de tipo: SSL, TCP o SSL_BRIDGE. Por ejemplo, los administradores pueden optar por reenviar la solicitud a otro servidor virtual para que realice más acciones en lugar de terminar la conexión si alguno de los siguientes casos:

  • El dispositivo no tiene certificado.
  • El dispositivo no admite un cifrado específico.

Para lograr lo anterior, se agrega un nuevo punto de enlace ‘CLIENTHELLO_REQ’ para evaluar el tráfico del cliente cuando se recibe un saludo de cliente. Si la directiva enlazada al servidor virtual que recibe tráfico de cliente se evalúa como true después de analizar el saludo del cliente, el tráfico se reenvía a otro servidor virtual. Si este servidor virtual es de tipo SSL, realiza el protocolo de enlace. Si este servidor virtual es de tipo TCP o SSL_BRIDGE, el servidor back-end realiza el protocolo de enlace.

En la versión 12.1-49.x, solo se admiten las acciones de reenvío y restablecimiento para el punto de enlace CLIENTHELLO_REQ. Los prefijos de expresión siguientes están disponibles:

  • CLIENT.SSL.CLIENT_HELLO.CIPHERS.HAS_HEXCODE
  • CLIENT.SSL.CLIENT_HELLO.CLIENT_VERSION
  • CLIENT.SSL.CLIENT_HELLO.IS_RENEGOTIATE
  • CLIENT.SSL.CLIENT_HELLO.IS_REUSE
  • CLIENT.SSL.CLIENT_HELLO.IS_SCSV
  • CLIENT.SSL.CLIENT_HELLO.IS_SESSION_TICKET
  • CLIENT.SSL.CLIENT_HELLO.LENGTH
  • CLIENT.SSL.CLIENT_HELLO.SNI
  • CLIENT.SSL.CLIENT_HELLO.ALPN.HAS_NEXTPROTOCOLO (de la versión 13.0 compilación 61.x)

Para obtener una descripción de estos prefijos, consulte Expresiones de directiva avanzadas: Analizar SSL.

forward Se agrega un parámetro aladd SSL action comando yCLIENTHELLO_REQ se agrega un nuevo punto de enlace albind ssl vserver comando.

Configuración mediante la CLI

En el símbolo del sistema, escriba:

add ssl action <name> -forward <virtual server name>

add ssl policy <name> -rule <expression> -action <string>

bind ssl vserver <vServerName> -policyName <string> -priority <positive_integer> -type <type>

EJEMPLO:

add ssl action act1 -forward v2

add ssl policy pol1 -rule client.ssl.client_hello.ciphers.has_hexcode(0x002f) -action act1

bind ssl vserver v1 -policyName pol1 -priority 1 -type CLIENTHELLO_REQ

Configuración mediante la GUI

Vaya a Administración del tráfico > SSL > Directivas.

Crear acción SSL:

  1. En Acciones SSL, haga clic en Agregar.
  2. En Crear acción SSL, especifique un nombre para la acción.
  3. En el Servidor virtual de acción directa, seleccione un servidor virtual existente o agregue un nuevo servidor virtual al que reenviar el tráfico.
  4. Opcionalmente, defina otros parámetros.
  5. Haga clic en Crear.

Crear directiva SSL:

  1. En Directivas SSL, haga clic en Agregar.
  2. En Crear directiva SSL, especifique un nombre para la directiva.
  3. En Acción, seleccione la acción que creó anteriormente.
  4. En el Editor de expresiones, escriba la regla que quiere evaluar.
  5. Haga clic en Crear.

Cree o agregue un servidor virtual y una directiva de enlace:

  1. Vaya a Administración del tráfico > Equilibrio de carga > Servidores virtuales.
  2. Agregue o seleccione un servidor virtual.
  3. En Configuración avanzada, haga clic en Directivas SSL.
  4. Haga clic en la sección Directiva SSL.
  5. En Seleccionar directiva, seleccione la directiva que creó anteriormente.
  6. En Enlace de directivas, especifique una prioridad para la directiva.
  7. En Tipo, seleccione CLIENTHELLO_REQ.
  8. Haga clic en Bind.
  9. Haga clic en Listo.

Para obtener información sobre la configuración de extremo a extremo para los casos de uso más populares, consulte los siguientes temas:

Acción SSL para seleccionar selectivamente CA basadas en SNI para la autenticación del cliente

Solo puede enviar la lista de CA basadas en SNI (dominio) en la solicitud de certificado de cliente en lugar de la lista de todas las CA enlazadas a un servidor virtual SSL. Por ejemplo, cuando se recibe un saludo de cliente, solo se envían los certificados de CA basados en la expresión de directiva SSL (por ejemplo, SNI). Para enviar un conjunto específico de certificados, debe crear un grupo de certificados de CA. A continuación, vincule este grupo a una acción SSL y vincule la acción a una directiva SSL. Si la directiva enlazada al servidor virtual que recibe tráfico de cliente se evalúa como true después de analizar el saludo del cliente, solo se envía un grupo de certificados de CA específico en el certificado de solicitud de cliente.

Anteriormente, tenía que enlazar certificados de CA a un servidor virtual SSL. Con esta mejora, puede simplemente agregar grupos de certificados de CA y asociarlos a una acción SSL.

Nota: Habilite la autenticación de cliente y SNI en el servidor virtual SSL. Enlazar los certificados SNI correctos al servidor virtual.

Siga estos pasos:

  1. Agregue un grupo de certificados de CA.

  2. Agregue pares de claves de certificado.

  3. Enlazar los pares de clave de certificado a este grupo.

  4. Agregue una acción SSL.

  5. Agregue una directiva SSL. Especifique la acción en la directiva.

  6. Enlazar la directiva a un servidor virtual SSL. Especifique el punto de enlace como CLIENTHELLO_REQ.

Configuración mediante la CLI

En el símbolo del sistema, escriba los siguientes comandos en una secuencia:

add ssl caCertGroup <caCertGroupName>
add ssl certkey <certkey_name> -cert <cert> -key <key>
bind ssl caCertGroup <caCertGroupName> <certkey_name>
add ssl action <name> -caCertGrpName <string>
add ssl policy <name> -rule <expression> -action <string>
bind ssl vserver <vServerName> -policyName <string> -priority <positive_integer> -type CLIENTHELLO_REQ

Ejemplo:

add ssl cacertGroup ca_cert_group

add ssl certkey ca_certkey1 -cert cacert1 -key cakey1
add ssl certkey ca_certkey2 -cert cacert2 -key cakey2
add ssl certkey snicert -cert snicert -key snikey

bind ssl cacertGroup ca_cert_group ca_certkey1
bind ssl caCertGroup ca_cert_group ca_certkey2
sh ssl caCertGroup ca_cert_group

CA GROUP NAME:     ca_cert_group
ACTIONS REFERRING: 1

1) CertKey Name: ca_certkey1   CA Certificate   CRLCheck: Optional   CA_Name Sent
2) CertKey Name: ca_certkey2   CA Certificate   CRLCheck: Optional   CA_Name Sent
add ssl action pick_ca_group -cacertGrpName ca_cert_group
sh ssl action pick_ca_group
1) Name: sniaction
   Type: Data Insertion
   PickCaCertGroup: ca_cert_group
   Hits: 0
   Undef Hits: 0
   Action Reference Count: 1
add ssl policy snipolicy -rule client.ssl.client_hello.sni.contains("abc") -action pick_ca_group
bind ssl vserver v_SSL -policyName snipolicy -type CLIENTHELLO_REQ -priority 10
sh ssl policy snipolicy
    Name: pol1
    Rule: client.ssl.client_hello.sni.contains("abc")
    Action: pick_ca_group
    UndefAction: Use Global
    Hits: 0
    Undef Hits: 0


    Policy is bound to following entities
1)  Bound to: CLIENTHELLO_REQ VSERVER v_SSL
    Priority: 10
set ssl vserver v_SSL -clientauth ENABLED -SNIEnable ENABLED
bind ssl vserver v_SSL -certkeyName snicert -sniCert
sh ssl vserver v_SSL

    Advanced SSL configuration for VServer v_SSL:
    DH: DISABLED
    DH Private-Key Exponent Size Limit: DISABLED   Ephemeral RSA: ENABLED   Refresh Count: 0
    Session Reuse: ENABLED   Timeout: 120 seconds
    Cipher Redirect: DISABLED
    SSLv2 Redirect: DISABLED
    ClearText Port: 0
    Client Auth: ENABLED   Client Cert Required: Mandatory
    SSL Redirect: DISABLED
    Non FIPS Ciphers: DISABLED
    SNI: ENABLED
    OCSP Stapling: DISABLED
    HSTS: DISABLED
    HSTS IncludeSubDomains: NO
    HSTS Max-Age: 0
    SSLv2: 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: snicert   Server Certificate for SNI


    Data policy
1)  Policy Name: snipolicy  Priority: 10



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

Configuración mediante la GUI

Cree un grupo de certificados de CA y vincule certificados al grupo:

  1. Vaya a Administración del tráfico > SSL > Grupo de certificados de CA.
  2. Haga clic en Agregar y especifique un nombre para el grupo.
  3. Haga clic en Crear.
  4. Seleccione el grupo de certificados de CA y, a continuación, haga clic en Mostrar enlaces.
  5. Haga clic en Bind.
  6. En la página Enlace de certificados de CA, seleccione un certificado existente o haga clic en Agregar para agregar un certificado nuevo.
  7. Haga clic en Seleccionar y, a continuación, haga clic en Vincular.
  8. Para enlazar otro certificado, repita los pasos 5 a 7.
  9. Haga clic en Cerrar.

Vaya a Administración del tráfico > SSL > Directivas.

Crear acción SSL:

  1. En Acciones SSL, haga clic en Agregar.
  2. En Crear acción SSL, especifique un nombre para la acción.
  3. En el Servidor virtual de acción directa, seleccione un servidor virtual existente o agregue un servidor virtual al que reenviar el tráfico.
  4. Opcionalmente, defina otros parámetros.
  5. Haga clic en Crear.

Crear directiva SSL:

  1. En Directivas SSL, haga clic en Agregar.
  2. En Crear directiva SSL, especifique un nombre para la directiva.
  3. En Acción, seleccione la acción creada anteriormente.
  4. En el Editor de expresiones, escriba la regla que quiere evaluar.
  5. Haga clic en Crear.

Cree o agregue un servidor virtual y una directiva de enlace:

  1. Vaya a Administración del tráfico > Equilibrio de carga > Servidores virtuales.
  2. Agregue o seleccione un servidor virtual.
  3. En Configuración avanzada, haga clic en Directivas SSL.
  4. Haga clic en la sección Directiva SSL.
  5. En Seleccionar directiva, seleccione la directiva que creó anteriormente.
  6. En Enlace de directivas, especifique una prioridad para la directiva.
  7. En Tipo, seleccione CLIENTHELLO_REQ.
  8. Haga clic en Bind.
  9. Haga clic en Listo.

Desenlazar un grupo de certificados de CA mediante la interfaz gráfica de usuario

  1. Vaya a Administración del tráfico > SSL > Grupo de certificados de CA.
  2. Seleccione un grupo de certificados y haga clic en Mostrar enlaces.
  3. Seleccione el certificado que quiere quitar del grupo y haga clic en Desenlazar.
  4. Si se le solicita confirmación, haga clic en **Sí••.
  5. Haga clic en Cerrar.

Quitar un grupo de certificados de CA mediante la interfaz gráfica de usuario

  1. Vaya a Administración del tráfico > SSL > Grupo de certificados de CA.
  2. Seleccione un grupo de certificados y haga clic en Eliminar.
  3. Si se le solicita confirmación, haga clic en .