Tema anterior: INSSLR: puerta de enlace de entrada HTTP redundante compatible con SSL.Tema siguiente: OUT: dispositivo de puerta de enlace de salida de host único.


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

Última versión: 1.0.1-2

APP--INSSLR2 icon--ICO

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

El dispositivo INSSLR2 es una puerta de enlace de 7 niveles para solicitudes de HTTP seguras. Convierte las solicitudes en solicitudes HTTP no codificadas. Se puede utilizar esta funcionalidad para que sea compatible con HTTP seguro en el lado del cliente.

Sin embargo, la infraestructura de procesamiento de back-end no es compatible con SSL, incluidas las siguientes características:

Si se configura, INSSLR2 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 (CA) que emitió el certificado del servidor y confirmar que el certificado sea auténtico antes de continuar.

En su configuración predeterminada, INSSLR2 actúa como puerta de enlace de 7 niveles para solicitudes HTTP seguras. También proporciona un punto de entrada de cortafuegos para el tráfico de red en una aplicación. Esto se puede configurar con una dirección IP estática accesible desde Internet.

Si se configuran, se pueden usar dos dispositivos INSSLR2 en modo de conmutación por error para proporcionar un servicio redundante. En este caso, la dirección IP de INSSLR2 se ejecuta solamente en uno de los nodos y se transfiere automáticamente al otro dispositivo INSSLR2 en caso de error. Solamente uno de los dispositivos de INSSLR2 está activo durante un tiempo. Al ejecutarse en modo de conmutación por error se puede configurar INSSLR2 de modo que se ejecute en varios modos:

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

INSSLR2 constantemente controla el estado del dispositivo de back-end conectado a su terminal http. Los controles de estado realizados por INSSLR2 pueden incluir una comprobación de la conexión TCP sencilla o una solicitud HTTP más compleja (especificada en el límite de INSSLR2).

En caso de error del dispositivo conectado, INSSLR2 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 INSSLR2 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 INSSLR2 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 GB

192 MB

Ancho de banda

1 Mbps

2 Gbps

200 Mbps

Notas

Terminales

Nombre

Dirección

Protocolo

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 que hace que el dispositivo se convierta en activo o pasivo:

/?action=<active|passive|kill|status>

Si el otro nodo no está activo y no se puede completar la conmutación por error, es posible que esta acción no se realice correctamente 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 la siguiente solicitud:

/?action=status

el estado devuelve el estado activo o pasivo actual del dispositivo.

kill fuerza el apagado del dispositivo. lo que hace que el otro nodo entre en funcionamiento (si se está ejecutando).

in

in

Cualquiera

Acepta todo el tráfico de entrada.

Se puede configurar la interfaz conectada a este terminal utilizando la ficha Interfaces del editor de configuración de la aplicación.

fover

in

raw

Interfaz de conmutación por error para la intercomunicación entre dos instancias de INSSLR2.

Se puede configurar la interfaz conectada a este terminal utilizando la ficha Interfaces del editor de configuración de la aplicación.

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 puede permanecer desconectado.

aux

Saliente

Cualquiera

Salida para los otros protocolos, si se ha configurado.

Para obtener información adicional, consulte las propiedades l3_accept_*.

nfy

Saliente

http

Envía notificaciones cuando se produce una conmutación por error.

Consulte también fover_nfy_prefix. Este terminal puede permanecer desconectado.

mon

Saliente

cce

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

Propiedades

Nombre

Tipo

Descripción

dns1

Dirección IP

Define el servidor DNS primario

Si la dirección IP especifica el host remoto, dns1 puede permanecer en blanco. Si no, se debe ser especificar dns1.

Valor predeterminado: vacío

dns2

Dirección IP

Define el servidor DNS secundario, que se utilizará si el servidor DNS primario no responde.

Valor predeterminado: vacío

l7_accept

Enum.

