Citrix ADC

Ejemplo 10: Cifrado RSA basado en directivas

El algoritmo RSA utiliza la función PKEY_ENCRYPT_PEM () para cifrar el contenido de encabezado o cuerpo HTTP predefinido y definido por el usuario. La función solo acepta claves públicas RSA (no claves privadas) y los datos cifrados no pueden ser mayores que la longitud de la clave pública. Cuando los datos que se cifran son más cortos que la longitud de la clave, el algoritmo utiliza el método de relleno RSA_PKCS1.

En un caso de ejemplo, la función se puede utilizar con la función B64ENCODE () en una acción de reescritura para reemplazar un valor de encabezado HTTP con un valor cifrado por una clave pública RSA. A continuación, el destinatario descifra los datos que se están cifrando mediante la clave privada RSA.

Puede implementar la función mediante una directiva de reescritura. Para ello, debe completar las siguientes tareas:

  1. Agregar clave pública RSA como expresión de directiva.
  2. Crear acción de reescritura.
  3. Crear directiva de reescritura.
  4. Vincular directiva de reescritura como global.
  5. Verificar el cifrado RSA

Cifrado RSA basado en directivas mediante la interfaz de comandos de Citrix ADC

Complete las siguientes tareas para configurar el cifrado RSA basado en directivas mediante la interfaz de comandos de Citrix ADC.

Para agregar clave pública RSA como expresión de directiva mediante la interfaz de comandos de Citrix ADC:

add policy expression pubkey '"-----BEGIN RSA PUBLIC KEY-----MIGJAoGBAKl5vgQEj73Kxp+9yn1v5gPR1pnc4oLM2a0kaWwBOsB6rzCIy6znwnvwCY1xRvQhRlJSAyJbloL7wZFIJ2FOR8Cz+8ZQWXU2syG+udi4EnWqLgFYowF9zK+o79az597eNPAjsHZ/C2oL/+6qY5a/f1z8bQPrHC4GpFfAEJhh/+NnAgMBAAE=-----END RSA PUBLIC KEY-----"'

Para agregar reescribir una acción para cifrar una solicitud de encabezado HTTP mediante la interfaz de comandos Citrix ADC:

add rewrite action encrypt_act insert_http_header encrypted_data

HTTP.REQ.HEADER("data_to_encrypt").PKEY_ENCRYPT_PEM(pubkey).B64ENCODE

Para agregar una directiva de reescritura mediante la interfaz de comandos de Citrix ADC:

add rewrite policy encrypt_pol 'HTTP.REQ.HEADER("data_to_encrypt").EXISTS' encrypt_act

Para enlazar la directiva de reescritura global mediante la interfaz de comandos de Citrix ADC:

bind rewrite global encrypt_pol 10 -type RES_DEFAULT

Para verificar el cifrado RSA mediante la interfaz de comandos de Citrix ADC:

>curl -v -H "data_to_encrypt: Now is the time that tries men's souls" http://10.217.24.7/`

