Rubrique précédente: INSSLR : passerelle d'entrée HTTP redondante avec prise en charge SSLRubrique suivante: OUT : Appliance de passerelle de sortie de l'hôte unique


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

Dernière version : 1.0.1-2

Icône de la passerelle INSSLR2

Aperçu rapide

Catalogue

System (Système)

Catégorie

Passerelles

Volumes d'utilisateur

Oui

Min. mémoire

192 Mo

SE

Linux

Contraintes

non

L'appliance INSSLR2 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 utiliser cette fonctionnalité pour prendre en charge les connexions HTTP sécurisées sur le client.

Toutefois, l'infrastructure de traitement d'arrière-plan ne peut pas prendre en charge SSL :

Si elle est configurée pour, INSSLR2 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 et/ou le serveur peuvent contacter l'autorité de certification (CA) qui a publié le certificat et confirmer son authenticité avant de continuer.

Dans sa configuration par défaut, INSSLR2 est utilisée comme une passerelle de couche 7 pour des demandes HTTP sécurisées. Elle fournit également un point d'entrée derrière un pare-feu pour le trafic réseau dans une application. Vous pouvez la configurer avec une adresse IP statique accessible via Internet.

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

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

INSSLR2 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 INSSLR2 peuvent inclure un simple test de connexion TCP ou une requête HTTP plus complexe spécifiée dans le périmètre d'INSSLR2.

En cas d'échec de l'appliance connectée, INSSLR2 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 INSSLR2 de sauvegarde.

Pour prendre en charge des applications qui doivent s'afficher à une adresse IP unique pour plusieurs services, configurez INSSLR2 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

Notes

Terminaux

Nom

Direction

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 demande HTTP valide qui rend l'appliance active ou passive est :

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

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 la requête suivante :

/?action=status

La valeur status renvoie l'état actif ou passif actuel de l'appliance.

La valeur kill effectue un arrêt forcé de l'appliance. Si l'autre noeud est en cours d'exécution, il prend le relais.

in

in

indifférent

Accepte tout trafic entrant.

Vous pouvez configurer l'interface connectée au terminal à l'aide de l'onglet Interfaces de l'éditeur de Configuration de l'application.

fover

in

raw

Interface de basculement pour les communications internes entre deux instances INSSLR2.

Vous pouvez configurer l'interface connectée au terminal à l'aide de l'onglet Interfaces de l'éditeur de Configuration de l'application.

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é via 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 non connecté.

aux

sortie

indifférent

Sortie pour les autres protocoles, si configurée.

Pour obtenir des informations supplémentaires, consultez les propriétés l3_accept_*.

nfy

sortie

http

Envoie des notifications en cas de basculement.

Voir également fover_nfy_prefix. Ce terminal peut rester non connecté.

MON

sortie

cce

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

Propriétés

Nom

Type

Description

dns1

Adr. IP

Définit le serveur DNS principal.

Si l'hôte distant est spécifié par son adresse IP, dns1 peut rester vide. Dans le cas contraire, vous devez spécifier une valeur pour dns1.

Valeur par défaut : vide.

dns2

Adr. IP

Définit le serveur DNS secondaire à utiliser si le serveur DNS principal ne répond pas.

Valeur par défaut : vide.

l7_accept

enum

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

enum

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 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, tout le trafic entrant sur l'interface externe est transféré vers le terminal aux. La propriété l7_accept à priorité sur celle-ci.

Remarque : Si vous définissez l7_accept sur une autre valeur que none, tout le trafic http(s) est envoyé au terminal http et le trafic restant au terminal aux, comme spécifié par la 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 router le trafic selon le protocole spécifié par l3_accept_proto vers le terminal aux.

Les protocoles de cette liste peuvent être spécifiés sous la forme de numéros de port ou de noms de protocole standard, comme FTP et SMTP lorsque vous spécifiez des ports TCP ou UDP, ou GRE et TCP lorsque vous utilisez des protocoles bruts. Vous pouvez également spécifier des plages de ports 1024:10000 ou 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.

Si vous définissez l7_accept sur https ou both, un certificat valide doit être présent à l'emplacement spécifié sur le volume de données par cette propriété. Dans le cas contraire, un échec du démarrage de INSSLR2 se produit. Pour obtenir des informations supplémentaires, consultez la rubrique Volumes.

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 Désactivé désactive les chiffrements SSLv2 ainsi que certains autres chiffrements SSLv3 et TLSv1 qui ne sont pas considérés comme 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 peuvent être utilisés pendant les sessions HTTPS. Cela inclut le chiffrement SSLv2.

Valeur par défaut : Désactivé

