Tema anterior: IN2: dispositivo de puerta de enlace de entradaTema siguiente: INSSLR2: puerta de enlace de entrada HTTP redundante compatible con SSL.


INSSLR: puerta de enlace de entrada HTTP redundante compatible con SSL.

Ver el vídeo

Última versión: 3.1.2-1

INSSLR: puerta de enlace de entrada HTTP redundante compatible con SSL

Vista rápida

Catálogo

Sistema

Categoría

Puertas de enlace

Volúmenes de usuario

yes

Memoria mín.

192 MB

SO

Linux

Restricciones

no

Descripción general del funcionamiento

El dispositivo INSSLR es una puerta de enlace de 7 niveles para solicitudes de HTTP seguras. Convierte las solicitudes en solicitudes HTTP no codificadas. Esto se puede utilizar siempre que sea necesario admitir HTTP seguro en el lado del cliente pero la infraestructura de procesamiento de back-end no admita o no pueda admitir SSL, incluido lo siguiente:

Si se configura, INSSLR también es compatible con la autenticación de certificados de cliente. En caso de autenticación SSL mutua, tanto el cliente como el servidor intercambian sus certificados y las claves públicas correspondientes. El cliente se puede poner en contacto con la autoridad certificadora que emitió el certificado del servidor y confirmar que el certificado sea auténtico antes de continuar. El servidor puede hacer lo mismo.

En su configuración predeterminada, INSSLR actúa como puerta de enlace de 7 niveles para solicitudes HTTP seguras, proporcionando también un punto de entrada de cortafuegos para el tráfico de la red hacia una aplicación de CA AppLogic®, lo cual se puede configurar con una dirección IP estática accesible por Internet.

Si se configuran, se pueden usar dos dispositivos INSSLR en modo de conmutación por error para proporcionar un servicio redundante. En este caso, la dirección IP de INSSLR (configurada mediante ip_addr) se ejecuta solamente en uno de los nodos y se transfiere automáticamente al otro dispositivo INSSLR en caso de error. En todo momento habrá solamente un dispositivo INSSLR activo. Al ejecutarse en modo de conmutación por error se puede configurar INSSLR de modo que se ejecute en varios modos:

Al ejecutarse en modo redundante, INSSLR proporciona una interfaz en su terminal ctl para:

INSSLR constantemente controla el estado del dispositivo de back-end conectado a su terminal http. Los controles de estado realizados por INSSLR pueden incluir una comprobación de la conexión TCP sencilla o una solicitud HTTP más compleja (especificada en el límite de INSSLR). En caso de error del dispositivo conectado, INSSLR comunica un error al cuadro de mandos del grid o, si está en modo redundante y configurado para hacerlo, hace una conmutación por error al dispositivo INSSLR de respaldo.

Para ser compatible con aplicaciones que tienen que aparecer en una sola dirección IP para más de un servicio, se puede configurar INSSLR para dirigir tráfico no HTTP de forma transparente a un terminal de salida aparte. Para este tipo de conexiones, el dispositivo actúa como un enrutador de cortafuegos/NAT de capa 3.

Límite

Recursos

Recurso

Mínimo

Máximo

Predeterminado

CPU

0.05

4

0.05

Memoria

192 MB

2 G

192 MB

Ancho de banda

1 Mbps

2 Gbps

200 Mbps

La memoria predeterminada para CA AppLogic® versión 2.7 se ha cambiado a 128 MB. La memoria mínima sigue siendo 64 MB.

Notas

Terminales

Nombre

Dir.

Prot.

Descripción

ctl

in

HTTP

Recibe notificaciones que obliga al dispositivo a convertirse en primario/copia de seguridad. Este terminal acepta conexiones solamente si fover_mode no está establecido como "none". Una solicitud http válida tiene este formato: /?action=<active|passive|kill|status>. El dispositivo está activo o es pasivo gracias a active/passive. Nota: Es posible que esta acción no sea satisfactoria (si el otro nodo no está activo y la conmutación por error no se puede completar) y que no se devuelva ningún error. La aplicación que llama es la encargada de comprobar el estado del dispositivo; para ello realiza una solicitud /?action=status. status devuelve el estado actual del dispositivo (activo/pasivo). kill fuerza el apagado del dispositivo, lo que hace que el otro nodo entre en funcionamiento (si se está ejecutando).

http

Saliente

HTTP

Las solicitudes HTTPS o HTTP recibidas en la dirección IP externa configurada se dirigen al http de salida como solicitudes HTTP sin formato a través del puerto HTTP 80 estándar. Además de los encabezados HTTP proporcionados por el cliente, las solicitudes reenviadas también contienen los siguientes encabezados informativos:

X-Forwarded-For: dirección IP del cliente remoto. Los scripts CGI de lado de servidor deberían utilizar esto en lugar de la dirección IP remota.

X-Forwarded-Proto: https. Este encabezado está presente si el cliente se ha conectado mediante HTTPS. De la aplicación de back-end depende que se use este encabezado para distinguir entre conexiones HTTP y HTTPS.

fs

Saliente

NFS

Proporciona un montaje NFS como una ubicación alternativa al volumen de claves local para almacenar claves. Si se proporcionan tanto el volumen de clave local como una conexión de terminal fs, el dispositivo genera un error al iniciarse. Este terminal se puede dejar desconectado.

aux

Saliente

Cualquiera

Salida para otros protocolos, si se han configurado. Consulte las propiedades de l3_accept_*.

nfy

Saliente

HTTP

Envía notificaciones siempre que se produce una conmutación por error. Consulte también fover_nfy_prefix. Este terminal se puede dejar desconectado.