* About to connect() to 10.217.24.7 port 80 (#0)

*  Trying 10.217.24.7...

*  connected

*  Connected to 10.217.24.7 (10.217.24.7) port 80 (#0)

> GET / HTTP/1.1
> User-Agent: curl/7.24.0 (amd64-portbld-freebsd8.4) libcurl/7.24.0 OpenSSL/0.9.8y zlib/1.2.3
> Host: 10.217.24.7
> Accept: \*/\*
> data_to_encrypt: Now is the time that tries men's souls
>
< HTTP/1.1 200 OK
< Date: Mon, 09 Oct 2017 05:22:37 GMT
< Server: Apache/2.2.24 (FreeBSD) mod_ssl/2.2.24 OpenSSL/0.9.8y DAV/2
< Last-Modified: Thu, 20 Feb 2014 20:29:06 GMT
< ETag: "6bd9f2-2c-4f2dc5b570880"
< Accept-Ranges: bytes
< Content-Length: 44
< Content-Type: text/html
< encrypted_data: UliegKBJqZd7JdaC49XMLEK1+eQN2rEfevypW91gKvBVlaKM9N9/C2BKuztS99SE0xQaisidzN5IgeIcpQMn+CiKYVlLzPG1RuhGaqHYzIt6C8A842da7xE4OlV5SHwScqkqZ5aVrXc3EwtUksna7jOLr40aLeXnnB/DB11pUAE=
<
* Connection #0 to host 10.217.24.7 left intact
<html><body><h1>It works!</h1></body></html>* Closing connection #0

La ejecución posterior de este comando curl con los mismos datos para cifrar muestra que los datos cifrados son diferentes en cada ejecución. Esto se debe a que el relleno inserta bytes aleatorios al comienzo de los datos para cifrar, haciendo que los datos cifrados sean diferentes cada vez.

>curl -v -H "data_to_encrypt: Now is the time that tries men's souls" http://10.217.24.7/`

< encrypted_data: DaOjtl1Pl4DlQKf58MMeL4cFwFvZwhjMqv5aUYM5Iyzk4UpwIYhpRvgTNu2lXEVc1H0tcR1EGC/ViQncLc4EbTurCWLbzjce3+fknnMmzF0lRT6ZZXWbMvsNFOxDA1SnuAgwxWXy/ooe9Wy6SYsL2oi1sr5wTG+RihDd9zP+P14=

>curl -v -H "data_to_encrypt: Now is the time that tries men's souls" http://10.217.24.7/

. . .

< encrypted_data: eej6YbGP68yHn48qFUvi+fkG+OiO8j3yYLScrRBU+TPQ8WeDVaWnDNAVLvL0ZYHHAU1W2YDRYb+8cdKHLpW36QbI6Q5FfBuWKZSI2hSyUvypTpCoAYcHXFv0ns+tRtg0EPNNj+lyGjKQWtFi6K8IXXISoDy42FblKIlaA7gEriY=

Cifrado RSA basado en directivas mediante la interfaz gráfica de usuario

La interfaz gráfica de usuario le permite realizar las siguientes tareas:

Para agregar clave pública RSA como expresión de directiva mediante la GUI:

  1. Inicie sesión en el dispositivo Citrix ADC y vaya a Configuraciones > AppExpert > Expresiones avanzadas.
  2. En el panel de detalles, haga clic en Agregar para definir una clave pública RSA como expresión de directiva avanzada.
  3. En la página Crear expresión, defina los siguientes parámetros:
    1. Nombre de expresión. Nombre de la expresión avanzada.
    2. Expresión. Defina la clave pública RSA como una expresión avanzada mediante el Editor de expresiones.
    3. Comentarios. Una breve descripción de la expresión.
  4. Haga clic en Crear.

Para agregar reescribir una acción para cifrar una solicitud de encabezado HTTP mediante la GUI:

  1. Inicie sesión en el dispositivo Citrix ADC y vaya a Configuraciones > AppExpert > Reescritura > Acciones.
  2. En el panel de detalles, haga clic en Agregar para agregar una acción de reescritura.
  3. En la pantalla Crear acción de reescritura, defina los siguientes parámetros:
    1. Nombre. Nombre de la acción de reescritura.
    2. Type. Seleccione el tipo de acción como INSERT_HTTP_HEADER.
    3. Utilice el tipo de acción para insertar un encabezado. Introduzca el nombre del encabezado HTTP que debe reescribirse.
    4. Expresión. Nombre de la expresión de directiva avanzada asociada a la acción.
    5. Comentarios. Breve descripción de la acción de reescritura.
  4. Haga clic en Crear.

Para agregar una directiva avanzada de reescritura mediante la interfaz gráfica de usuario:

  1. Inicie sesión en el dispositivo Citrix ADC y vaya a Configuraciones > AppExpert > Reescribir > Directivas.
  2. En la página Volver a escribir directivas, haga clic en Agregar para agregar una directiva de reescritura.
  3. En la página Crear Directiva de Reescritura, establezca los siguientes parámetros:
    1. Nombre. Nombre de la directiva de reescritura.
    2. Acción. Nombre de la acción de reescritura que se va a realizar si la solicitud o respuesta coincide con esta directiva de reescritura.
    3. Acción de registro. Nombre de la acción de registro de mensajes que se va a utilizar cuando una solicitud coincide con esta directiva.
    4. Acción de resultado no definido. Acción que se debe realizar si el resultado de la evaluación de directivas no está definido.
    5. Expresión. Nombre de la expresión de directiva avanzada que desencadena la acción.
    6. Comentarios. Breve descripción de la acción de reescritura.
  4. Haga clic en Crear.

Para vincular la directiva de reescritura global mediante la GUI:

  1. Inicie sesión en el dispositivo Citrix ADC y vaya a Configuraciones > AppExpert > Reescribir > Directivas.
  2. En la pantalla Volver a escribir directivas, seleccione una directiva de reescritura que quiera enlazar y haga clic en Administrador de directivas.
  3. En la página Reescribir Policy Manager, en la sección Puntos de enlace, establezca los siguientes parámetros:
    1. Punto de enlace. Seleccione el punto de enlace como Global por defecto.
    2. Protocolo. Seleccione el tipo de protocolo como HTTP.
    3. Tipo de conexión. Seleccione el tipo de conexión como Solicitud.
    4. Haga clic en Continuar para ver la sección Enlace de directivas.
    5. En la sección Enlace de directivas, seleccione la directiva de reescritura y establezca los parámetros de enlace.
  4. Haga clic en Vincular.

Ejemplo 10: Cifrado RSA basado en directivas