Especifica qué tipo de tráfico HTTP se debe aceptar para reenviarlo al terminal http.

Valores válidos: https, http, both y ninguno.

Si no se establece como "none" todo el tráfico se redirecciona solamente según las propiedades l3_accept_*.

Valor predeterminado: both.

l3_accept_proto

Enum.

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, todo el tráfico entrante de la interfaz externa se envía al terminal aux. La propiedad l7_accept tiene prioridad sobre esta.

Nota: Si se establece l7_accept en un valor diferente de ninguno, todos los http(s) se envían al terminal http y el resto del tráfico va a aux, como se especifica en esta propiedad.

Valor predeterminado: none

l3_accept_port

Cadena

Una lista de protocolos separadas por comas o espacios para aceptar y enrutar con el protocolo que se especifica en l3_accept_proto al terminal aux.

Se pueden especificar protocolos en la lista como números de puerto o como nombres de protocolo estándar, como ftp y smtp al especificar puertos TCP o UDP, o bien gre y tcp, al utilizar protocolos sin formato. Se pueden especificar también intervalos de puertos como 1024:10000 o 0:1024.

Si el valor está vacío, se reenvían todos los puertos del protocolo especificado.

Nota: Si se establece l3_accept_proto a raw, se debe especificar esta propiedad que, en este caso, especifica el número de protocolo. Se puede especificar más de un protocolo sin formato, pero no se permite ningún intervalo de proto como 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.

Si se establece l7_accept como https o both, un certificado válido debe estar presente en el volumen de datos configurado en la ubicación que se ha especificado en esta propiedad. De lo contrario, INSSLR2 producirá un error al iniciarse. Para obtener información adicional, consulte Volúmenes.

Valor predeterminado: server.pem

unsafe_ssl

Cadena

Permite el uso de cifrados ssl "no seguros" para ofrecer 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. Si se establece en enabled, todos los cifrados SSL disponibles en el sistema se utilizarán para las sesiones HTTPS. Esto incluye SSLv2.

Valor predeterminado: disabled.

Esta propiedad se agregó en la versión 1.2.1.

keepalive

Entero

Especifica el tiempo de keepalive máximo entre INSSLR2 y el cliente. El tiempo se especifica en segundos.

Valor predeterminado: 15

timeout

Entero

Especifica cuántos segundos espera INSSLR2 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. Para obtener detalles adicionales, consulte la documentación de nginx.

Se pueden agregar varias líneas de configuración separadas por ;.

Nota: Si se establece, esta propiedad debe tener una sintaxis nginx válida (es decir, que termine por ;). En caso contrario, 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 INSSLR2.

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 de la autoridad certificadora enumerados 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 INSSLR2 y, si se descubre que el certificado se ha revocado, INSSLR2 emite una respuesta de error del certificado SSL al cliente.

Como to 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: el control de estado se desactiva. El resto de propiedades de control de estado son irrelevantes.
  • tcp_connect: INSSLR2 se conecta al puerto 80 del servidor web. Si la conexión se ha establecido correctamente, INSSLR2 supone que el servidor Web está operativo.

    Este es el método más rápido y que requiere menos recursos.

  • http_head: INSSLR2 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 INSSLR2 como en el servidor Web, pero es más fiable. La respuesta coincide con una expresión regular tal y como se especifica en healthcheck_regexp. Si se encuentra una coincidencia, el servidor se considera activo.

  • http_get: INSSLR2 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, INSSLR2 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, INSSLR2 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: INSSLR2-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, como Aceptar, producirán probablemente coincidencias de falso positivo. Esta cadena es una expresión regular "perl".

Valor predeterminado: ^HTTP\/1\.\d\s+200.

healthcheck_interval

Entero

Intervalo entre los controles de estado de los servidores web de back-end. Esto se especifica 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 excede, la comprobación se considera errónea y se finaliza. Se iniciará una comprobación nueva.

Valor predeterminado: 10

healthcheck_alert