mon

Saliente

CCE

Envía estadísticas sobre uso de recursos y rendimiento.

Propiedades

Nombre

Tipo

Descripción

ip_addr

ip_owned

Dirección IP externa de la puerta de enlace. Esta propiedad no tiene ningún valor predeterminado y se debe establecer. Valor predeterminado: vacío

netmask

Dirección IP

Máscara de red. Esta propiedad no tiene ningún valor predeterminado y se debe establecer. Valor predeterminado: vacío

gateway

Dirección IP

Puerta de enlace predeterminada para tráfico saliente. Valor predeterminado: vacío

dns1

Dirección IP

Define el servidor DNS primario Se puede dejar en blanco si el host remoto está especificado por la dirección IP; en caso contrario, se deberá especificar. El valor predeterminado está vacío.

dns2

Dirección IP

Define el servidor DNS secundario, que se usará si el servidor DNS primario no responde. Valor predeterminado: en blanco (no se utiliza).

l7_accept

Cadena

Esto especifica qué tipo de tráfico HTTP se debe aceptar para reenviarlo al terminal http. Valores válidos: "https", "http", "both" y "none". Si no se establece como "none" todo el tráfico se redirecciona solamente según las propiedades l3_accept_*.
Valor predeterminado: bpth.

l3_accept_proto

Cadena

Especifica los protocolos que se deberían reenviar al terminal aux.

Valores válidos: "none", "tcp", "udp", "raw" y "all".

Si se establece como "tcp" o "udp", la propiedad l3_accept_port se puede utilizar para especificar el puerto. Si se establece como "raw", la propiedad l3_accept_port especifica el número de protocolo. Si se configura como "all", el tráfico entrante de la interfaz externa se envía al terminal aux. La propiedad l7_accept tiene prioridad sobre esta. Si se establece l7_accept a un valor que no sea "none", todo el tráfico http se envía al terminal http, el resto del tráfico va a aux, como se especifica en esta propiedad.
Valor predeterminado: none.

l3_accept_port

Cadena

Lista de protocolos separados por comas (o espacios) para aceptar y enrutar en el protocolo especificado por l3_accept_proto al terminal aux. Los protocolos de esta lista se pueden especificar como números de puerto o nombres de protocolo estándar (por ejemplo, ftp, smtp, etc. cuando se especifican puertos tcp/udp o gre y tcp al utilizar protocolos sin formato). Se pueden especificar también intervalos de puertos (1024:10000, 0:1024). Si se deja con el valor vacío, se reenvían todos los puertos del protocolo especificado.

Nota: Si define l3_accept_proto como raw, debe especificar esta propiedad, que en este caso especifica el número de protocolo (se puede especificar más de un protocolo como raw, pero no se permite el intervalo de protocolo, por ejemplo 20:30).

Valor predeterminado: all

allowed_hosts

Cadena

Lista de los hosts o subredes con los que se puede establecer una conexión. Las distintas entradas se deben separar con espacios o comas. Ejemplo de formato admitido: 192.168.1.2 192.168.1.0/24 192.168.2.0/255.255.255.0. Valor predeterminado: 0.0.0.0/0 (se permite todo)

key_on_fs

Cadena

Indica si las claves se almacenan en un montaje nfs a través del terminal fs (on) o en el volumen de clave local (off). Valores válidos: on y off. Valor predeterminado: off

cert_file

Cadena

Nombre de archivo (relativo a la raíz del volumen de datos) del certificado del servidor que esta instancia de puerta de enlace debería presentar al cliente. Nota: Debe haber presente un certificado válido en el volumen de datos configurado (consulte Volúmenes a continuación) en la ubicación especificada por esta propiedad si establece l7_accept como "https" o "both", de lo contrario INSSLR no se podrá iniciar.

Valor predeterminado: server.pem.

unsafe_ssl

Cadena

Permite el uso de encriptados ssl no seguros para proporcionar compatibilidad con exploradores heredados. El valor predeterminado "disabled" deshabilita los encriptados SSLv2, así como algunos otros encriptados SSLv3 y TLSv1 que no se consideran seguros. Se recomienda dejar esta propiedad configurada como "disabled", a menos que sea necesario admitir sesiones https para exploradores heredados que solamente funcionen con SSLv2. Cuando se define como "enabled", todos los encriptados SSL disponibles en el sistema (incluido SSLv2) se pueden utilizar para las sesiones https.

Valor predeterminado: disabled.

keepalive

Entero

Especifica el tiempo máximo de keepalive entre INSSLR y el cliente. Valor especificado en segundos. Valor predeterminado: 15.

timeout

Entero

Especifica cuántos segundos espera INSSLR el resultado del servidor de back-end. Si el servidor de back-end no envía salidas durante los segundos especificados para el tiempo de espera, la conexión se cerrará.
Valor predeterminado: 300

max_request_size

Entero

Tamaño máximo (en MB) de la solicitud del cliente. Auméntelo si la aplicación tiene que tratar con grandes cargas de clientes. Valor predeterminado: 10.

adv_config

Cadena

Agrega configuración sin procesar que se debe insertar en nginx conf dentro de los bloques de ubicación tanto para oyentes http como https (sea cual sea el que se active).

Por ejemplo, para agregar encabezados personalizados, establezca adv_config como proxy_set_header myport $proxy_port;. Así se agrega myport: 80 a la solicitud enviada al servidor de back-end. adv_config se puede establecer como cualquier declaración válida para un bloque de ubicación (consulte la documentación nginx para obtener más información). Se pueden agregar varias líneas de configuración separadas por ;. Si se establece, esta propiedad debe tener una sintaxis nginx válida (es decir, que termine por ;). En caso contario, el dispositivo no se podrá iniciar.