Cette propriété a été ajoutée dans la version 1.2.1.

keepalive

Nombre entier

Spécifie la durée maximum de maintien de la connexion entre INSSLR2 et le client. Le paramètre est spécifié en secondes.

Valeur par défaut : 15

timeout

Nombre entier

Spécifie le nombre de secondes pendant lequel INSSLR2 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

Nombre entier

Taille maximum en Mo d'une demande 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 nginx.

Vous pouvez ajouter plusieurs lignes de configuration séparées par un point-virgule (;).

Remarque : Si elle est définie, cette propriété doit avoir une syntaxe nginx valide (finir 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 INSSLR2.

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

Nombre 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 d'autorité de certification 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é à INSSLR2 et si un fichier révoqué est identifié, INSSLR2 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, tel que :

path/to/keys/ca_list_client.pem. 

Valeur par défaut : vide

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

Nom

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_ sont inappropriées.
  • tcp_connect : INSSLR2 se connecte au port 80 du serveur Web. Si la connexion est correctement établie, INSSLR2 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 : INSSLR2 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 INSSLR2 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. Si une correspondance est trouvée, le serveur est considéré comme opérationnel.

  • http_get : INSSLR2 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 d'arrière-plan 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, INSSLR2 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, INSSLR2 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 : INSSLR2-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. Les valeurs courtes ou communes, comme OK, généreront probablement des faux positifs. Cette chaîne est une expression régulière Perl.

Valeur par défaut : ^HTTP\/1\.\d\s+200

healthcheck_interval

Nombre entier

Intervalle entre les contrôles d'intégrité des serveurs Web d'arrière-plan. La valeur est spécifiée en secondes.

Valeur par défaut : 60 secondes

healthcheck_timeout

Nombre 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

Nombre entier

Nombre d'échecs successifs du contrôle de l'intégrité avant qu'INSSLR2 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.

Si vous exécutez INSSLR2 en mode redondant et que vous souhaitez basculer vers le noeud de sauvegarde en cas d'échec du serveur d'arrière-plan, reportez-vous à fover_on_healthcheck pour plus d'informations.

Par défaut : 3

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

Nom

Type

Description

fover_mode

Chaîne

Mode de basculement.

Valeurs valides : none (aucun basculement), symmetric et asymmetric

Lorsqu'il est défini sur none, INSSLR2 fonctionne juste comme une appliance INSSLR2 et ne fournit aucune fonctionnalité de basculement.

Lorsqu'il est défini sur symmetric, INSSLR2 est exécuté en mode de basculement symétrique. Vous devez disposer de deux appliances INSSLR2, exécutées en mode de basculement symétrique.

Lorsqu'il est défini sur asymmetric, INSSLR2 est exécuté en mode de basculement asymétrique. Vous devez disposer de deux appliances INSSLR2, exécutées en mode de basculement asymétrique.

Remarque : 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_remote_ip

Adr. IP

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

Remarque : 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_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 et passe par le terminal nfy.

Valeur par défaut : ?

fover_on_healthcheck

Nombre entier

Spécifie si INSSLR2 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, INSSLR2 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.

Si vous avez uniquement besoin des notifications en cas d'échecs, reportez-vous à healthcheck_alert.

Valeur par défaut : 0 (désactivé).

Volumes

Nom

Description

clé

Volume de données en lecture seule nommé 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

INSSLR2 détecte l'échec de INSSLR2 dans les 10 secondes et requiert 10 autres secondes supplémentaires pour basculer vers l'autre application. 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

INSSLR2 n'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

INSSLR2 n'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, INSSLR2 prend en charge pas moins de 500 demandes en attente simultanément Une demande en attente étant une connexion TCP ouverte à partir du client, sur laquelle une ou plusieurs demandes 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 2 000 connexions simultanément, vous avez besoin de 100 Mo + 3*16= 148 Mo. La mémoire minimum requise pour l'exécution en mode redondant est de 100 Mo.

Notifications

Lorsqu'elle est exécutée en mode redondant (fover_mode est défini), INSSLR2 déclenche des notifications lorsqu'elle devient active ou passive. Cela se produit lors du démarrage du noeud actif ou lors d'un basculement. Chaque noeud envoie une notification informant de son statut actif ou passif.

INSSLR2 envoie deux notifications :

Vous pouvez utiliser fover_nfy_prefix pour modifier l'emplacement du script distant invoqué et/ou ajouter des paramètres supplémentaires.

Exemples de valeurs pour fover_nfy_prefix :

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

Remarques :

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

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

Si l'une des vérifications est vraie, un message d'erreur est envoyé au tableau de bord de grille. Si plusieurs tests échouent, un message reprenant toutes les erreurs est publié dans le tableau de bord de la grille.

Chaque erreur ne sera signalée dans le tableau de bord de la grille qu'une fois par heure. Aucune erreur n'est signalée durant les 5 premières minutes après le démarrage de l'appliance. Cela permet de n'obtenir aucune fausse alarme tant que 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é chiffré. La clé et le certificat doivent être au format PEM et utiliser un fichier unique spécifié par la propriété cert_file.

Génération de certificats de serveur

Vous pouvez générer un certificat de serveur qui peut être signé par une autorité de certification approuvée en payant des frais ou créer un certificat autosigné.

Procédez comme suit :

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

    Vous pouvez également générer une clé protégée par mot de passe à l'aide de la commande suivante. Toutefois, si vous créez une telle clé, vous devez supprimer le mot de passe avant de l'utiliser dans INSSLR2. INSSLR2 requiert une clé sans mot de passe.

    openssl genrsa -des3 -out privkey.pem 2048 
    
  2. Créez un certificat à l'aide de l'une des options suivantes :

Utilisation des certificats de serveur

Vous pouvez placer le certificat et la clé dans un fichier et l'utiliser dans INSSLR2 en exécutant la commande suivante :

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

INSSLR2 vous permet d'utiliser le certificat existant utilisé dans Apache. Vérifiez que la clé n'est pas protégée par mot de passe en suivant les étapes mentionnées ci-avant, puis placez le certificat privé et la clé dans un fichier unique.

Par exemple :

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 unique dans cet ordre.

Par exemple :

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 peut le lire sans votre assistance.

Lorsque vous l'installez sur le volume de données, prenez des mesures pour protéger le fichier de clé. 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 INSSLR2.

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

Important : La clé privée pour l'autorité de certification est la base de l'approbation pour l'application. Ne la perdez pas et ne la fournissez à aucun autre parti.

Procédez comme suit :

  1. Créez un répertoire de travail sur un hôte sécurisé et dans ce répertoire, exécutez les commandes :
  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 
    
  3. Créez le certificat de clé publique pour l'autorité de certification à partir de la clé privée :
    openssl req -new -key CA/private/CA_key.pem -x509 -days 365 -out CA/CA_cert.pem 
    

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

Vous pouvez créer des certificats clients signés par une autorité de certification.

Procédez comme suit :

  1. Générez une clé privée RSA :
    openssl genrsa -out clientA_privkey.pem 2048 
    

    Pour créer une clé protégée par mot de passe, utilisez le commutateur -des3.

  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 
    

Remarques :

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

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

Pour révoquer un certificat client publié par l'autorité de certification, exécutez la commande :

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

Dans laquelle un exemple de fichier openssl.conf est affiché 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) :

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

