Rubrique précédente: IN2 : Appliance de passerelle d'entréeRubrique suivante: INSSLR2 - Passerelle d'entrée HTTP redondante avec prise en charge SSL


INSSLR : passerelle d'entrée HTTP redondante avec prise en charge SSL

Voir la vidéo

Dernière version : 3.1.2-1

INSSLR - Passerelle d'entrée HTTP redondante avec prise en charge SSL

Aperçu rapide

Catalogue

System (Système)

Catégorie

Passerelles

Volumes d'utilisateur

Oui

Min. mémoire

192 Mo

SE

Linux

Contraintes

non

Présentation fonctionnelle

L'appliance INSSLR est une passerelle de couche 7 pour les requêtes HTTP sécurisées. Elle convertit les requêtes en requêtes HTTP non codées. Vous pouvez l'utiliser lorsque le protocole HTTP sécurisé est nécessaire côté client, mais que l'infrastructure de traitement principale ne prend pas en charge SSL ou est dans l'incapacité de le prendre en charge, notamment :

Si elle est configurée pour, INSSLR prend également en charge l'authentification des certificats client. En cas d'authentification mutuelle SSL, le client et le serveur échangent leurs certificats et leurs clés publiques correspondantes. Le client peut contacter l'autorité de certification qui a publié le certificat du serveur et confirmer que le certificat est authentique avant de continuer. Le serveur peut faire de même.

Dans sa configuration par défaut, INSSLR agit comme une passerelle de couche 7 pour les requêtes HTTP sécurisées et fournit également un point d'entrée derrière un pare-feu pour le trafic réseau dans une application CA AppLogic®, que vous pouvez configurer avec une adresse IP statique accessible via Internet.

Si vous effectuez la configuration nécessaire, vous pouvez utiliser deux appliances INSSLR en mode de basculement pour fournir un service redondant. Dans ce cas, l'adresse IP d'INSSLR (configurée via ip_addr) ne s'exécute que sur l'un des noeuds et est automatiquement transférée vers l'autre appliance INSSLR en cas d'échec. Dans tous les cas, une seule appliance INSSLR est active à la fois. En mode de basculement, vous pouvez configurer INSSLR pour qu'elle s'exécute en plusieurs modes :

En cas d'exécution en mode redondant, INSSLR fournit une interface sur son terminal ctl pour :

INSSLR surveille constamment l'état d'intégrité de l'appliance principale connectée à son terminal http. Les contrôles de l'état d'intégrité réalisés par INSSLR peuvent inclure un simple test de connexion TCP ou une requête HTTP plus complexe (spécifiée sur le périmètre d'INSSLR). En cas d'échec de l'appliance connectée, INSSLR renvoie une erreur dans le tableau de bord de grille ou, si elle est exécutée en mode redondant et configurée pour, elle bascule vers l'appliance INSSLR de sauvegarde.

Pour prendre en charge des applications qui doivent s'afficher à une adresse IP unique pour plusieurs services, vous pouvez configurer INSSLR pour diriger le trafic non HTTP de façon transparente vers un terminal de sortie distinct. Pour les connexions de ce type, l'appliance agit comme un routeur NAT/pare-feu de couche 3.

Périmètre

Ressources

Ressource

Minimum

Maximum

Valeur par défaut

UC

0.05

4

0.05

Mémoire

192 Mo

2 Go

192 Mo

Bande passante

1 Mbit/s

2 Gbits/s

200 Mbits/s

La taille de la mémoire par défaut pour la version de 2.7 de CA AppLogic® est passée à 128 Mo. La mémoire minimum reste de 64 Mo.

Notes

Terminaux

name

dir

Protocole

description

ctl

in

HTTP