Entero

Número de errores de controles de estado subsiguientes antes de que INSSLR2 comience a volcar errores en el cuadro de mandos del grid.

Si se establece en 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 INSSLR2 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

Nombre

Tipo

Descripción

fover_mode

Cadena

Modo de conmutación por error.

Valores válidos: ninguno (sin conmutación por error), symmetric y asymetric.

Cuando se establezca como ninguno, INSSLR2 actúa como un dispositivo INSSLR2 y no proporciona capacidades de conmutación por error.

Cuando se establece en el modo simétrico, INSSLR2 se ejecuta en el modo simétrico de conmutación por error. Necesita dos dispositivos de INSSLR2, ambos se ejecutan en el modo simétrico de conmutación por error.

Cuando se establece en el modo asimétrico, INSSLR2 se ejecuta en el modo asimétrico de conmutación por error. Necesita dos dispositivos de INSSLR2, ambos se ejecutan en el modo asimétrico de conmutación por error.

Nota: Cuando se ejecutan en el modo de conmutación por error, los dos dispositivos deben tener fover_mode establecido con el mismo valor.

Valor predeterminado: none

fover_remote_ip

Dirección IP

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

Nota: Deje este valor vacío si ha establecido fover_mode como ninguno.

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_prefix fover_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 conduce al terminal NFY.

Valor predeterminado: ?

fover_on_healthcheck

Entero

Especifica si INSSLR2 deber 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, INSSLR2 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 o detenga la aplicación.

Si solamente se necesitan notificaciones de los errores, consulte healthcheck_alert.

Valor predeterminado: 0 (desactivado).

Volúmenes

Nombre

Descripción

key