Dans cet exemple, crl.pem est le fichier qui doit être fourni à INSSLR2 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 INSSLR2

Vous pouvez créer des fichiers de liste de l'autorité de certification utilisés par INSSLR2.

Pour créer un 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.

    Si vous le souhaitez, le certificat de serveur INSSLR2, tel que server.pem, peut également être créé de la même manière que les certificats de client et signés par l'autorité de certification créée. N'utilisez pas de mot de passe pour ce certificat.

  3. 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 à INSSLR2 à l'aide de HTTPS et s'il présente un certificat client, INSSLR2 ajoute les en-têtes suivants à la requête renvoyée au serveur d'arrière-plan :

Il est de la responsabilité de l'application d'utiliser ou pas ces en-têtes. INSSLR2 transfère simplement ces informations sans effectuer aucune vérification, à l'exception de la signature et de l'exactitude du chiffrement.

Utilisation standard

Applications Web

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

Applications Web - Accès HTTPS

Pour une application Web évolutive, connectez le terminal HTTP à une appliance HALB par l'intermédiaire d'un crochet.

Applications Web - Modularité

Les exemples de configuration ne reprennent que les propriétés définies sur des valeurs autres que celles par défaut.

Nom

Type

Description

17_accept

http/https/both

Spécifie le protocole l7 utilisé.

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 INSSLR2 pour transférer le trafic http vers son terminal http et utiliser le terminal aux pour les autres services.


Applications Web avec services supplémentaires

Propriété

Valeur

Notes

17_accept

http/https/both

Spécifie le protocole l7 utilisé.

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 des services supplémentaires multiples

Si vous avez plusieurs services TCP/UDP et HTTP, vous pouvez utiliser INSSLR2 pour transférer le trafic HTTP vers son terminal HTTP et utiliser le terminal aux pour transférer le trafic restant à PS8. PS8 transfère alors le trafic restant aux serveurs d'arrière-plan.