Valor predeterminado: vacío

client_cert

Cadena

Permite la autenticación del certificado de cliente.

Valores válidos: on, ask y off.

Si se define como "on", se impone la autenticación del certificado de cliente y solamente los clientes con certificados válidos pueden hacer una solicitud correcta a INSSLR. Cuando se define como "set", se les pide a los clientes que presenten los certificados, pero la conexión se establece aunque no se presente un certificado válido.

Valor predeterminado: off

client_depth

Entero

Intensidad de verificación para buscar en un certificado encadenado de cliente. Esta propiedad no tiene ningún efecto si no se establece client_cert. Valores válidos: de 1 a 9 Valor predeterminado: 1

ca_list_client

Cadena

Un archivo que contiene una secuencia de certificados de la autoridad certificadora en formato PEM.

Los nombres de los certificados listados se envían al cliente que está conectado. Así se informa al cliente acerca de qué certificado de cliente debería enviar. La misma lista se utiliza para verificar el certificado de cliente. El nombre de archivo es relativo a la raíz del volumen clave montado o la raíz del montaje de nfs realizado mediante el terminal fs y puede contener una ruta, por ejemplo path/to/keys/ca_list_client.pem.

Valor predeterminado: ca_list_client.pem.

cert_revocation_list

Cadena

Un archivo que contiene la lista de revocaciones de certificado (CRL) tal y como la genera la autoridad certificadora. Esta lista identifica los certificados de cliente revocados por CA.

Se buscan en ella todos los certificados de cliente presentados a INSSLR y, si se descubre que el certificado se ha revocado, INSSLR emite una respuesta de error del certificado SSL al cliente. Como ca_list_client, el nombre de archivo es relativo a la raíz del volumen clave montado o la raíz del montaje de nfs realizado mediante el terminal fs y puede contener una ruta. Por ejemplo, path/to/keys/ca_list_client.pem.

Valor predeterminado: vacío

Propiedades de los controles de estado

Nombre

Tipo

Descripción

healthcheck_method

Cadena

Método utilizado para el control de estado de los servidores Web de back-end.
off: los controles de estado se desactivan, las demás propiedades de healthcheck_ son irrelevantes.
tcp_connect: INSSLR se conecta al puerto 80 del servidor Web. Si la conexión se ha establecido correctamente, INSSLR supone que el servidor Web está operativo. Este es el método más rápido y que requiere menos recursos.
http_head: INSSLR utiliza el método HEAD para solicitar el documento especificado mediante la propiedad healthcheck_url. Esto es más lento que tcp_connect y requiere más recursos tanto en INSSLR como en el servidor Web, pero es más fiable. La respuesta se compara con una expresión regular especificada por healthcheck_regexp y si se encuentra una coincidencia, el servidor se considera activo.
http_get: INSSLR utiliza el método GET para solicitar el documento especificado mediante la propiedad healthcheck_url. Este es el método más lento, que requiere la mayor parte de los recursos, pero es más fiable. La respuesta (encabezados y cuerpo) se compara con una expresión regular especificada por healthcheck_regexp y si se encuentra una coincidencia, el servidor se considera activo.
Valor predeterminado: off

healthcheck_url

Cadena