Un volumen de datos de solo lectura (denominado "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

INSSLR2 detecta el error del INSSLR2 en aproximadamente 10 segundos y requiere unos 10 segundos adicionales para 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

INSSLR2 enruta no menos de 3000 transacciones (pares 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

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

Conexiones simultáneas

Con la memoria predeterminada INSSLR2 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 el modo redundante y se desean dar servicio a 2000 conexiones simultáneas, se necesitan 100 MB + 3*16 MB = 148 MB. La memoria mínima cuando se ejecuta el modo redundante es 100 MB.

Notificaciones

Cuando se ejecuta en el modo redundante (fover_mode no está definido como ninguno), INSSLR2 activa las notificaciones siempre que pase a ser activo o pasivo. Esto se realiza en inicio del nodo activo o cuando se produce una conmutación por error. Cada nodo envía una notificación se convierte en activa o pasiva.

INSSLR2 envía dos notificaciones:

Se puede utilizar fover_nfy_prefix para cambiar la ubicación del script remoto que se llama o para agregar más parámetros.

Ejemplos de valores fover_nfy_prefix:

/path/to/script.php?, /path/to/script.php?username=user&password=pass&. 

Notas:

Control de estado

INSSLR2 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 informará de ningún error en los primeros 5 minutos después de que se inicie el dispositivo. Esto impide que se produzcan falsas alarmas cuando no se haya iniciado el otro nodo en la replicación.

Certificados del servidor

Para utilizar SSL se necesita tanto el certificado firmado como la clave privada con la que se ha encriptado. La clave y el certificado deben estar en formato PEM y colocarse en un único archivo especificado por la propiedad cert_file.

Generación de certificados de servidor

Se puede generar un certificado de servidor que una autoridad certificadora de confianza (CA) puede firmar pagando o crear un certificado autofirmado.

Siga los pasos siguientes:

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

    Se puede generar también una clave protegida por contraseña utilizando el siguiente comando. Sin embargo, si se crea una clave protegida por contraseña, es necesario eliminar la contraseña antes de utilizar en INSSLR2. INSSLR2 requiere una clave sin contraseña.

    openssl genrsa -des3 -out privkey.pem 2048 
    
  2. Cree un certificado mediante una de las opciones siguientes:

Uso de certificados de servidor

Se puede colocar ahora el certificado y la clave en un archivo y utilizarlo en INSSLR2 ejecutando el comando siguiente:

cat privkey.pem  server.crt > server.pem 

Si la clave está protegida mediante contraseña, esta 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

INSSLR2 permite utilizar un certificado existente que se utilice en Apache. Verifique que la clave no está protegida por contraseña siguiendo los pasos anteriores; a continuación, coloque el certificado privado y guárdelo en un solo archivo.

Por ejemplo:

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 solo archivo (en ese orden).

Por ejemplo:

Importante: La clave de firma del servidor es la prueba de identidad de su sitio web. También es vulnerable, ya que no está encriptada mediante contraseña para que el dispositivo la pueda leer sin ayuda.

Al instalarlo en el volumen de datos, tome las medidas necesarias para proteger el archivo de clave. No utilice el mismo volumen de datos con otros fines y no lo haga visible en un servidor web. Para, por ejemplo, alojar datos web accesibles, como páginas HTML y scripts.

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 INSSLR2.

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.

Importante: La clave privada para autoridad certificadora es la base de confianza de la aplicación. No la pierda ni la proporcione a otras personas.

Siga los pasos siguientes:

  1. Cree un directorio de trabajo en un host seguro y lo siguiente en dicho directorio:
  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 
    
  3. Cree, a partir de la clave privada, el certificado público clave de la autoridad certificadora:
    openssl req -new -key CA/private/CA_key.pem -x509 -days 365 -out CA/CA_cert.pem 
    

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

Se pueden crear certificados de cliente firmados por la autoridad certificadora.

Siga los pasos siguientes:

  1. Genere una clave privada RSA:
    openssl genrsa -out clientA_privkey.pem 2048 
    

    Para crear una clave protegida de contraseña, utilice el conmutador -des3.

  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 
    

Notas:

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

Revocación de certificados de cliente firmados por CA

Para revocar un certificado de cliente emitido por la CA, utilice el comando siguiente:

openssl ca -config openssl.conf -revoke clientB.cer -crl_reason keyCompromise 

Donde un archivo 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:

openssl ca -config openssl.conf -gencrl -out CA/crl.pem 

En este ejemplo crl.pem es el archivo que se debe proporcionar a INSSLR2 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 INSSLR2

Se puede crear archivos de la lista de autoridades certificadoras utilizadas por INSSLR2.

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.

    Si se desea, también se puede crear el certificado de servidor de INSSL2 (por ejemplo, server.pem) de la misma forma que los certificados de cliente, así como firmarse de igual modo por la autoridad certificadora creada. No utilice una contraseña para este certificado.

  3. 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 INSSLR2 mediante HTTPS, y si presenta un certificado de cliente, INSSLR2 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. INSSLR2 solamente transfiere esta información sin verificarla de ninguna manera (excepto la corrección del encriptado y la firma).

Uso típico

Aplicaciones Web

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

APP--Web Applications_Provide HTTPS--ICO

Aplicación web escalable con el terminal http conectado a un dispositivo HALB.

APP--Web Applications_Scalable--ICO

Los ejemplos de configuración enumeran solamente propiedades establecidas como valores no predeterminados.

Nombre

Tipo

Descripción

17_accept

http/https/both

Especifica qué protocolo se utiliza de l7.

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 INSSLR2 para pasar el tráfico http al terminal http y usar el terminal aux para otros servicios.


APP--Web App w Additional Services--ICO

Propiedad

Valor

Notas

17_accept

http/https/both

Especifica qué protocolo se utiliza de l7.

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 varios servicios adicionales

Si se disponen de varios servicios de TCP/UDP y HTTP, se puede utilizar INSSLR2 para transferir tráfico de HTTP al terminalHTTP, así como utilizar el terminal aux para suministrar el tráfico restante a PS8. A continuación, PS8 suministra el tráfico deseado a los servidores de back-end.

APP--Web App w Multiple Additional Services--ICO

Propiedad

Valor

Notas

17_accept

http/https/both

Especifica qué protocolo se utiliza de l7.

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 transfiere al terminal http.

Aplicaciones Web redundantes

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

Nota: Si dos dispositivos de INSSLR2 de la misma aplicación se configuran para ejecutarse en el modo redundante, se mostrará un mensaje de advertencia cuando se configura la misma dirección IP en dos interfaces diferentes. Ignore ese error.

Aplicación web de copia de seguridad

Si se desea una aplicación de copia de seguridad que notifique a los usuarios el tiempo de inactividad, se puede utilizar INSSLR2 para generar una aplicación de copia de seguridad que requiera unos recursos mínimos.

Dispositivos en uso:

INSSLR2 en la aplicación primaria

Propiedad

Valor

Notas

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_remote_ip

192.168.100.2

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

INSSLR2 en la aplicación de copia de seguridad:

Propiedad

Valor

Notas

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_remote_ip

192.168.100.1

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

Nota: Se pueden configurar los atributos de la interfaz conectada al terminal fover utilizando la ficha Interfaces del editor de configuración de la aplicación. Por ejemplo, las propiedades fover_local_ip y fover_netmask.

Aplicación web redundante en una sola aplicación

Para ejecutar la aplicación en el modo redundante sin crear una nueva aplicación, se pueden duplicar los dispositivos y ejecutarlos en modo redundante. Dado que esto implica utilizar como mínimo dos servidores web y dos dispositivos de base de datos en el modo normal, se utilizan todos los que proporcionan escalabilidad. Sin embargo, cada uno de ellos puede dar servicio únicamente 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 INSSLR2 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.

APP--Redundant Web application_single application_ICO

in1

Propiedad

Valor

Notas

fover_mode

symmetric

Se ejecuta en modo simétrico.

fover_remote_ip

192.168.100.2

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

in2

Propiedad

Valor

Notas

fover_mode

symmetric

Se ejecuta en modo simétrico.

fover_remote_ip

192.168.100.1

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

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. Debe 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

1

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

rpl_mode

master_and_slave

Principal y secundario

Aplicación web redundante con dos aplicaciones idénticas

Por ejemplo, se pueden ejecutar dos aplicaciones idénticas en el mismo grid pero en servidores independientes, o bien en grids diferentes si la dirección IP es accesible desde los dos grids. Esto permite que el error de un servidor afecte solamente a una de las aplicaciones.

Nota: Si dos dispositivos de INSSLR2 de la misma aplicación se configuran para ejecutarse en el modo redundante, se mostrará un mensaje de advertencia cuando se configura la misma dirección IP en dos interfaces diferentes. Ignore ese error.

El siguiente ejemplo muestra una aplicación que utiliza un dispositivo de base de datos que también se ejecuta en el modo redundante. Si una aplicación produce un error, la otra aplicación puede tomar el control sin que se pierdan datos.

APP--Redundant Web application_two identical applications--ICO

Dispositivos en uso:

Las solicitudes de cliente llegan a la puerta de enlace de insslr. 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. Para replicar la base de datos, la aplicación remota es una copia idéntica, con la única diferencia de que es la configuración de server_id de db y de red.

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 ejecutan en la configuración principal-principal para garantizar 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.

insslr

Propiedad

Valor

Notas

fover_mode

symmetric

Se ejecuta en modo simétrico.

fover_remote_ip

192.168.100.2

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

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 solo para la conmutación por error y se utiliza cuando la aplicación activa produce un error.

Notas:

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

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

Software

Versión

Modificado

Licencia

Notas

PyXML

0.8.4-19

No

BSD

N/D

heartbeat

3.0.4-1

No

LGPLv2.1

N/D

heartbeat-libs

3.0.4-1

No

LGPLv2.1

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