Applications Web avec plusieurs services supplémentaires

Propriété

Valeur

Notes

17_accept

http/https/both

Spécifie le protocole l7 utilisé.

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

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

Applications Web redondantes

Pour fournir une application Web redondante, copiez l'application et utiliser INSSLR2 pour fournir des fonctionnalités de basculement à l'adresse IP externe.

Remarque : Si deux appliances INSSLR2 dans la même application sont configurées pour s'exécuter en mode redondant, un message d'avertissement s'affiche lorsque vous configurez la même adresse IP sur deux interfaces différentes. Ignorez cette erreur.

Application Web de sauvegarde

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

Appliances en cours d'utilisation :

INSSLR2 sur l'application principale :

Propriété

Valeur

Notes

fover_mode

asymmetric

S'exécute en mode asymétrique car l'application de sauvegarde ne doit servir que lorsque la principale est hors service.

fover_remote_ip

192.168.100.2

Adresse IP distante utilisée pour les communications entre les appliances INSSLR2 dans les deux applications.

INSSLR2 sur l'application de sauvegarde :

Propriété

Valeur

Notes

fover_mode

asymmetric

S'exécute en mode asymétrique car l'application de sauvegarde ne doit servir que lorsque la principale est hors service.

fover_remote_ip

192.168.100.1

Adresse IP distante utilisée pour les communications entre les appliances INSSLR2 dans les deux applications.

Remarque : Vous pouvez configurer les attributs de l'interface connectée au terminal fover à l'aide de l'onglet Interfaces dans l'éditeur Configuration de l'application. Par exemple, les propriétés fover_local_ip et fover_netmask.

Application Web redondante dans une application unique

Pour exécuter votre application en mode redondant sans créer une application, vous pouvez doubler les appliances et les exécuter en mode redondant. Dans la mesure où cela implique d'utiliser deux serveurs Web et deux appliances de base de données au minimum, ils sont tous utilisés en mode normal et fournissent ainsi la modularité attendue. Toutefois, chacun d'entre eux peut servir l'application seule en cas d'échec de l'autre appliance.

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 à un arrêt brutal du serveur. Cette application fournit de la redondance à très faible coût étant donné que toutes les appliances (à l'exception d'une appliance INSSLR2 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.

Application Web redondante - Application unique

in1

Propriété

Valeur

Notes

fover_mode

symmetric

S'exécute en mode symétrique.

fover_remote_ip

192.168.100.2

Adresse IP distante utilisée pour les communications entre les appliances INSSLR2 dans les deux applications.

in2

Propriété

Valeur

Notes

fover_mode

symmetric

S'exécute en mode symétrique.

fover_remote_ip

192.168.100.1

Adresse IP distante utilisée pour les communications entre les appliances INSSLR2 dans les deux applications.

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

Serveur maître 1. Il 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

1

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

rpl_mode

master_and_slave

Maître et esclave

Application Web redondante comprenant deux applications identiques.

Vous pouvez exécuter deux applications identiques sur la même grille, mais sur des serveurs distincts ou sur des grilles différentes, si l'adresse IP est accessible à partir des deux grilles. En cas d'échec d'un serveur, cela permet de n'affecter qu'une application.

Remarque : Si deux appliances INSSLR2 dans la même application sont configurées pour s'exécuter en mode redondant, un message d'avertissement s'affiche lorsque vous configurez la même adresse IP sur deux interfaces différentes. Ignorez cette erreur.

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. En cas d'échec d'une application, l'autre application prend le relais sans perdre de données.

Application Web redondante - Applications identiques

Appliances en cours d'utilisation :

Les demandes client arrivent sur la passerelle insslr. Cette dernière envoie les demandes à l'équilibreur de charge web_lb, qui les transmet à un des serveurs Web, web1 ou web2.

Les serveurs Web accèdent à la base de données db. L'appliance de base de données se connecte à l'application distante. Pour permettre la réplication des données, l'application distante est une copie identique, la seule différence étant l'ID de serveur de la base de données et la configuration réseau.

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é

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.

insslr

Propriété

Valeur

Notes

fover_mode

symmetric

S'exécute en mode symétrique.

fover_remote_ip

192.168.100.2

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

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 seulement pour le basculement et est utilisée en cas d'échec de l'application active.

Remarques :

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

INSSLR2 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

BSD

N/D

heartbeat

3.0.4-1

Non

LGPLv2.1

N/D

heartbeat-libs

3.0.4-1

Non

LGPLv2.1

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