Recevez les notifications lorsque l'appliance est forcée de passer d'appliance principale à appliance de sauvegarde. Ce terminal n'accepte des connexions que si fover_mode n'est pas none. Une requête HTTP valide se présente comme suit : /?action=<active|passive|kill|status>. actif/passif fait passer l'appliance à l'état actif ou passif. Remarque : Il se peut que cette action échoue (si l'autre noeud n'est pas actif et que le basculement ne peut pas s'effectuer). Aucune erreur n'est renvoyée dans ce cas. Il appartient à l'application appelante de vérifier l'état de l'appliance en effectuant une requête /?action=status. pour vérifier l'état actuel de l'appliance (actif/passif). La commande kill provoque l'arrêt de l'appliance et le basculement sur l'autre noeud (s'il est en cours d'exécution).

http

sortie

HTTP

Les requêtes HTTPS et/ou HTTP reçues sur l'adresse IP externe configurée sont dirigées vers la sortie HTTP comme de simples requêtes HTTP sur le port HTTP standard 80. En plus des en-têtes HTTP fournis par le client, les requêtes transférées contiennent également les en-têtes informatifs suivants :

X-Forwarded-For : adresse IP du client distant. Les scripts CGI côté serveur doivent utiliser cet en-tête au lieu de l'adresse IP distante.

X-Forwarded-Proto : https Cet en-tête est présent si le client s'est connecté sur HTTPS. C'est à l'application principale qu'il revient d'utiliser cet en-tête pour établir une distinction entre les connexions HTTP et HTTPS.

fs

sortie

NFS

Fournit un montage NFS comme emplacement alternatif au volume de clé local pour le stockage des clés. Si le volume de clé local et une connexion au terminal fs sont fournis, l'appliance ne parvient pas à démarrer. Ce terminal peut rester déconnecté.

aux

sortie

Indifférent

Sortie pour les autres protocoles, si configurée. Reportez-vous aux propriétés l3_accept_*.

nfy

sortie

HTTP

Envoie des notifications en cas de basculement. Voir également fover_nfy_prefix. Ce terminal peut rester déconnecté.

MON

sortie

CCE

Envoie des statistiques de performances et d'utilisation des ressources.

Propriétés

Nom

Type

Description

ip_addr

ip_owned

Adresse IP externe de la passerelle. Cette propriété n'ayant pas de valeur par défaut, elle doit être définie. Valeur par défaut : vide.

netmask

Adr. IP

Masque de réseau. Cette propriété n'ayant pas de valeur par défaut, elle doit être définie. Valeur par défaut : vide.

gateway

Adr. IP

Passerelle par défaut pour le trafic sortant. Valeur par défaut : vide.

dns1

Adresse IP

Définit le serveur DNS principal. Ce champ peut être laissé vide si l'hôte distant est spécifié par son adresse IP. Dans le cas contraire, il doit être spécifié. La valeur par défaut est vide.

dns2

Adresse IP

Définit le serveur DNS secondaire à utiliser si le serveur DNS primaire ne répond pas. La valeur par défaut est vide (non utilisé).

l7_accept

chaîne

Indique les types de trafic HTTP à accepter pour le transfert vers le terminal HTTP. Valeurs valides : https, http, both, none. Si la valeur est définie sur none, tout le trafic est redirigé uniquement en fonction des propriétés l3_accept_*.
Valeur par défaut : both.

l3_accept_proto

chaîne

Spécifie les protocoles à renvoyer au terminal aux.

Valeurs valides : none, tcp, udp, raw, all.

Si la valeur est définie sur tcp ou udp, la propriété l3_accept_port peut être utilisée pour spécifier le port. Si elle est définie sur raw, la propriété l3_accept_port spécifie le numéro de protocole. Si la valeur est définie sur all, le trafic entrant sur l'interface externe est transféré vers le terminal aux. La propriété l7_accept est prioritaire sur celle-ci. Si vous définissez l7_accept sur une autre valeur que none, tous le trafic http(s) est envoyé au terminal http. Le reste du trafic va vers aux comme spécifié par cette propriété.
Valeur par défaut : none

l3_accept_port

chaîne

Liste de protocoles séparés par une virgule (ou un espace) pour accepter et acheminer le protocole spécifié par l3_accept_proto vers le terminal aux. Les protocoles de la liste peuvent être spécifiés en tant que numéros de port ou noms de protocole standard (par exemple, ftp, smtp etc. lorsque les ports tcp/udp ou gre, tcp, etc. sont spécifiés lors de l'utilisation de protocoles bruts). Vous pouvez également spécifier des plages de ports (1024:10000, 0:1024). Si aucune valeur n'est spécifiée, tous les ports du protocole spécifié sont transférés.

Remarque : Si vous définissez l3_accept_proto sur raw, vous devez spécifier cette propriété qui, dans ce cas, spécifie le nombre de protocoles. Vous pouvez spécifier plusieurs protocoles raw, mais pas de plage. Par exemple, 20:30 n'est pas autorisé.

Valeur par défaut : all

allowed_hosts

Chaîne

Liste des hôtes et/ou des sous-réseaux autorisés à se connecter. Séparez plusieurs entrées à l'aide d'espaces ou de virgules. Exemple de format pris en charge : 192.168.1.2 192.168.1.0/24 192.168.2.0/255.255.255.0. Valeur par défaut : 0.0.0.0/0 (tout autorisé)

key_on_fs

chaîne

Indique si les clés sont stockées sur un montage nfs via le terminal fs (on) ou sur le volume de clés local (off). Valeurs valides : on et off Valeur par défaut : off

cert_file

chaîne

Nom de fichier (relatif à la racine du volume de données) du certificat de serveur que cette instance de passerelle doit présenter au client. Remarque : Un certificat valide doit être présent sur le volume de données configuré (voir Volumes ci-dessous) à l'emplacement spécifié par cette propriété si l7_accept est défini sur https ou both. Dans le cas contraire, INSSLR ne parvient pas à démarrer.

Valeur par défaut : server.pem.

unsafe_ssl

chaîne

Activez l'utilisation des chiffrements SSL non sécurisés à des fins de compatibilité avec des navigateurs hérités. La valeur par défaut disable désactive les chiffrements SSLv2 ainsi que certains autres cryptages SSLv3 et TLSv1 qui ne sont pas considérés sécurisés. Il est recommandé de laisser cette propriété définie sur Disabled, sauf si vous devez prendre en charge des sessions HTTPS pour des navigateurs hérités qui fonctionnent uniquement avec SSLv2. Lorsque la valeur est Activé, tous les chiffrements SSL disponibles sur le système (y compris SSLv2) peuvent être utilisés pendant les sessions https.

Valeur par défaut : disabled.

keepalive

Entier

Spécifiez la durée maximum de maintien de la connexion entre INSSLR et le client. La valeur est spécifiée en secondes. Valeur par défaut : 15

timeout

Entier

Spécifie le nombre de secondes pendant lequel INSSLR patiente pour obtenir la sortie du serveur principal. Si le serveur principal n'envoie pas de sortie pour le délai d'expiration en secondes, la connexion est fermée.
Par défaut : 300

max_request_size

Entier

Taille maximum (en Mo) d'une requête client. Augmentez-la si votre application doit gérer des téléchargements de clients volumineux. Valeur par défaut : 10.

adv_config

chaîne

Ajoutez une configuration brute à insérer dans nginx conf dans les blocs d'emplacement aussi bien pour les écouteurs http que https (quel que soit celui activé).

Par exemple, pour ajouter des en-têtes personnalisés, définissez adv_config sur proxy_set_header myport $proxy_port ;. Cette opération ajoute myport : 80 à la requête envoyée au serveur principal. adv_config peut être défini sur une instruction valide pour un bloc d'emplacement. (Pour plus d'informations, consultez la documentation de nginx.) Vous pouvez ajouter plusieurs lignes de configuration séparées par un point-virgule (;). Si elle est définie, cette propriété doit avoir une syntaxe nginx valide (à savoir, se terminer par un point-virgule) faute de quoi l'appliance ne parvient pas à démarrer.

Valeur par défaut : vide.

client_cert

chaîne

Permet l'authentification du certificat client.

Valeurs valides : on, ask et off

Si elle est définie sur on, l'authentification du certificat client est forcée et seuls les clients disposant de certificats valides peuvent faire aboutir leur requête dans INSSLR. Lorsqu'elle est définie sur ask, les clients doivent présenter des certificats, mais la connexion est établie même si aucun certificat valide n'est présenté.

Valeur par défaut : off

client_depth

Entier

Ampleur de la vérification à effectuer dans un certificat client en chaîne. Cette propriété n'a aucun effet si client_cert n'est pas défini. Les valeurs valides sont comprises entre 1 et 9. Valeur par défaut : 1

ca_list_client

chaîne

Fichier contenant une séquence de certificats d'autorité de certification au format PEM.

Les noms des certificats répertoriés sont envoyés au client lors de la connexion. Le client est ainsi informé du nom du certificat qu'il doit envoyer. La même liste est utilisée pour vérifier le certificat client. Le nom de fichier correspond à la racine du volume clé monté ou la racine du montage nfs via le terminal fs et peut contenir un chemin d'accès, par exemple, path/to/keys/ca_list_client.pem.

Valeur par défaut : ca_list_client.pem.

cert_revocation_list

chaîne

Fichier contenant la liste des révocations de certificat (CRL) telle que générée par l'autorité de certification. Cette liste identifie les certificats clients révoqués par l'autorité de certification.

Elle est consultée chaque fois qu'un certificat client est présenté à INSSLR et si un fichier révoqué est identifié, INSSLR envoie une réponse Erreur de certificat SSL au client. Tout comme pour ca_list_client, le nom de fichier correspond à la racine du volume clé monté ou la racine du montage nfs effectué via le terminal fs et peut contenir un chemin d'accès. Par exemple, path/to/keys/ca_list_client.pem.

Valeur par défaut : vide

Propriétés de contrôle de l'intégrité

name

type

description

healthcheck_method

Chaîne

Méthode utilisée pour le contrôle de l'intégrité des serveurs Web principaux.
off - L'outil de contrôle de l'intégrité est désactivé, toutes les autres propriétés healthcheck_ ne sont pas pertinentes.
tcp_connect - INSSLR se connecte au port 80 du serveur Web. Si la connexion est correctement établie, INSSLR suppose que le serveur Web est fonctionnel. Cette méthode est la plus rapide et est celle qui nécessite le moins de ressources.
http_head - INSSLR utilise la méthode HEAD pour demander le document spécifié par la propriété healthcheck_url. Cette méthode est plus lente que tcp_connect, requiert davantage de ressources sur INSSLR et sur le serveur Web, mais est plus fiable. La réponse est comparée à une expression régulière telle que spécifiée par healthcheck_regexp et si une correspondance est trouvée, le serveur est considéré comme opérationnel.
http_get - INSSLR utilise la méthode GET pour demander le document spécifié par la propriété healthcheck_url. Cette méthode est plus lente et requiert davantage de ressources, mais est la plus fiable. La réponse (en-tête et corps du message) est comparée à une expression régulière telle que spécifiée par healthcheck_regexp et si une correspondance est trouvée, le serveur est considéré comme opérationnel.
Valeur par défaut : off

healthcheck_url

Chaîne

URL utilisée pour effectuer le contrôle de l'intégrité des serveurs Web principaux dans les méthodes de contrôle de l'intégrité http_get et http_head. Il peut s'agir d'une URL complète (http://host.name/file/to/check/for.php) ou d'un chemin d'accès relatif (/file/to/check/for.php). Si l'adresse spécifiée est une URL, INSSLR utilise le protocole HTTP/1.1 pendant l'exécution des contrôles d'intégrité à l'aide du nom d'hôte extrait d'UR, dans un en-tête "Host:". Elle permet l'utilisation d'hôtes virtuels. Si l'adresse spécifiée est un chemin d'accès relatif, INSSLR utilise le protocole HTTP/1.0 et vérifie le document spécifié par cette propriété.
Valeur par défaut : /.

healthcheck_agent

Chaîne

Chaîne utilisée comme identificateur d'agent pour les méthodes de contrôle de l'intégrité http_get et http_head.
Valeur par défaut : INSSLR-health-check.

healthcheck_regexp

Chaîne

Chaîne de test utilisée avec le mode de contrôle de l'intégrité http_head et http_get. Des valeurs courtes ou communes (p. ex. OK) généreront probablement des faux positifs. Cette chaîne est une expression régulière Perl. Vous trouverez davantage d'informations sur les expressions régulières Perl ici.
Valeur par défaut : ^HTTP\/1\.\d\s+200.

healthcheck_interval

Entier

Intervalle (exprimé en secondes) entre les contrôles d'intégrité des serveurs Web principaux.
Valeur par défaut : 60 secondes.

healthcheck_timeout

Entier

Durée maximum en secondes du contrôle de l'intégrité. A l'issue de ce délai, le contrôle est considéré comme ayant échoué et se termine. (Un nouveau contrôle démarre.) Valeur par défaut : 10.

healthcheck_alert

Entier

Nombre d'échecs successifs du contrôle de l'intégrité avant qu'INSSLR ne commence à signaler des erreurs dans le tableau de bord de grille. Si ce nombre est défini sur 0, aucune erreur n'est signalée au tableau de bord (mais les contrôles de l'intégrité sont toujours activés). Ne définissez pas une valeur trop basse afin d'éviter les faux positifs au démarrage ou à l'arrêt de votre application. Reportez-vous également à fover_on_healthcheck si vous exécutez INSSLR en mode redondant et que vous souhaitez basculer vers le noeud de sauvegarde en cas d'échec du serveur principal. Valeur par défaut : 3.

Propriétés avancées (utilisées dans les scénarios de basculement)

fover_mode

Chaîne

Mode de basculement. Les valeurs possibles sont none (aucun basculement), symmetric et asymmetric.
Lorsqu'il est défini sur symmetric, INSSLR s'exécute en mode de basculement symétrique. (Pour ce faire, vous avez besoin de deux appliances INSSLR s'exécutant en mode de basculement symétrique).
Lorsqu'il est défini sur asymmetric, INSSLR s'exécute en mode de basculement asymétrique. (Pour ce faire, vous avez besoin de deux appliances INSSLR s'exécutant en mode de basculement asymétrique).
Important : Lorsqu'elles s'exécutent en mode de basculement, les deux appliances doivent avoir fover_mode défini sur la même valeur.
Valeur par défaut : none

fover_local_ip

ip_owned

Adresse IP locale à utiliser en mode de basculement pour communiquer avec l'autre appliance INSSLR. Il peut s'agir de n'importe quelle adresse IP disponible, y compris une adresse privée réservée (telle que définie par rfc1918). Cette adresse est utilisée uniquement pour surveiller l'état de l'autre appliance INSLLR.
Important :

Elle doit être définie sur la même adresse IP que la propriété fover_remote_ip sur l'autre appliance INSSLR.

Si vous avez défini la propriété fover_mode sur none, laissez ce champ vide.
Valeur par défaut : vide.

fover_remote_ip

ip_owned

Adresse IP distante de l'autre appliance INSSLR utilisée en mode de basculement.

Important :

Elle doit être définie sur la même adresse IP que la propriété fover_local_ip sur l'autre appliance INSSLR.

Si vous avez défini la propriété fover_mode sur none, laissez ce champ vide.
Valeur par défaut : vide.

fover_netmask

Adr. IP

Masque de réseau pour fover_local_ip.
Important : Si vous avez défini la propriété fover_mode sur none, laissez ce champ vide.
Valeur par défaut : vide.

fover_nfy_prefix

Chaîne

Préfixe de l'URL demandé en cas de basculement. L'URL demandée est la suivante :

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

et traverse le terminal nfy.
Valeur par défaut : ?

fover_on_healthcheck

Entier

Spécifiez si INSSLR doit basculer sur le noeud de sauvegarde en cas d'échec du contrôle de l'intégrité sur le terminal. Si la valeur est définie sur une valeur autre que zéro, INSSLR bascule après le nombre d'échecs de contrôle d'intégrité successifs spécifiés. Ne définissez pas une valeur trop basse afin d'éviter les faux positifs au démarrage ou à l'arrêt de votre application. Reportez-vous également à healthcheck_alert si vous avez uniquement besoin des notifications en cas d'échecs. Valeur par défaut : 0 (désactivé).

Volumes

name

description

clé

Volume de données en lecture seule (espace réservé) contenant au minimum la clé de signature de serveur SSL. Le fichier doit être au format PEM. A moins que le nom de la propriété cert_file ne soit modifié, le certificat doit se trouver dans le répertoire racine du volume clé, nommé server.pem.

Messages d'erreur

Les messages suivants peuvent s'afficher dans le fichier journal de l'appliance ou dans le journal système du contrôleur de grille lorsque l'appliance ne parvient pas à démarrer :

Performances

Basculement d'applications

INSSLR détecte l'échec de l'autre application INSSLR en 10 secondes environ. Le basculement vers l'autre application prend 10 secondes supplémentaires. La durée totale entre l'échec de l'application et la reprise du trafic sur l'autre application est d'environ 20 secondes.

Taux de requêtes

INSSLR achemine pas moins de 3000 transactions (paires requête/réponse) par seconde, en fonction de la taille de document et de la bande passante réseau disponible.

Débit des données

INSSLR achemine pas moins de 7 Mo/seconde, en fonction de la taille de document et de la bande passante réseau disponible.

Connexions simultanées

Avec sa mémoire par défaut, INSSLR prend en charge pas moins de 500 requêtes en suspens simultanément (une requête en suspens étant une connexion TCP ouverte à partir du client, sur laquelle une ou plusieurs requêtes HTTP sont en cours mais pas terminées). La quantité maximum de connexions simultanées dépend de la mémoire disponible. Chaque supplément de mémoire de 16 Mo augmente le nombre de transactions http simultanées de 500. Par exemple, en cas d'utilisation du mode redondant, si vous voulez pouvoir traiter 2000 connexions simultanément, vous avez besoin de 100 Mo + 3*= 148 Mo. (La mémoire minimum pour l'exécution en mode redondant est de 100 Mo.)

Notifications

Lorsqu'il est exécuté en mode redondant (fover_mode est défini), INSSLR déclenche des notifications lorsqu'il devient actif ou passif et inversement. Cette notification apparaît au démarrage du noeud actif ou lors d'un basculement. (Chaque noeud envoie une notification indiquant qu'il est devenu actif/passif.)

INSSLR envoie deux notifications :

Important :

Outil de contrôle de l'intégrité

INSSLR exécute un cronjob toutes les minutes pour vérifier les aspects suivants :

Si l'une des vérifications est exacte, un message d'erreur est envoyé au tableau de bord de grille. Si plusieurs tests échouent, un message reprenant toutes les erreurs sera publié dans le tableau de bord de grille. Chaque erreur ne sera signalée au tableau de bord de grille qu'une fois par heure. Aucune erreur n'est signalée durant les 5 premières minutes suivant le démarrage d'appliance (pour empêcher de fausses alarmes lorsque l'autre noeud dans la réplication n'a pas démarré).

Certificats de serveur

Pour utiliser SSL, vous avez besoin du certificat signé et de la clé privée avec laquelle il a été codé. La clé et le certificat doivent être au format PEM et utiliser un fichier unique spécifié par la propriété cert_file.

Cette section contient les rubriques suivantes :

Génération de certificats de serveur

Utilisation des certificats de serveur

Utilisation des certificats de serveur apache+mod_ssl existants

Génération de certificats de serveur

CA AppLogic® permet de générer des certificats de serveur.

Pour générer des certificats de serveur

  1. Générez une clé privée à l'aide de la commande suivante :
    openssl genrsa -out privkey.pem 2048 
    

    Pour générer une clé protégée par mot de passe, utilisez la commande suivante. (Pour utiliser la clé avec INSSLR, vous avez besoin d'une clé sans mot de passe, si vous créez une clé protégée par mot de passe, vous devez d'abord supprimer le mot de passe avant de l'utiliser dans INSSLR.)

    openssl genrsa -des3 -out privkey.pem 2048 
    
  2. Vous avez ensuite besoin d'un certificat. Vous avez deux options ici. Créez une requête de certificat et faites-la signer par une autorité de certification approuvée (moyennant frais) ou créez un certificat autosigné à des fins de test. (Dans ce cas, les navigateurs demandant votre site publieront des avertissements selon lesquels le certificat n'est pas signé par une autorité de certification approuvée).

    Pour générer une requête de certificat, exécutez la commande suivante :

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

    Après avoir envoyé le fichier .csr à votre autorité de certification approuvée, vous recevrez en retour un certificat signé (fichier .crt) que vous pouvez utiliser.

  3. Pour générer un certificat auto-signé, exécutez la commande suivante :
    openssl req -new -x509 -key privkey.pem -out server.crt -days 1095
    

Utilisation des certificats de serveur

Vous pouvez maintenant placer le certificat et la clé dans un fichier et l'utiliser dans INSSLR :

cat privkey.pem  server.crt > server.pem 

Si votre clé est protégée par un mot de passe, vous pouvez supprimer ce dernier en exécutant la commande suivante :

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

Utilisation des certificats de serveur apache+mod_ssl existants

Si vous avez un certificat existant que vous utilisez dans Apache, vous pouvez aussi l'utiliser dans INSSLR. Veillez à ce que la clé ne soit pas protégée par mot de passe (voir ci-dessus) et placez la clé privée et le certificat dans un fichier dans cet ordre.

Exemple :

cat privkey.pem  server.csr > server.pem 

Si vous utilisez un certificat en chaîne, vous devriez également inclure le certificat intermédiaire fourni par son émetteur. Placez la clé privée, le certificat et le certificat intermédiaire dans un fichier en respectant cet ordre.

Exemple :

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

Important : La clé de signature du serveur est la preuve de l'identité de votre site Web. Votre site est vulnérable aussi parce qu'il n'est pas chiffré par mot de passe (de sorte que l'appliance puisse le lire sans votre assistance). Prenez les mesures nécessaires pour protéger le fichier clé, lors de son installation sur le volume de données. N'utilisez pas le même volume de données à d'autres fins et ne le rendez pas visible pour un serveur Web, par exemple, pour héberger des données accessibles sur le Web (pages HTML, scripts, etc.).

Certificats client

L'exemple suivant décrit comment créer votre propre autorité de certification et l'utiliser pour signer vos propres certificats à l'aide d'OpenSSL. Il a été testé à l'aide d'OpenSSL 0.9.8b, la même version que celle installée dans INSSLR.

Cette section contient les rubriques suivantes :

Création d'une autorité de certification

Création de certificats clients signés par l'autorité de certification

Création des fichiers de liste de l'autorité de certification utilisés par INSSLR

En-têtes de certificats client

Création d'une autorité de certification

Si vous disposez déjà de votre propre autorité de certification pour créer des certificats de serveur auto-signés, vous pouvez ignorer cette étape et utiliser cette autorité de certification. Lors de la création des instruments de l'autorité approuvée pour votre application, veillez à ce que l'environnement soit sécurisé.

Création d'une autorité de certification

  1. Sur un système hôte sécurisé, créez un répertoire de travail et un répertoire privé dans le répertoire de travail à l'aide des commandes suivantes :
    mkdir CA 
    mkdir CA/private 
    
  2. Créez une clé RSA protégée par mot de passe pour l'autorité de certification avec une longueur de clé de 2048 bits :
    openssl genrsa -des3 -out CA/private/CA_key.pem 2048 
    

Important : La clé privée pour l'autorité de certification constitue la base de la sécurité pour l'application. Ne la placez donc pas à une endroit inapproprié et ne la partagez pas avec des tiers.

Création de certificats clients signés par l'autorité de certification

CA AppLogic® vous permet de créer des certificats clients signés par l'autorité de certification.

Création de certificats clients signés par l'autorité de certification

  1. Générez une clé privée RSA (pour créer une clé protégée par mot de passe, utilisez le commutateur -des3) :
    openssl genrsa -out clientA_privkey.pem 2048 
    
  2. Générez une demande de signature de certificat (CSR) à partir de la clé privée :
    openssl req -new -key clientA_privkey.pem -out clientA_request.csr 
    
  3. Signez le certificat contenu dans CSR à l'aide du certificat généré pour l'autorité de certification :
    openssl x509 -req -days 365 -in clientA_request.csr -CA CA/CA_cert.pem -CAkey CA/private/CA_key.pem -CAcreateserial -out clientA.cer 
    

Mise en garde :

Création des fichiers de liste de l'autorité de certification utilisés par INSSLR

Révocation des certificats clients signés par l'autorité de certification

Pour révoquer un certificat client publié l'autorité de certification :

Dans lequel un exemple de "openssl.conf" est fourni ci-dessous et le paramètre "crl_reason" est l'un des suivants : unspecified, keyCompromise, CACompromise, affiliationChanged, superseded, cessationOfOperation, certificateHold ou removeFromCRL. Reason n'est pas sensible à la casse.

Pour regénérer la liste de révocation des certificats (CRL) :

Dans cet exemple, "crl.pem" est le fichier qui doit être fourni à INSSLR en tant que propriété "cert_revocation_list".

Exemple de fichier de configuration utilisé pour les exemples ci-dessus :

      ####################################################################
      [ 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

Création des fichiers de liste de l'autorité de certification utilisés par INSSLR

CA AppLogic® permet de créer des fichiers de liste de l'autorité de certification utilisés par INSSLR.

Création du fichier identifié par la propriété ca_list_client

  1. Accédez au fichier suivant :
    cat CA/private/CA_key.pem CA/CA_cert.pem > ca_list_client.pem 
    
  2. Placez ce fichier sur le volume clé ou sur le volume sur lequel nfs est monté via le terminal fs.
  3. Si vous le souhaitez, le certificat de serveur INSSLR (par exemple, server.pem) peut également être créé de la même manière que les certificats clients et signés par l'autorité de certification créée. N'utilisez pas de mot de passe pour ce certificat.
  4. Une fois que server.pem et ca_list_client.pem sont en place, vous pouvez tester l'authentification du certificat client comme suit :

En-têtes de certificats client

Si un client se connecte à INSSLR à l'aide de HTTPS, et s'il présente un certificat client, INSSLR ajoute les en-têtes suivants à la requête envoyée au serveur principal :

Il appartient à l'application d'utiliser ces en-têtes ou non. INSSLR transfère simplement ces informations sans effectuer aucune vérification (à l'exception de la signature et de l'exactitude du codage).

Applications Web

Pour fournir un accès http(s) à votre application, connectez le terminal http directement à l'appliance WEB.

Si vous avez besoin d'une application Web évolutive, reliez le terminal http à une appliance HALB.

Configuration des applications Web

Les exemples de configuration ne répertorient que les propriétés définies sur des valeurs autres que celles par défaut et n'incluent pas la configuration réseau (ip_addr, netmask, gateway).

Propriété

Value (Valeur)

Commentaires

l7_accept

http/https/both

Spécifie le protocole l7 utilisé. Remarque : Si https ou both est spécifié, le volume clé doit contenir le certificat SSL comme spécifié par la propriété cert_file.

Applications Web avec des services supplémentaires

Si votre application dispose d'autres services que http, vous pouvez utiliser INSSLR pour transférer le trafic http vers son terminal http et utiliser le terminal aux pour les autres services.

Propriété

Valeur

Notes

l7_accept

http/https/both

Spécifie le protocole l7 utilisé. Remarque : Si https ou both est spécifié, le volume clé doit contenir le certificat SSL comme spécifié par la propriété cert_file.

l3_accept_proto

tcp

Redirigez les ports TCP 25, 110 et 143 vers le terminal aux.

l3_accept_port

25,110,143

Redirigez les ports TCP 25, 110 et 143 vers le terminal aux.

Applications Web avec plusieurs services supplémentaires

Si vous avez plusieurs services tcp/udp et le service http, vous pouvez utiliser INSSLR pour transférer le trafic http vers son terminal http et utiliser le terminal aux pour acheminer le reste du trafic vers PS8, qui achemine le trafic désiré vers les serveurs principaux.

Utilisation d'INSSLR pour transférer le trafic HTTP vers son terminal et utiliser le terminal aux diriger le reste du trafic vers PS8

Propriété

Value (Valeur)

Commentaires

l7_accept

http/https/both

Spécifie le protocole l7 utilisé. Remarque : Si https ou both est spécifié, le volume clé doit contenir le certificat SSL comme spécifié par la propriété cert_file.

l3_accept_proto

all

Redirigez vers le terminal aux tout le trafic IP (à l'exception d'icmp) qui n'est pas transféré au terminal http.

Applications Web redondantes

Si vous devez fournir une application Web redondante, vous pouvez copier l'application et utiliser INSSLR pour fournir des fonctionnalités de basculement à l'adresse IP externe.

Application Web de sauvegarde

Si vous souhaitez uniquement une application de sauvegarde pour notifier les indisponibilités aux utilisateurs, vous pouvez utiliser INSSLR pour créer une application de sauvegarde qui requiert des ressources minimales.

Appliances en cours d'utilisation :

INSSLR sur l'application principale :

Propriété

Valeur

Notes

ip_addr

1.2.3.4

Adresse IP publique de l'application. Doit être identique pour l'application primaire et celle de sauvegarde.

netmask

255.255.255.0

Masque de réseau de l'adresse IP publique de l'application. Doit être identique pour l'application primaire et celle de sauvegarde.

gateway

1.2.3.254

Passerelle de l'adresse IP publique de l'application. Doit être identique pour l'application primaire et celle de sauvegarde.

fover_mode

asymmetric

S'exécute en mode asymétrique car l'application de sauvegarde ne doit servir que lorsque la principale est arrêtée.

fover_local_ip

192.168.100.1

Adresse IP privée à utiliser pour la communication entre les appliances INSSLR dans les deux applications. L'adresse IP locale est inférieure à l'adresse distante de sorte que cette appliance est donc la principale et le reste tant qu'elle est en cours d'exécution.

fover_remote_ip

192.168.100.2

Adresse IP distante à utiliser pour la communication entre les appliances INSSLR dans les deux applications.

fover_netmask

255.255.255.0

Masque de réseau pour fover_local_ip.

INSSLR sur l'application de sauvegarde :

Propriété

Valeur

Notes

ip_addr

1.2.3.4

Adresse IP publique de l'application. Doit être identique pour l'application primaire et celle de sauvegarde.

netmask

255.255.255.0

Masque de réseau de l'adresse IP publique de l'application. Doit être identique pour l'application primaire et celle de sauvegarde.

gateway

1.2.3.254

Passerelle de l'adresse IP publique de l'application. Doit être identique pour l'application primaire et celle de sauvegarde.

fover_mode

asymmetric

S'exécute en mode asymétrique car l'application de sauvegarde ne doit servir que lorsque la principale est arrêtée.

fover_local_ip

192.168.100.2

Adresse IP privée à utiliser pour la communication entre les appliances INSSLR dans les deux applications.

fover_remote_ip

192.168.100.1

Adresse IP distante à utiliser pour la communication entre les appliances INSSLR dans les deux applications.

fover_netmask

255.255.255.0

Masque de réseau pour fover_local_ip.

Application Web redondante (application unique)

Si vous souhaitez que votre application s'exécute en mode redondant sans créer de nouvelle application, vous pouvez simplement doubler les appliances qu'elle contient et les exécuter en mode redondant. Dans la mesure où cela implique d'utiliser (au moins) deux serveurs Web et deux appliances de base de données, ils sont tout utilisés en mode normal (moyennant leur modularité), mais chacun d'eux peut pour traiter l'application seule au cas d'échec des autres appliances. Si vous avez besoin d'une plus grande modularité, vous pouvez ajouter davantage d'appliances Web et de base de données. Dans cet exemple, la moitié des appliances (in1, sw1, web1, db1) s'exécutent dans un groupe de basculement et le reste (in2, sw2, web2, db2) dans un autre groupe de basculement pour que l'application puisse résister à une panne brutale du serveur. Cette application fournit de la redondance à très faible coût étant donné que toutes les appliances (à l'exception d'une appliance INSSLR et d'une appliance HALB qui requièrent très peu de ressources) sont dans un état actif et qu'aucune dépense n'est effectuée pour une application de sauvegarde qui s'exécute en cas d'échec de la principale.

in1

Propriété

Valeur

Notes

ip_addr

1.2.3.4

Adresse IP publique de l'application. Doit être identique pour l'application primaire et celle de sauvegarde.

netmask

255.255.255.0

Masque de réseau de l'adresse IP publique de l'application. Doit être identique pour l'application primaire et celle de sauvegarde.

gateway

1.2.3.254

Passerelle de l'adresse IP publique de l'application. Doit être identique pour l'application primaire et celle de sauvegarde.

fover_mode

symmetric

S'exécute en mode symétrique.

fover_local_ip

192.168.100.1

Adresse IP privée à utiliser pour la communication entre les appliances INSSLR dans les deux applications.

fover_remote_ip

192.168.100.2

Adresse IP distante à utiliser pour la communication entre les appliances INSSLR dans les deux applications.

fover_netmask

255.255.255.0

Masque de réseau pour fover_local_ip.

in2

Propriété

Valeur

Notes

ip_addr

1.2.3.4

Adresse IP publique de l'application. Doit être identique pour l'application primaire et celle de sauvegarde.

netmask

255.255.255.0

Masque de réseau de l'adresse IP publique de l'application. Doit être identique pour l'application primaire et celle de sauvegarde.

gateway

1.2.3.254

Passerelle de l'adresse IP publique de l'application. Doit être identique pour l'application primaire et celle de sauvegarde.

fover_mode

symmetric

S'exécute en mode symétrique.

fover_local_ip

192.168.100.2

Adresse IP privée à utiliser pour la communication entre les appliances INSSLR dans les deux applications.

fover_remote_ip

192.168.100.1

Adresse IP distante à utiliser pour la communication entre les appliances INSSLR dans les deux applications.

fover_netmask

255.255.255.0

Masque de réseau pour fover_local_ip.

db1

Nom de propriété

Valeur

Notes

auto_create

1

Crée la base de données si les volumes sont vides.

server_id

1

Master server 1 (doit être différent sur l'application distante)

rpl_mode

master_and_slave

maître et esclave

db2

Nom de propriété

Valeur

Notes

auto_create

1

Crée la base de données si les volumes sont vides.

server_id

2

Master server 1 (doit être différent sur l'application distante)

rpl_mode

master_and_slave

maître et esclave

Application Web redondante (deux applications identiques)

Vous pouvez exécuter deux applications identiques sur la même grille (mais sur des serveurs distincts pour que seule application soit affectée en cas d'échec de l'un des serveurs), ou sur des grilles différentes, pour autant que l'adresse IP que vous utilisez soit accessible par les deux grilles. L'exemple ci-dessous présente une application qui utilise une appliance de base de données qui s'exécute également en mode redondant pour qu'en cas d'échec d'une application, l'autre application prenne le relais sans perdre de données.

Appliances en cours d'utilisation :

Les requêtes client arrivent sur la passerelle in1. Cette dernière envoie les requêtes à l'équilibreur de charge web_lb, qui les transmet à un des serveurs Web web1 et web2. Les serveurs Web accèdent à la base de données db. L'appliance de base de données se connecte à l'application distante (qui est une copie identique, la seule différence étant l'ID de serveur de la base de données et la configuration réseau) pour répliquer la base de données. L'application distante se connecte à l'appliance de base de données via la passerelle repl_in qui est configurée pour n'autoriser la connexion que de la passerelle repl_out de l'application distante. Les appliances de base de données des deux applications s'exécutent dans une configuration maître-maître afin que leurs données soient toujours identiques.

Exemple de configuration de propriétés (les propriétés qui ne figurent pas dans les tableaux ci-dessous doivent être définies sur leurs valeurs par défaut) :

L'accès Web à la base de données est disponible à l'aide de la passerelle admin sur le port 8080.

in1

Propriété

Valeur

Notes

ip_addr

1.2.3.4

Adresse IP publique de l'application. Elle doit être identique pour les deux applications.

netmask

255.255.255.0

Masque de réseau pour l'adresse IP publique de l'application. Il doit être identique pour les deux applications.

gateway

1.2.3.254

Passerelle pour l'adresse IP publique de l'application. Elle doit être identique pour les deux applications.

fover_mode

symmetric

S'exécute en mode symétrique.

fover_local_ip

192.168.100.1

Adresse IP privée à utiliser pour la communication entre les appliances INSSLR dans les deux applications. Modifiez-la en 192.168.100.2 sur l'application distante.

fover_remote_ip

192.168.100.2

Adresse IP distante à utiliser pour la communication entre les appliances INSSLR dans les deux applications. Modifiez-la en 192.168.100.1 sur l'application distante.

fover_netmask

255.255.255.0

Masque de réseau pour fover_local_ip.

db

Nom de propriété

Valeur

Notes

auto_create

1

Crée la base de données si les volumes sont vides.

error_log_filename

db.error

Nom de fichier journal d'erreurs qui doit être stocké sur le volume de données des journaux.

error_log_level

error

Niveau de journalisation des erreurs

server_id

1

Serveur maître 1. Il doit être différent sur la deuxième application.

rpl_mode

master_and_slave

maître et esclave

Important : Seule une des applications doit être active. L'autre s'exécute simplement pour le basculement et est utilisée en cas d'échec de l'application active.

Notes

INSSLR prend en charge HTTP 1.0 et HTTP 1.1, mais si le client s'identifie lui-même comme MSIE, la prise en charge de HTTP 1.1 est désactivée pour cette connexion (afin d'éviter les bogues dans certaines versions de MSIE).

Si le client n'est pas MSIE, INSSLR prend en charge HTTP 1.1 pour le client (y compris la prise en charge de requêtes multiples par session TCP), même si le serveur principal ne prend en charge que HTTP 1.0.

INSSLR ne prend en charge qu'une seule adresse IP externe. Par conséquent, vous ne pouvez utiliser qu'un seul certificat SSL.

Logiciels tiers et libres utilisés au sein de l'appliance

INSSLR utilise les packages tiers libres suivants en plus des packages tiers libres utilisés par sa classe de base LUX6.

Logiciel

Version

Modifié

Licence

Notes

PyXML

0.8.4-19

Non

MIT, Python, ZPLv1.0 et BSD

N/D

heartbeat

3.0.4-1

Non

LGPLv2 et GPLv2+

N/D

heartbeat-libs

3.0.4-1

Non

LGPLv2 et GPLv2+

N/D

iptables

1.4.7-5.1.el6_2

Non

GPLv2

N/D

libgcrypt

1.4.5-9.el6_2.2

Non

GPLv2

N/D

libgpg-error

1.7-4

Non

LGPLv2.1

N/D

lighttpd

1.4.18-1

Non

BSD

N/D

nginx

0.7.62-1

Oui

BSD

N/D

sudo

1.7.4p5-13.el6_3

Non

BSD

N/D

telnet

0.17-47

Non

BSD

N/D