URL que se utiliza para ejecutar el control de estado de los servidores Web de back-end en los métodos de control de estado http_get y http_head. Se puede especificar como una URL completa (http://host.name/file/to/check/for.php) o como una ruta relativa (/file/to/check/for.php). Si se especifica como una URL, INSSLR utiliza el protocolo HTTP/1.1 mientras realiza controles de estado mediante el uso del nombre de host extraído de UR en un encabezado Host:. Esto permite usar hosts virtuales. Si se especifica como una ruta relativa, INSSLR utiliza el protocolo HTTP/1.0 y busca el documento especificado por esta propiedad.
Valor predeterminado: /.

healthcheck_agent

Cadena

Cadena que se utiliza como un identificador de agente para los métodos de control de estado http_get y http_head.
Valor predeterminado: INSSLR-health-check.

healthcheck_regexp

Cadena

Cadena de prueba utilizada con el modo de control des estado http_head y http_get health. Los valores cortos o comunes (por ejemplo, OK) probablemente generarán falsos positivos. Esta cadena es una expresión normal de Perl. Aquí puede encontrar más detalles sobre las expresiones normales de Perl.
Valor predeterminado: ^HTTP\/1\.\d\s+200.

healthcheck_interval

Entero

Intervalo entre los controles de estado de los servidores Web de back-end (especificado en segundos).
Valor predeterminado: 60 segundos.

healthcheck_timeout

Entero

Tiempo máximo en segundos que puede tardar un control de estado. Si el tiempo de espera se supera, se considera que el control es erróneo y se termina (se inicia un nuevo control). Valor predeterminado: 10.

healthcheck_alert

Entero

Número de errores de controles de estado subsiguientes antes de que INSSLR comience a volcar errores en el cuadro de mandos del grid. Si se establece como 0, no se comunicará ningún error al cuadro de mandos (pero todavía se permiten los controles de estado). No se debe definir un valor demasiado bajo para evitar los falsos positivos cuando se inicie/detenga la aplicación. Consulte también fover_on_healthcheck si está ejecutando INSSLR en el modo redundante y desea pasar al nodo de copia de seguridad si se produce un error en el servidor de back-end. Valor predeterminado: 3.

Propiedades avanzadas (utilizadas en escenarios de conmutación por error)

fover_mode

Cadena

Modo de conmutación por error. Los posibles valores son "none" (ninguna conmutación por error), "symmetric" y "asymmetric".
Cuando se establece como "symmetric", INSSLR se ejecuta en el modo de conmutación por error simétrico (necesita dos dispositivos INSSLR que se ejecuten los dos en el modo de conmutación por error simétrico).
Cuando se establece como "asymmetric", INSSLR se ejecuta en el modo de conmutación por error asimétrico (necesita dos dispositivos INSSLR que se ejecuten los dos en el modo de conmutación por error asimétrico).
Importante: Cuando se ejecutan en el modo de conmutación por error, los dos dispositivos deben tener fover_mode establecido al mismo valor.
Valor predeterminado: none

fover_local_ip

ip_owned

La dirección IP local que se va a utilizar en el modo de conmutación por error para comunicarse con el otro dispositivo INSSLR. Puede ser cualquier IP disponible, incluida cualquier dirección privada reservada (como se defina por rfc1918). Esta dirección se utiliza solamente para controlar el estado del otro dispositivo INSLLR.
Importante:

Debería establecerse como la misma IP que la propiedad fover_remote_ip del otro dispositivo INSSLR.

Deje este valor como vacío si ha establecido fover_mode como "none".
Valor predeterminado: vacío

fover_remote_ip

ip_owned

Dirección IP remota del otro dispositivo INSSLR usado en el modo de conmutación por error.

Importante:

Debería establecerse como la misma IP que la propiedad fover_local_ip del otro dispositivo INSSLR.

Deje este valor como vacío si ha establecido fover_mode como "none".
Valor predeterminado: vacío

fover_netmask

Dirección IP

Máscara de red para fover_local_ip.
Importante: Deje este valor como vacío si ha establecido fover_mode como "none".
Valor predeterminado: vacío

fover_nfy_prefix

Cadena

Prefijo de la Url que se pide cuando se produce una conmutación por error. La URL solicitada es:

http://nfy/fover_nfy_prefixfover_mode=fover_mode&state=<start|stop>&ip_addr=ip_addr&fover_local_ip=fover_local_ip&fover_remote_ip=fover_remote_ip&fover_netmask=fover_netmask

y pasa por el terminal nfy.
Valor predeterminado: ?

fover_on_healthcheck

Entero

Especifica si INSSLR debería realizar una conmutación por error al nodo de copia de seguridad si se produce un error en un control de estado del terminal http. Si se establece como un valor distinto de cero, INSSLR realiza una conmutación por error después de varios errores subsiguientes de controles de estado. No se debe definir un valor demasiado bajo para evitar los falsos positivos cuando se inicie/detenga la aplicación. Consulte también healthcheck_alert si solamente necesita notificaciones para los errores. Valor predeterminado: 0 (desactivado).

Volúmenes

Nombre

Descripción

key

Un volumen de datos de sólo lectura (marcador de posición) que contiene, como un mínimo, la clave de firma del servidor SSL. El archivo debería estar en formato PEM. A menos que la propiedad cert_file se modifique para especificar un nombre diferente, el certificado debería localizarse en el directorio raíz del volumen clave, llamado server.pem.

Mensajes de error

Los mensajes siguientes pueden aparecer en el archivo de registro del dispositivo o en el registro del sistema del controlador de grid cuando el dispositivo falla al iniciarse:

Rendimiento

Conmutación por error de aplicación

INSSLR detecta el error del otro INSSLR en unos 10 segundos. Tarda unos 10 segundos más en realizar la conmutación por error a la otra aplicación. El tiempo total desde que se produce el primer error de la aplicación hasta que la otra aplicación asume el tráfico es de unos 20 segundos.

Tasa de solicitudes

INSSLR enruta no menos de 3.000 transacciones (parejas de solicitud/respuesta) por segundo, según el tamaño de los documentos y el ancho de banda de red disponible.

Rendimiento de los datos

INSSLR enruta no menos de 7 MBytes/segundo, según el tamaño de los documentos y el ancho de banda de red disponible.

Conexiones simultáneas

Con la memoria predeterminada INSSLR es compatible con no menos de 500 solicitudes pendientes simultáneas. (Una solicitud pendiente es una conexión TCP abierta del cliente, donde hay una o varias solicitudes HTTP sin completar en curso). El número máximo de conexiones simultáneas depende de la memoria libre disponible. Cada 16 MB más de memoria aumenta por 500 el número de transacciones http simultáneas. Por ejemplo, si ejecuta en el modo redundante y desea poder servir 2.000 conexiones simultáneas, necesita 100 M + 3*= 148 M (la memoria mínima cuando se ejecuta en el modo redundante es de 100 M).

Notificaciones

Cuando se ejecuta en el modo redundante (fover_mode no está definido como "none"), INSSLR activa las notificaciones siempre que pase a ser activo/pasivo. Esto se hace durante el inicio del nodo activo o cuando se produce una conmutación por error (cada nodo envía una notificación de que pasó a ser activo/pasivo).

INSSLR envía dos notificaciones:

Importante:

Control de estado

INSSLR ejecuta un cronjob cada minuto que comprueba:

Si se cumplen cualquiera de las condiciones anteriores, se envía un mensaje de error al cuadro de mandos del grid. Si más de una prueba es incorrecta, se publicará un mensaje en el cuadro de mandos del grid que resuma todos los errores. Cada error se enviará solamente una vez cada hora al cuadro de mandos del grid. No se comunica ningún error en los primeros 5 minutos después del inicio del dispositivo (para evitar falsas alarmas si el otro nodo de la replicación no se ha iniciado).

Certificados del servidor

Para utilizar SSL se necesita tanto el certificado firmado como la clave privada con la que éste se encriptó. La clave y el certificado deberían estar en formato PEM y colocarse en un único archivo especificado por la propiedad cert_file.

Esta sección contiene los siguientes temas:

Generación de certificados de servidor

Uso de certificados de servidor

Uso de certificados de servidor apache+mod_ssl existentes

Generación de certificados de servidor

CA AppLogic® le permite generar certificados de servidor.

Generación de certificados de servidor

  1. Genere una clave privada mediante el comando siguiente:
    openssl genrsa -out privkey.pem 2048 
    

    Para generar una clave protegida por contraseña, utilice lo siguiente (para utilizar la clave con INSSLR necesita una clave sin contraseña; si crea una clave protegida por contraseña necesitará eliminar la contraseña antes de usarla en INSSLR).

    openssl genrsa -des3 -out privkey.pem 2048 
    
  2. A continuación, necesita un certificado. Tiene dos opciones: crear una solicitud de certificado y hacer que la firme una fuente de CA de confianza (sujeto a un tarifa), o crear un certificado autofirmado para fines de prueba (en este caso los exploradores que soliciten su sitio emitirán advertencias que indicarán que el certificado no está firmado por una fuente CA de confianza).

    Para generar una solicitud de certificado, ejecute lo siguiente:

    openssl req -new -key privkey.pem -out server.csr 
    

    Después de enviar el archivo .csr a la autoridad certificadora de confianza, se le devolverá un certificado firmado (archivo .crt) que puede utilizar.

  3. Para generar un certificado autofirmado, ejecute lo siguiente:
    openssl req -new -x509 -key privkey.pem -out server.crt -days 1095
    

Uso de certificados de servidor

Ya puede colocar el certificado y la clave en un archivo y utilizarlo en INSSLR:

cat privkey.pem  server.crt > server.pem 

Si su clave está protegida mediante contraseña, ésta se puede eliminar ejecutando lo siguiente:

openssl rsa -in key_with_pass.pem -out privkey.pem

Uso de certificados de servidor apache+mod_ssl existentes

Si tiene un certificado existente que usa en Apache, puede utilizarlo también en INSSLR. Asegúrese de que la clave no está protegida con contraseña (consulte más arriba) y coloque la clave privada y el certificado en un archivo en ese orden.

Ejemplo:

cat privkey.pem  server.csr > server.pem 

Si está usando un certificado encadenado, debería incluir también el certificado intermedio proporcionado por el emisor. Coloque la clave privada, el certificado y el certificado intermedio en un archivo en ese orden.

Ejemplo:

cat privkey.pem server.csr sf_issuing.crt > server.pem 

Importante: La clave de firma del servidor es la prueba de identidad de su sitio Web. También es vulnerable, porque no está encriptada por contraseña (para que el dispositivo la pueda leer sin ayuda). Tome las medidas necesarias para proteger el archivo de clave cuando lo instale en el volumen de datos. No utilice el mismo volumen de datos para otros fines y no lo haga visible para un servidor Web, por ejemplo, para los datos del host a los que se aceden mediante Web (páginas HTML, scripts, etc.).

Certificados del cliente

Los ejemplos siguientes describen cómo puede crear su propia autoridad certificadora y utilizarla para firmar sus propios certificados mediante OpenSSL. Esto se probó mediante OpenSSL 0.9.8b, la misma versión que se instaló en INSSLR.

Esta sección contiene los siguientes temas:

Creación de una autoridad certificadora

Creación de certificados de cliente firmados por la autoridad certificadora

Creación de archivos de la lista de CA utilizadas por INSSLR

Encabezados de los certificados del cliente

Creación de una autoridad certificadora

Si ya tiene una autoridad certificadora propia que se utiliza para crear certificados autofirmados, puede omitir este paso y utilizar esa autoridad certificadora. Al crear los instrumentos de la autoridad de confianza para la aplicación, es importante que el entorno sea seguro.

Creación de una autoridad certificadora

  1. En un sistema de host seguro, cree un directorio de trabajo y un directorio privado dentro del directorio que funciona mediante los comandos siguientes:
    mkdir CA 
    mkdir CA/private 
    
  2. Cree una clave RSA protegida con contraseña para la autoridad certificadora que tenga una longitud de 2048 bits:
    openssl genrsa -des3 -out CA/private/CA_key.pem 2048 
    

Importante: La clave privada para la autoridad certificadora constituye la base de confianza de la aplicación, no la pierda ni la proporcione a otras partes.

Creación de certificados de cliente firmados por la autoridad certificadora

CA AppLogic® le permite crear certificados de cliente firmados por la autoridad certificadora.

Creación de certificados de cliente firmados por la autoridad certificadora

  1. Genere una clave privada RSA (para crear una clave protegida con contraseña, use el conmutador -des3):
    openssl genrsa -out clientA_privkey.pem 2048 
    
  2. Genere una solicitud de firma de certificado (CSR) de la clave privada:
    openssl req -new -key clientA_privkey.pem -out clientA_request.csr 
    
  3. Firme el certificado contenido en CSR mediante el certificado generado para CA:
    openssl x509 -req -days 365 -in clientA_request.csr -CA CA/CA_cert.pem -CAkey CA/private/CA_key.pem -CAcreateserial -out clientA.cer 
    

Tenga en cuenta lo siguiente:

Creación de archivos de la lista de CA utilizadas por INSSLR

Revocación de certificados de cliente firmados por CA

Para revocar certificados de cliente firmados por CA, ejecute lo siguiente:

Donde un "openssl.conf" de ejemplo se muestra a continuación y el parámetro "crl_reason" es uno de los siguientes: unspecified, keyCompromise, CACompromise, affiliationChanged, superseded, cessationOfOperation, certificateHold o removeFromCRL. El valor de "reason" no distingue entre mayúsculas y minúsculas.

Para volver a generar la lista de revocación de certificados (CRL), ejecute lo siguiente:

En este ejemplo "crl.pem" es el archivo que se debería proporcionar a INSSLR como la propiedad "cert_revocation_list".

El archivo de configuración de muestra que se utiliza en el anterior ejemplo es:

      ####################################################################
      [ ca ]
      default_ca      = CA_default            # The default ca section

      ####################################################################
      [ CA_default ]

      dir             = ./CA                  # Where everything is kept
      certs           = $dir/certs            # Where the issued certs are kept
      crl_dir         = $dir/crl              # Where the issued crl are kept
      database        = $dir/index.txt        # database index file.
      #unique_subject = no                    # Set to 'no' to allow creation of
                                        # several ctificates with same subject.
      new_certs_dir   = $dir/newcerts         # default place for new certs.

      certificate     = $dir/cacert.pem       # The CA certificate
      serial          = $dir/serial           # The current serial number
      crlnumber       = $dir/crlnumber        # the current crl number
                                        # must be commented out to leave a V1 CRL
      crl             = $dir/crl.pem          # The current CRL
      private_key     = $dir/private/cakey.pem# The private key
      RANDFILE        = $dir/private/.rand    # private random number file

      default_days    = 365                   # how long to certify for
      default_crl_days= 30                    # how long before next CRL
      default_md      = sha1                  # which md to use.
      preserve        = no                    # keep passed DN ordering

      policy          = policy_anything

      [ policy_anything ]
      countryName             = optional
      stateOrProvinceName     = optional
      localityName            = optional
      organizationName        = optional
      organizationalUnitName  = optional
      commonName              = supplied
      emailAddress            = optional

Creación de archivos de la lista de autoridades certificadoras utilizadas por INSSLR

CA AppLogic® le permite crear los archivos de la lista de autoridades certificadoras utilizadas por INSSLR

Para crear el archivo identificado por la propiedad ca_list_client, lleve a cabo los pasos siguientes:

  1. Acceda al siguiente archivo:
    cat CA/private/CA_key.pem CA/CA_cert.pem > ca_list_client.pem 
    
  2. Coloque este archivo en el volumen de clave o en el volumen montado en nfs mediante el terminal fs.
  3. Si se desea, también se puede crear el certificado de servidor de INSSLR (por ejemplo, server.pem) de la misma forma que los certificados de cliente y firmado, de igual modo, por la autoridad certificadora creada. No utilice una contraseña para este certificado.
  4. Una vez que server.pem y ca_list_client.pem están en su lugar, la autenticación del certificado del cliente se puede probar de la siguiente manera:

Encabezados de los certificados del cliente

Si un cliente se conecta a INSSLR mediante HTTPS, y si presenta un certificado de cliente, INSSLR agrega los encabezados siguientes a la solicitud que suministra al servidor de back-end:

La aplicación tiene la responsabilidad de utilizar o no estos encabezados. INSSLR transmite simplemente esta información sin verificarla de ninguna manera (excepto la corrección del encriptado y la firma).

Aplicaciones Web

Para proporcionar acceso de http(s) a su aplicación, conecte el terminal http directamente al dispositivo de WEB.

Si necesita una aplicación Web escalable, enlace el terminal http a un dispositivo HLB.

Configuración para aplicaciones Web

Los ejemplos de configuración indican solamente las propiedades establecidas a los valores no predeterminados y no se muestra la configuración de red (dirección ip, máscara de red, puerta de enlace).

Propiedad

Valor

Notes

l7_accept

http/https/both

Especifica qué protocolo se utiliza de l7. Nota: Si se especifica "https" o "both", el volumen clave debería contener el certificado SSL tal y como se especifica por la propiedad cert_file.

Aplicaciones Web con servicios adicionales

Si tiene más servicios además de http en su aplicación, puede utilizar INSSLR para pasar el tráfico http al terminal http y usar el terminal aux para otros servicios.

Propiedad

Valor

Notas

l7_accept

http/https/both

Especifica qué protocolo se utiliza de l7. NOTA: Si se especifica "https" o "both", el volumen clave debería contener el certificado SSL tal y como se especifica por la propiedad cert_file.

l3_accept_proto

tcp

Redirige los puertos tcp 25,110,143 al terminal aux.

l3_accept_port

25,110,143

Redirige los puertos tcp 25,110,143 al terminal aux.

Aplicaciones Web con más de un servicio

Si tiene varios servicios tcp/udp y http, puede utilizar INSSLR para transferir el tráfico http al terminal http y utilizar aux para abastecer el resto del tráfico PS8, que suministra el tráfico deseado a los servidores de back-end.

Uso de INSSLR para pasar tráfico http al terminal http y uso de aux para abastecer el resto del tráfico a PS8

Propiedad

Valor

Notes

l7_accept

http/https/both

Especifica qué protocolo se utiliza de l7. Nota: Si se especifica "https" o "both", el volumen clave debería contener el certificado SSL tal y como se especifica por la propiedad cert_file.

l3_accept_proto

all

Redirige al terminal aux todo el tráfico IP (excepto icmp) que no se pasa al terminal http.

Aplicaciones Web redundantes

Si necesita proporcionar una aplicación Web redundante, puede copiar la aplicación y utilizar INSSLR para proporcionar capacidades de conmutación por error a la dirección IP externa.

Aplicación Web de copia de seguridad

Si sólo desea una aplicación de copia de seguridad que notificará a los usuarios el tiempo de inactividad, puede utilizar INSSLR para generar una aplicación de copia de seguridad que necesita unos recursos mínimos.

Dispositivos en uso:

INSSLR en la aplicación primaria:

Propiedad

Valor

Notas

ip_addr

1.2.3.4

Dirección IP pública de la aplicación; debe ser la misma para la aplicación primaria y la de copia de seguridad.

netmask

255.255.255.0

Máscara de red de la dirección IP pública de la aplicación; debe ser la misma para la aplicación primaria y la de copia de seguridad.

gateway

1.2.3.254

Puerta de enlace de la dirección IP pública de la aplicación; debe ser la misma para la aplicación primaria y la de copia de seguridad.

fover_mode

asymmetric

Se ejecuta en el modo asimétrico, ya que la aplicación de copia de seguridad se debe usar solamente cuando la aplicación primaria no esté operativa.

fover_local_ip

192.168.100.1

Dirección IP privada que se debe usar para la comunicación entre dispositivos INSSLR en las dos aplicaciones. La dirección IP local es inferior a la remota, así que este dispositivo será el primario y mientras se esté ejecutando.

fover_remote_ip

192.168.100.2

Dirección IP remota que se debe usar para la comunicación entre dispositivos INSSLR en las dos aplicaciones.

fover_netmask

255.255.255.0

Máscara de red para fover_local_ip.

INSSLR en la aplicación de copia de seguridad:

Propiedad

Valor

Notas

ip_addr

1.2.3.4

Dirección IP pública de la aplicación; debe ser la misma para la aplicación primaria y la de copia de seguridad.

netmask

255.255.255.0

Máscara de red de la dirección IP pública de la aplicación; debe ser la misma para la aplicación primaria y la de copia de seguridad.

gateway

1.2.3.254

Puerta de enlace de la dirección IP pública de la aplicación; debe ser la misma para la aplicación primaria y la de copia de seguridad.

fover_mode

asymmetric

Se ejecuta en el modo asimétrico, ya que la aplicación de copia de seguridad se debe usar solamente cuando la aplicación primaria no esté operativa.

fover_local_ip

192.168.100.2

Dirección IP privada que se debe usar para la comunicación entre dispositivos INSSLR en las dos aplicaciones.

fover_remote_ip

192.168.100.1

Dirección IP remota que se debe usar para la comunicación entre dispositivos INSSLR en las dos aplicaciones.

fover_netmask

255.255.255.0

Máscara de red para fover_local_ip.

Aplicación Web redundante (una sola aplicación)

Si se desea que su aplicación se ejecute en el modo redundante sin tener que crear una nueva aplicación, puede doblar los dispositivos de esta y ejecutarlos en modo redundante. Como esto implica el uso (al menos) de dos servidores Web y dos dispositivos de base de datos, en el modo normal se usan todos (lo que proporciona escalabilidad), pero cada uno de ellos puede servir sólo a la aplicación en caso de que se produzca un error en el otro dispositivo. Si necesita más escalabilidad, puede agregar más dispositivos Web y base de datos. En este ejemplo la mitad de los dispositivos (in1, sw1, web1, db1) se ejecutan en un grupo de conmutación por error y el resto (in2, sw2, web2, db2) están en otro grupo de conmutación por error, de forma que la aplicación puede sobrevivir en caso de que se produzca un error en el servidor. Esta aplicación proporciona redundancia a un coste muy bajo, puesto que todos los dispositivos (excepto en el caso de un dispositivo INSSLR y otro HALB, que requieren recursos muy bajos) están en estado activo y no se consume ningún recurso para una aplicación de copia de seguridad que se ejecuta solamente si se produce un error en la primaria.

in1

Propiedad

Valor

Notas

ip_addr

1.2.3.4

Dirección IP pública de la aplicación; debe ser la misma para la aplicación primaria y la de copia de seguridad.

netmask

255.255.255.0

Máscara de red de la dirección IP pública de la aplicación; debe ser la misma para la aplicación primaria y la de copia de seguridad.

gateway

1.2.3.254

Puerta de enlace de la dirección IP pública de la aplicación; debe ser la misma para la aplicación primaria y la de copia de seguridad.

fover_mode

symmetric

Se ejecuta en modo simétrico.

fover_local_ip

192.168.100.1

Dirección IP privada que se debe usar para la comunicación entre dispositivos INSSLR en las dos aplicaciones.

fover_remote_ip

192.168.100.2

Dirección IP remota que se debe usar para la comunicación entre dispositivos INSSLR en las dos aplicaciones.

fover_netmask

255.255.255.0

Máscara de red para fover_local_ip.

in2

Propiedad

Valor

Notas

ip_addr

1.2.3.4

Dirección IP pública de la aplicación; debe ser la misma para la aplicación primaria y la de copia de seguridad.

netmask

255.255.255.0

Máscara de red de la dirección IP pública de la aplicación; debe ser la misma para la aplicación primaria y la de copia de seguridad.

gateway

1.2.3.254

Puerta de enlace de la dirección IP pública de la aplicación; debe ser la misma para la aplicación primaria y la de copia de seguridad.

fover_mode

symmetric

Se ejecuta en modo simétrico.

fover_local_ip

192.168.100.2

Dirección IP privada que se debe usar para la comunicación entre dispositivos INSSLR en las dos aplicaciones.

fover_remote_ip

192.168.100.1

Dirección IP remota que se debe usar para la comunicación entre dispositivos INSSLR en las dos aplicaciones.

fover_netmask

255.255.255.0

Máscara de red para fover_local_ip.

db1

Nombre de la propiedad

Valor

Notas

auto_create

1

Crea la base de datos si los volúmenes están vacíos.

server_id

1

Servidor principal 1 (debería ser diferente en la aplicación remota).

rpl_mode

master_and_slave

Principal y secundario

db2

Nombre de la propiedad

Valor

Notas

auto_create

1

Crea la base de datos si los volúmenes están vacíos.

server_id

2

Servidor principal 1 (debería ser diferente en la aplicación remota).

rpl_mode

master_and_slave

Principal y secundario

Aplicación Web redundante (dos aplicaciones idénticas)

Se pueden ejecutar dos aplicaciones idénticas en el mismo grid (pero en servidores separados para que el error de un servidor sólo afecte a una de las aplicaciones) o en grids diferentes siempre que la dirección IP que utilice sea accesible desde los dos grids. El siguiente ejemplo muestra una aplicación que usa un dispositivo de base de datos que también se está ejecutando en modo redundante, para que, en caso de error de una aplicación, la otra aplicación pueda tomar el control sin que se produzcan pérdida de datos.

Dispositivos en uso:

La solicitud del cliente llega a la puerta de enlace in1. La puerta de enlace reenvía las solicitudes al equilibrador de carga web_lb, el cual las dirige a uno de los servidores Web: web1 o web2. Los servidores Web acceden a la base de datos db. El dispositivo db se conecta a la aplicación remota (que es una copia idéntica, la única diferencia es la configuración de server_id de db y de red) para replicar la base de datos. La aplicación remota se conecta al dispositivo db mediante la puerta de enlace repl_in que se configura para permitir solamente la conexión de la puerta de enlace repl_out de la aplicación remota. Los dispositivos db de las dos aplicaciones se están ejecutando en la configuración principal-principal, así que siempre tienen datos idénticos.

Configuración de una propiedad de ejemplo (las propiedades que no se especifican deberían dejarse con sus valores predeterminados):

El acceso Web a db está disponible mediante la puerta de enlace admin en el puerto 8080.

in1

Propiedad

Valor

Notas

ip_addr

1.2.3.4

Dirección IP pública de la aplicación, debe ser la misma para ambas aplicaciones.

netmask

255.255.255.0

Máscara de red para la dirección IP pública de la aplicación, debe ser la misma para ambas aplicaciones.

gateway

1.2.3.254

Puerta de enlace para la dirección IP pública de la aplicación, debe ser la misma para ambas aplicaciones.

fover_mode

symmetric

Se ejecuta en modo simétrico.

fover_local_ip

192.168.100.1

Dirección IP privada que se debe usar para la comunicación entre dispositivos INSSLR en las dos aplicaciones. Cámbiela por 192.168.100.2 en la aplicación remota.

fover_remote_ip

192.168.100.2

Dirección IP remota que se debe usar para la comunicación entre dispositivos INSSLR en las dos aplicaciones. Cámbiela por 192.168.100.1 en la aplicación remota.

fover_netmask

255.255.255.0

Máscara de red para fover_local_ip.

db

Nombre de la propiedad

Valor

Notas

auto_create

1

Crea la base de datos si los volúmenes están vacíos.

error_log_filename

db.error

Nombre del archivo de registro de errores que se almacenará en el volumen de datos de registros.

error_log_level

error

Nivel de registro de errores.

server_id

1

Servidor principal 1, debería ser diferente en la segunda aplicación.

rpl_mode

master_and_slave

Principal y secundario

Importante: Solamente una de las aplicaciones está activa en todo momento, la otra se está ejecutando sólo para conmutación por error y se utiliza cuando la aplicación activa produce un error.

Notas

HTTP es compatible con INSSLR 1.0 y HTTP 1.1, pero si el cliente se identifica así mismo como MSIE, se desactiva la compatibilidad con HTTP 1.1 para esa conexión (para evitar errores en algunas versiones de MSIE).

Si el cliente no es MSIE, INSSLR es compatible con HTTP 1.1 para el cliente (incluidas varias solicitudes por capacidad de sesión TCP), aunque el servidor de back-end solamente sea compatible con HTTP 1.0.

INSSLR admite una sola IP externa y, por lo tanto, solamente se puede utilizar un solo certificado SSL.

El dispositivo incluye software de código fuente y software de terceros.

INSSLR utiliza los siguientes paquetes de código abierto o de terceros además de los paquetes de código abierto o de terceros que utiliza su clase base LUX6.

Software

Versión

Modificado

Licencia

Notas

PyXML

0.8.4-19

No

MIT, Python, ZPLv1.0 y BSD

N/D

heartbeat

3.0.4-1

No

LGPLv2 y GPLv2+

N/D

heartbeat-libs

3.0.4-1

No

LGPLv2 y GPLv2+

N/D

iptables

1.4.7-5.1.el6_2

No

GPLv2

N/D

libgcrypt

1.4.5-9.el6_2.2

No

GPLv2

N/D

libgpg-error

1,7-4

No

LGPLv2.1

N/D

lighttpd

1.4.18-1

No

BSD

N/D

nginx

0.7.62-1

BSD

N/D

sudo

1.7.4p5-13.el6_3

No

BSD

N/D

telnet

0.17-47

No

BSD

N/D