Argomento precedente: IN2: appliance del gateway di inputArgomento successivo: INSSLR2 - gateway di input HTTP ridondante con supporto SSL


INSSLR: gateway di input HTTP ridondante con supporto SSL

Visualizza il video

Ultima versione: 3.1.2-1

INSSLR - gateway di input HTTP ridondante con supporto SSL

In breve

Catalogo

Sistema

Categoria

Gateway

Volumi dell'utente

Num. minimo memoria

192M

OS

Linux

Vincoli

no

Panoramica funzionale

L'appliance di INSSLR è un gateway a 7 layer per le richieste HTTP sicure. Converte le richieste in richieste HTTP non codificate. Può essere usato quando è necessario supportare HTTP sicuro sul lato client, ma l'infrastruttura di elaborazione di backend non supporta o non può supportare SSL, incluso:

Se configurato, INSSLR supporta anche l'autenticazione di certificato di client. In caso di autenticazione mutua di SSL, sia il client che il server scambiano i loro certificati e i loro codici pubblici corrispondenti. Il client può contattare l'autorità di certificazione che ha emesso il certificato del server e confermare che il certificato è autentico prima di continuare. Il server può fare altrettanto.

Nella sua configurazione predefinita INSSLR opera come gateway di layer 7 per richieste HTTP sicure, fornendo anche un punto di ingresso con firewall per il traffico di rete in un'applicazione di CA AppLogic® che è possibile configurare con un indirizzo IP statico accessibile da Internet.

Quando configurato, è possibile utilizzare due appliance di INSSLR in modalità di failover per consentire un servizio ridondante. In questo caso, l'indirizzo IP di INSSLR (configurato mediante ip_addr) viene eseguito soltanto su uno dei nodi ed è trasferito automaticamente all'altra appliance di INSSLR in caso di guasto. In qualsiasi momento, soltanto un'appliance di INSSLR è attiva. Durante l'esecuzione in modalità di failover è possibile configurare INSSLR per l'esecuzione in diverse modalità:

Durante l'esecuzione in modalità ridondante, INSSLR offre un'interfaccia sul terminale CTL per:

INSSLR monitora costantemente lo stato dell'appliance di backend connessa al suo terminale di HTTP. I controlli di stato condotti da INSSLR possono includere una semplice connessione TCP o una richiesta HTTP più complessa (specificata sul limite di INSSLR). In caso di errore dell'appliance connessa, INSSLR segnala un errore al dashboard di griglia oppure, se è in modalità ridondante e configurato per farlo, esegue un failover all'appliance di backup di INSSLR.

Per supportare le applicazioni che devono apparire in un indirizzo IP singolo per più di un servizio, INSSLR può essere configurato per dirigere il traffico non HTTP direttamente a un terminale di output distinto. Per tali connessioni, l'appliance funge da firewall a 3 layer/router NAT.

Limite

Risorse

Risorsa

Minimo

Massimo

Predefinito

CPU

0.05

4

0.05

Memoria

192M

2 G

192 M

Larghezza di banda

1 Mbps

2 Gbps

200 Mbps

La memoria predefinita per la versione di CA AppLogic® 2.7 è stata modificata a 128 MB. La memoria minima rimane 64 MB.

note

Terminali

name

dir

prot.

description

ctl

in

HTTP

Riceve le notifiche che obbligano l'appliance a diventare primaria/backup. Questo terminale accetta le connessioni soltanto se fover_mode non è none. Una richiesta http valida ha l'aspetto di /?action=<active|passive|kill|status>. attivo/passivo rende l'appliance attiva o passiva. Nota: questa azione potrebbe non andare a buon fine (se l'altro nodo non è attivo e non è possibile completare il failover). In questo caso, non verrà restituito alcun errore. Spetta all'applicazione di chiamata controllare lo stato dell'appliance facendo una richiesta di /?action=status. lo stato restituisce lo stato corrente dell'appliance (attivo/passivo). viene eseguita una chiusura forzata dell'appliance che attiva l'altro nodo (se è eseguito).

HTTP

out

HTTP

Le richieste HTTPS e/o HTTP ricevute sull'indirizzo IP esterno configurato sono reindirizzate all'http di output come richieste HTTP semplici sulla porta 80 HTTP standard. Oltre alle intestazioni HTTP fornite dal client, le richieste inoltrate contengono le seguenti intestazioni informative:

X-Forwarded-For: indirizzo IP di client remoto. Questo dovrebbe essere usato dagli script CGI sul lato server al posto dell'indirizzo IP remoto.

X-Forwarded-Proto: https Questa intestazione è presente se il client si è connesso su HTTPS. Spetta all'applicazione di backend utilizzare questa intestazione per distinguere fra le connessioni HTTP e di HTTPS.

fs

out

NFS

Consente un montaggio di nfs come posizione alternativa al volume del codice locale per l'archiviazione dei codici. Se il volume del codice locale e la connessione del terminale di fs sono forniti, l'appliance non viene avviata. Questo terminale può essere lasciato non connesso.

aux

out

Qualsiasi

Output per altri protocolli, se configurato - consultare le proprietà l3_accept_*.

nfy

out

HTTP

Invia notifiche quando si verifica un failover. Consultare anche fover_nfy_prefix. Questo terminale può essere lasciato non connesso.

mon

out

CCE

Invia le statistiche sull'utilizzo delle risorse e le prestazioni.

Proprietà

Name

Tipo

Description

ip_addr

ip_owned

indirizzo IP esterno del gateway. Questa proprietà non ha un valore predefinito e deve essere impostata. Predefinito: (vuoto)

maschera di rete

Indirizzo IP

Maschera di rete. Questa proprietà non ha un valore predefinito e deve essere impostata. Predefinito: (vuoto)

gateway

Indirizzo IP

Gateway predefinito per il traffico in uscita. Predefinito: (vuoto)

dns1

Indirizzo IP

Definisce il server DNS primario. Può essere lasciato vuoto se l'host remoto è specificato dal suo indirizzo IP; deve essere indicato negli altri casi. L'impostazione predefinita è vuota

dns2

Indirizzo IP

Definisce il server DNS secondario, che verrà usato se il server DNS primario non risponde. Predefinito è vuoto (non utilizzato).

l7_accept

stringa

Questo specifica i generi di traffico HTTP accettare per l'inoltro al terminale http. Valori validi: HTTPS, HTTP, entrambi, nessuno. Se impostato su nessuno, tutto il traffico è reindirizzato soltanto alle proprietà di l3_accept_*.
Predefinito: entrambe

l3_accept_proto

stringa

Specifica quali protocolli dovrebbero essere inoltrati al terminale di AUX.

Valori validi: nessuno, tcp, udp, raw, tutti.

Se impostato su tcp o udp, la proprietà l3_accept_port può essere utilizzata per specificare la porta. Se impostata su raw. la proprietà di l3_accept_port specifica il numero di protocollo. Se impostata su tutto il traffico in entrata sull'interfaccia esterna, viene inoltrato al terminale AUX. La proprietà di l7_accept ha la precedenza su questo - se si imposta l7_accept su un valore diverso da nessuno, tutti gli http sono inoltrati al terminale di HTTP e il traffico rimanente è indirizzato ad AUX come specificato da questa proprietà.
Predefinito: nessuno

l3_accept_port

stringa

Un elenco di protocolli separati da virgola (o spazio) che accettano e reindirizzano il protocollo specificato da l3_accept_proto al terminale di aux; i protocolli nell'elenco possono essere specificati o come numeri di porta o come nomi di protocollo standard (ad es., ftp, smtp ecc. quando si specificano le porte tcp/udp o gre, tcp, ecc. usando i protocolli raw). È anche possibile specificare gli intervalli di porta (1024:10000, 0:1024). Se lasciato vuoto, sono inoltrate tutte le porte del protocollo specificato.

Nota: se si imposta l3_accept_proto su raw, è necessario specificare tale proprietà che, in questo caso, indica il numero di protocollo. È possibile specificare più di un protocollo raw ma non è consentito alcun intervallo di protocolli (ad esempio 20:30)

Predefinito: Tutto

allowed_hosts

Stringa

Elenco di host e/o subnet che possono connettersi. Separare le voci usando spazi o virgole. Esempio di formato supportato: 192.168.1.2 192.168.1.0/24 192.168.2.0/255.255.255.0. Predefinito: 0.0.0.0/0 (tutto permesso)

key_on_fs

stringa

Indica se i codici sono memorizzati su un montaggio di nfs mediante il terminale di fs (on) o sul volume del codice locale (off). Valori validi: on e off. Predefinito: OFF

cert_file

stringa

Nome di file (relativo alla radice del volume di dati) del certificato server che questa istanza di gateway dovrebbe presentare al client. Nota: se si imposta l7_accept su HTTPS o entrambi, un certificato valido dovrà essere presente sul volume di dati configurato nella posizione specificata dalla proprietà. In caso contrario, non sarà possibile avviare INSSLR. Consultare la sezione Volumi riportata di seguito.

Predefinito: server.pem.

unsafe_ssl

stringa

Abilita l'uso di crittografie ssl non sicure per la compatibilità con i browser legacy. Il valore predefinito di disabilitato disattiva le crittografie di SSLv2 oltre a altre crittografie di SSLv3 e TLSv1 che non sono considerate sicure. Si raccomanda di lasciare questa proprietà su disabilitata se non so ha la necessità di supportare le sessioni di https per i browser legacy che funzionano soltanto con SSLv2. Quando impostato su abilitato, tutte le crittografie di SSL disponibili sul sistema (incluso SSLv2) possono essere utilizzate per le sessioni di https.

Predefinito: disabilitato

keepalive

int

Specificare il tempo di keep-alive massimo tra INSSLR e il client. Valore specificato in secondi. Predefinito: 15

timeout

int

Specifica quanti secondi INSSLR attende per l'output dal server di backend. Se il server di backend non invia l'output per secondi di timeout, la connessione è chiusa.
Valore predefinito: 300

max_request_size

int

Dimensione massima (in MB) della richiesta di client. Aumenta se l'applicazione deve gestire grandi carichi client. Predefinito: 10

adv_config

stringa

Aggiungere configurazione raw da inserire in nginx conf nei blocchi di posizione per i listener http e https (qualunque sia abilitato).

Ad esempio, per aggiungere intestazioni personalizzate, impostare adv_config a proxy_set_header myport $proxy_port;. Questo aggiunge un myport: 80 alla richiesta inviava al server di backend. adv_config può essere impostato su qualsiasi dichiarazione valida per un blocco di posizione (consultare la documentazione di nginx per maggiori informazioni). È possibile aggiungere linee di configurazione multiple separate vicino;. Se impostata, questa proprietà deve avere una sintassi di nginx valida - cioè finire con ;) altrimenti l'appliance non verrà avviata.

Predefinito: (vuoto)

client_cert

stringa

Abilita l'autenticazione di certificato client.

Valori validi: on, ask e off.

Se impostato su on, l'autenticazione di certificato di client viene provocata e soltanto i client con certificati validi possono fare una richiesta valida a INSSLR. Quando impostato su ask, i client devono presentare certificati, ma la connessione è stabilita anche se non è presente un certificato valido.

Predefinito: OFF

client_depth

int

La profondità di verifica da ottenere in un certificato di client a catena. Questa proprietà non ha effetto se client_cert non è impostato. Valori validi: da 1 a 9 Valore predefinito: 1

ca_list_client

stringa

Un file contenente una sequenza di certificati dell'Autorità di certificazione in formato PEM.

I nomi dei certificati elencati vengono inviati al client connesso. Questo informa il client del certificato client che dovrebbe inviare. Lo stesso elenco è usato per verificare il certificato client. Il nome di file è relativo alla radice del volume di codici montato o alla radice del montaggio di nfs fatto mediante il terminale di fs e può contenere un percorso, ad esempio path/to/keys/ca_list_client.pem.

Predefinito: ca_list_client.pem.

cert_revocation_list

stringa

Un file contenente l'elenco di revoche di certificati (CRL) generato dall'Autorità di certificazione. Tale elenco identifica i certificati di client revocati dall'Autorità di certificazione.

Viene cercato per ogni certificato di client presentato a INSSLR e, se il certificato deve essere revocato, INSSLR emette una risposta con errore di certificato SSL per il client. Analogamente a ca_list_client, il nome del file è relativo alla radice del volume di codice montato o alla radice del montaggio di nfs, creata mediante il terminale di fs, e può contenere un percorso. Ad esempio, path/to/keys/ca_list_client.pem.

Predefinito: vuoto

Proprietà di healthcheck

name

type

description

healthcheck_method

Stringa

Il metodo usato per l'healthcheck dei server Web di backend.
off - healthcheck è disabilitato e tutti le altre healthcheck_properties sono irrilevanti.
tcp_connect - INSSLR ne connette a porta 80 del server Web. Se la connessione riesce, INSSLR suppone che il server Web è funzionale. Questo è il metodo più veloce e che richiede meno risorse.
http_head - INSSLR utilizza il metodo HEAD per richiedere il documento specificato dalla proprietà di healthcheck_url. Questo è più lento di tcp_connect, richiede più risorse sul lato INSSLR e server Web, ma è più affidabile. La risposta è abbinata a un'espressione regolare come specificata da healthcheck_regexp e se viene trovata una corrispondenza, il server è considerato attivo.
http_get - INSSLR usa il metodo GET per richiedere il documento specificato dalla proprietà healthcheck_url. Questo è il metodo più lento che richiede più risorse ma è completamente affidabile. La risposta (intestazioni e corpo) è abbinata a un'espressione regolare come specificata da healthcheck_regexp e se viene trovata una corrispondenza, il server è considerato attivo.
Predefinito: OFF

healthcheck_url

Stringa

L'URL usato per eseguire l'healthcheck dei server Web di backend nei metodi di healthcheck http_get e http_head dei server Web. Può essere specificato come URL completo (http://host.name/file/to/check/for.php) o come percorso relativo (/file/to/check/for.php). Se specificato come URL, INSSLR usa il protocollo HTTP/1.1 mentre esegue gli healthcheck usando il nome di host estratto da UR, in un host: intestazione. Questo permette l'utilizzo di host virtuali. Se specificato come percorso relativo, INSSLR usa il protocollo HTTP/1.0 e controlla il documento specificato da questa proprietà.
Predefinito: /.

healthcheck_agent

Stringa

La stringa usata come identificatore di agente per i metodi di healthcheck http_get e http_head.
Predefinito: INSSLR-health-check

healthcheck_regexp

Stringa

Una stringa di test usata con la modalità di healthcheck di http_head e http_get. I valori abbreviati o comuni (ad esempio: "OK") potrebbero causare false corrispondenze positive. Questa stringa è un'espressione regolare di Perl. Per maggiori dettagli sulle espressioni regolari di Perl, andare qui.
Predefinito: ^HTTP\/1\.\d\s+200.

healthcheck_interval

Int

Intervallo tra gli healthcheck dei server Web di backend (specificati in secondi).
Predefinito: 60 secondi.

healthcheck_timeout

Int

Il tempo massimo in secondi che un healthcheck può richiedere. Se il timeout è superato, il controllo è considerato non riuscito e viene concluso (viene avviato un nuovo controllo). Predefinito: 10

healthcheck_alert

Int

Numero di errori di healthcheck successivi prima che INSSLR avvii gli errori di dumping sul dashboard della griglia. Se impostato su 0, non sono riportati errori al dashboard (ma gli healthcheck rimangono abilitati). Non impostare a un livello troppo basso per evitare falsi positivi si avvia/arresta l'applicazione. Consultare anche fover_on_healthcheck, se INSSLR è eseguito in modalità ridondante e se si desidera passare al nodo di backup in caso di errore del server di backend. Predefinito: 3

Proprietà avanzate (usate negli scenari di failover)

fover_mode

Stringa

Modalità di failover. I valori possibili sono nessuno (nessun failover), simmetrico e asimmetrico.
Quando impostato su simmetrico, INSSLR viene eseguito in modalità di failover simmetrica (servono due appliance di INSSLR, entrambe eseguite in modalità di failover simmetrico).
Quando impostato su asimmetrico, INSSLR viene eseguito in modalità di failover simmetrica (servono due appliance di INSSLR, entrambe eseguite in modalità di failover asimmetrico).
Importante: Quando eseguito in modalità di failover, entrambe le appliance devono avere fover_mode impostato sullo stesso valore.
Predefinito: nessuno

fover_local_ip

ip_owned

Indirizzo IP locale da utilizzare in modalità di failover per comunicare con l'altra appliance di INSSLR. Questo può essere qualsiasi IP disponibile, incluso un indirizzo privato riservato (come definito da rfc1918). Questo indirizzo è usato soltanto per monitorare lo stato dell'altra appliance di INSLLR.
Importante:

Questo dovrebbe essere impostato sullo stesso IP come la proprietà di fover_remote_ip sull'altra appliance di INSSLR.

Lasciare questo campo vuoto se fover_mode è impostato su nessuno.
Predefinito: (vuoto)

fover_remote_ip

ip_owned

Indirizzo IP remoto dell'altra appliance di INSSLR utilizzata in modalità di failover.

Importante:

Questo dovrebbe essere impostato sullo stesso IP come la proprietà di fover_local_ip sull'altra appliance di INSSLR.

Lasciare questo campo vuoto se fover_mode è impostato su nessuno.
Predefinito: (vuoto)

fover_netmask

Indirizzo IP

Maschera di rete per fover_local_ip.
Importante: Lasciare questo campo vuoto se fover_mode è impostato su nessuno.
Predefinito: (vuoto)

fover_nfy_prefix

Stringa

Prefisso Url che viene richiesto quando si verifica un failover. L'URL richiesto è

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

e va attraverso il terminale di nfy.
Predefinito: ?

fover_on_healthcheck

Int

Specificare se INSSLR dovrebbe eseguire un failover al nodo di backup quando un healthcheck sul terminale di HTTP non riesce. Se impostato su un valore diverso da zero, INSSLR esegue un failover dopo molti healthcheck successivi. Non impostare su un livello troppo basso per evitare falsi positivi si avvia/arresta l'applicazione. Consultare anche healthcheck_alert se si richiedono soltanto notifiche per gli errori. Predefinito: 0 (disabilita).

Volumi

name

description

codice

Un volume di dati di sola lettura (segnaposto) che contiene, come minimo, il codice di firma del server SSL. Il file dovrebbe essere in formato di PEM. A meno che la proprietà di cert_file venga modificata per specificare un nome differente, il certificato dovrebbe trovarsi nella directory principale del volume di codici, nominata server.pem.

Messaggi di errore

I seguenti messaggi possono apparire nei file di log e nel log di sistema del controller di griglia quando l'appliance non riesce ad avviarsi:

Prestazioni

Failover di applicazione

INSSLR rileva l'altro INSSLR in circa 10 secondi. Servono altri 10 secondi per eseguire il failover all'altra applicazione. Il tempo totale da quando si produce l'errore di applicazione a quando l'altra applicazione interviene è di circa 20 secondi.

Tasso di richiesta

INSSLR dirige non meno d 3000 transazioni (coppia richiesta/risposta) al secondo, in base alla dimensione del documento e alla larghezza di banda di rete disponibile.

Velocità effettiva di dati

INSSLR dirige non meno d 7 transazioni (coppia richiesta/risposta) al secondo, in base alla dimensione del documento e alla larghezza di banda di rete disponibile.

Connessioni concorrenti

Con la sua memoria predefinita, INSSLR supporta non meno d 500 richieste in sospeso in concorrenza. (Una richiesta pendente è una connessione TCP aperta dal client, su cui è presente una o più richieste HTTP non completate). Il valore massimo di connessioni concorrenti dipendono dalla memoria libera disponibile. Ciascuna memoria aggiuntiva di 16 MB aumenta il numero di transazioni http concorrenti di 500. Ad esempio, se viene eseguita la modalità ridondante e si vogliono servire 2000 connessioni concorrenti, servono 100 M + 3*= 148 M (la memoria minima quando viene eseguita una modalità ridondante è 100 M).

Notifiche

Quando viene eseguito in modalità ridondante (fover_mode non è none), INSSLR attiva le notifiche quando diventa attivo/passivo. Questo è fatto all'avvio del nodo attivo o quando si verifica un failover (ogni nodo invia una notifica che informa se è attivo/passivo).

INSSLR inviano due notifiche:

Importante:

Healthcheck

INSSLR esegue un cronjob ogni minuto controllando quanto segue:

Se si verifica una delle occorrenze di sopra, viene inviato un messaggio di errore al dashboard della griglia. Se più di un test non riesce, viene visualizzato un messaggio di sintesi di tutti gli errori sul dashboard della griglia. Gli errori sono inviati soltanto una volta all'ora al dashboard della griglia. Nei primi 5 minuti dall'avvio dell'appliance, gli errori non sono segnalati (per evitare falsi allarmi quando l'altro nodo nella replica non è avviato).

Certificati di server

Per utilizzare SSL, occorre il certificato firmato e il codice privato con cui è stato codificato. Il tasto e il certificato dovrebbero essere in formato PEM e inclusi in un file singolo specificato dalla proprietà cert_file.

In questa sezione verranno presentati i seguenti argomenti:

Generazione dei certificati di server

Uso dei certificati di server

Uso dei certificati di server apache+mod_ssl esistenti

Generazione dei certificati di server

CA AppLogic® permette di generare certificati di server.

Per generare i certificati di server

  1. Generare un codice privato usando il seguente comando:
    openssl genrsa -out privkey.pem 2048 
    

    Per generare un codice protetto di trasmissione, usare il seguente. (Per utilizzare il codice con INSSLR è necessario un codice senza password, se si crea un codice protetto di trasmissione, occorre eliminare la password prima di usarla in INSSLR)

    openssl genrsa -des3 -out privkey.pem 2048 
    
  2. Dopodiché è necessario un certificato. Sono disponibili due opzioni: creare una richiesta di certificato e farla firmare da un'autorità di certificazione attendibile (a un costo), oppure creare un certificato auto-firmato per scopi di test (in questo caso i browser che richiedono il sito emettono degli avvisi sul fatto che il certificato non è firmato da un'autorità di certificazione attendibile).

    Per generare una richiesta di certificato, procedere come segue:

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

    Dopo aver inviato il file .csr all'autorità di certificazione attendibile, verrà inviato un certificato firmato (file .crt) che è possibile utilizzare.

  3. Per generare un certificato auto-firmato, procedere come segue:
    openssl req -new -x509 -key privkey.pem -out server.crt -days 1095
    

Uso dei certificati di server

A questo punto, è possibile mettere il certificato e il codice in un file e usarlo in INSSLR:

cat privkey.pem  server.crt > server.pem 

Se il codice è protetto da password, è possibile eliminare la password procedendo come segue:

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

Uso dei certificati di server apache+mod_ssl esistenti

Se si ha un certificato esistente che vie eseguito in Apache, è possibile usarlo anche in INSSLR. Accertarsi che il codice non è protetto da password (vedere sopra) e mettere il codice privato e il certificato in un file, in quell'ordine.

Esempio:

cat privkey.pem  server.csr > server.pem 

Se si usa un certificato a catena, occorre includere il certificato intermedio fornito dal mittente. Introdurre il codice privato, il certificato e il certificato intermedio in un file in quell'ordine.

Esempio:

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

Importante: Il codice di firma del server è la prova d'identità del tuo sito Web. È anche vulnerabile, perché non è codificato da una password (quindi l'appliance può leggerlo senza assistenza). Adottare le misure necessarie per proteggere il file di codice quando viene installato sul volume di dati. Non usare lo stesso volume di dati per altri scopi e non renderlo visibile a un server Web, ad esempio, per ospitare dati accessibili dal Web (pagine HTML, script e simili).

Certificati di client

L'esempio seguente indica come creare la propria autorità di certificazione e utilizzarla per firmare i propri certificati tramite OpenSSL. Questo è stato testato usando OpenSSL 0.9.8b, la stessa versione installata in INSSLR.

In questa sezione verranno presentati i seguenti argomenti:

Creazione di un'Autorità di certificazione

Creazione di certificati di client firmati dall'autorità di certificazione

Creare i file di elenco di CA usati da INSSLR

Intestazioni di certificato di client

Creazione di un'Autorità di certificazione

Se si dispone già di un'autorità di certificazione che serve per creare il certificato del server autofirmato, ignorare questa fase e usare quell'autorità di certificazione. Quando si creano gli strumenti dell'autorità certificata per l'applicazione in uso, è importante che l'ambiente sia sicuro.

Per creare un'autorità di certificazione

  1. Su un sistema host sicuro, creare una directory di processo e una directory privata nella directory di processo usando i seguenti comandi:
    mkdir CA 
    mkdir $CA/privato 
    
  2. Creare un tasto di RSA protetto da password per l'autorità di certificazione che ha una lunghezza di codice di 2048 bit:
    openssl genrsa -des3 -out CA/private/CA_key.pem 2048 
    

Importante: Il codice privato per l'autorità di certificazione è la base di fiducia per l'applicazione, quindi + importante non perderla o fornirla ad altre parti.

Creazione di certificati di client firmati dall'autorità di certificazione

CA AppLogic® lascia creare certificati di client che sono firmati dall'autorità di certificazione.

Per creare certificati di client firmati dall'autorità di certificazione

  1. Generare un codice privato RSA (per creare un codice protetto da password, usare lo switch -des3):
    openssl genrsa -out clientA_privkey.pem 2048 
    
  2. Generare una richiesta di sottoscrizione di certificato (CSR) dal codice privato:
    openssl req -new -key clientA_privkey.pem -out clientA_request.csr 
    
  3. Firmare il certificato contenuto nel CSR usando il certificato generato per 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 
    

Si ricorda che:

Creare i file di elenco di CA usati da INSSLR

Revoca dei certificati di client firmati da CA

Per revocare un certificato di client pubblicato da CA:

Dove un esempio "openssl.conf" è mostrato di seguito e il parametro "crl_reason" è uno fra: unspecified, keyCompromise, CACompromise, affiliationChanged, superseded, cessationOfOperation, certificateHold o removeFromCRL. L'abbinamento della ragione è sensibile alle maiuscole e minuscole.

Per ri-generare l'elenco di revoca di certificato (CRL):

In questo esempio "crl.pem" è il file che dovrebbe essere fornito a INSSLR come proprietà di "cert_revocation_list".

Un esempio di file di configurazione campione usato per gli esempi di sopra è:

      ####################################################################
      [ ca ]
      default_ca      = CA_default            # La sezione ca predefinita

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

      dir             = ./CA                  # Dove viene tenuto tutto
      certs           = $dir/certs            # Dove sono mantenuti i certificati pubblicati
      crl_dir         = $dir/crl              # Dove i crl sono pubblicati
      database        = $dir/index.txt        # file di indice del database.
      #unique_subject = no                    # Impostato su 'no' per consentire la creazione di
                                        # diversi ctificates con lo stesso oggetto.
      new_certs_dir   = $dir/newcerts         # posto predefinito per i nuovi certificati.

      certificate     = $dir/cacert.pem       # Il certificato di CA
      serial          = $dir/serial           # Il numero di serie corrente
      crlnumber       = $dir/crlnumber        # il numero crl corrente
                                        # deve essere commentato per lasciare un V1 CRL
      crl             = $dir/crl.pem          # Il CRL corrente
      private_key     = $dir/private/cakey.pem# Il codice privato
      RANDFILE        = $dir/private/.rand    # file di numero privato casuale

      default_days    = 365                   # tempo per certificare
      default_crl_days= 30                    # tempo prima del CRL successivo
      default_md      = sha1                  # quale md usare.
      preserve        = no                    # mantieni ordine DN trasmesso

      policy          = policy_anything

      [ policy_anything ]
      countryName             = facoltativo
      stateOrProvinceName     = facoltativo
      localityName            = facoltativo
      organizationName        = facoltativo
      organizationalUnitName  = facoltativo
      commonName              = fornito
      emailAddress            = fornito

Creare i file di elenco dell'autorità di certificazione usato da INSSLR

CA AppLogic® permette di creare i file di elenco dell'autorità di certificazione che sono usati da INSSLR.

Per creare il file identificato dalla proprietà ca_list_client

  1. Accedere al seguente file:
    cat CA/private/CA_key.pem CA/CA_cert.pem > ca_list_client.pem 
    
  2. Mettere questo file sul volume del codice o nel volume che è montato su nfs mediante il terminale di fs.
  3. Se desiderato, il certificato di server di INSSLR (ad esempio, server.pem) può essere creato allo stesso modo dei certificati client e firmato dall'autorità di certificazione creata. Non utilizzare una password per questo certificato.
  4. Dopo aver adottato server.pem e ca_list_client.pem, l'autenticazione del certificato client può essere testata come segue:

Intestazioni di certificato di client

Se un client si connette a INSSLR mediante HTTPS, e se presenta un certificato di client, INSSLR aggiunge le seguenti intestazioni alla richiesta che emette al server di backend:

È responsabilità dell'applicazione fare uso di queste intestazioni o non. INSSLR trasmette semplicemente le informazioni senza verificarle (se non la correttezza della firma e della codifica).

Applicazioni Web

Per consentire l'accesso di http(s) alla sua applicazione, connettere il terminale di HTTP direttamente all'appliance WEB.

Un'applicazione Web scalabile con il terminale di HTTP connesso a un'appliance HALB

Configurazione per applicazioni Web

Gli esempi di configurazione mostrano soltanto le proprietà impostate su valori non predefiniti e non mostrano la configurazione di rete (ip_addr, maschera di rete, gateway).

Proprietà

Valore

note

l7_accept

http/https/both

Specifica quale protocollo l7 viene utilizzato. Nota: se gli http o entrambi sono specificati, il volume del codice deve contenere il certificato di SSL come specificato dalla proprietà di cert_file

Applicazioni Web con servizi aggiuntivi

Se si hanno più servizi nell'applicazione, oltre a HTTP, è possibile usare INSSLR per trasmettere il traffico HTTP al rispettivo terminale e utilizzare il terminale di AUX per altri servizi.

Proprietà

Valore

note

l7_accept

http/https/both

Specifica quale protocollo l7 viene utilizzato. NOTA: se HTTPS o entrambi sono specificati, il volume del codice dovrebbe contenere il certificato di ssl come specificato dalla proprietà di cert_file

l3_accept_proto

tcp

Reindirizza le porte TCP 25.110.143 al terminale di AUX.

l3_accept_port

25,110,143

Reindirizza le porte TCP 25.110.143 al terminale di AUX.

Applicazioni Web con più di un servizio aggiuntivo

Se si hanno più servizi tcp/udp oltre all'HTTP, è possibile utilizzare INSSLR per trasmettere il traffico HTTP al rispettivo terminale di HTTP e usare AUX per alimentare il traffico restante a PS8, che alimenta il traffico desiderato ai server di backend.

Mediante INSSLR per trasmettere il traffico HTTP al relativo terminale HTTP e utilizzare AUX per alimentare il restante traffico a PS8

Proprietà

Valore

note

l7_accept

http/https/both

Specifica quale protocollo l7 viene utilizzato. Nota: se gli http o entrambi sono specificati, il volume del codice deve contenere il certificato di SSL come specificato dalla proprietà di cert_file

l3_accept_proto

tutti

Reindirizzare al terminale AUX tutto il traffico IP (eccetto icmp) che non è trasmesso al terminale di HTTP.

Applicazioni Web ridondanti

Per fornire un'applicazione Web ridondante, è possibile copiare l'applicazione e usare INSSLR per fornire le funzionalità di failover per l'indirizzo IP esterno.

Applicazione Web di backup

Se si desidera soltanto un'applicazione di backup che notifica gli utenti dei tempi di inattività, si può usare INSSLR per creare un'applicazione di backup che richiede risorse minime.

Appliance in uso:

INSSLR sull'applicazione primaria:

Proprietà

Valore

note

ip_addr

1.2.3.4

Indirizzo IP pubblico dell'applicazione, deve essere lo stesso per l'applicazione primaria e di backup.

maschera di rete

255.255.255.0

Maschera di rete per l'indirizzo IP pubblico dell'applicazione, deve essere lo stesso per l'applicazione primaria e di backup.

gateway

1.2.3.254

Gateway per l'indirizzo IP pubblico dell'applicazione, deve essere lo stesso per l'applicazione primaria e di backup.

fover_mode

asymmetric

Eseguito in modalità asimmetrica perché si desidera utilizzare l'applicazione di backup soltanto quando la primaria non funziona.

fover_local_ip

192.168.100.1

Indirizzo IP privato da usare per la comunicazione tra le appliance INSSLR nelle due applicazioni. L'indirizzo IP locale è inferiore a quello remoto e l'appliance sarà primaria fino a quando viene eseguita

fover_remote_ip

192.168.100.2

Indirizzo IP remoto da usare per la comunicazione tra le appliance INSSLR nelle due applicazioni.

fover_netmask

255.255.255.0

Maschera di rete per fover_local_ip.

INSSLR sull'applicazione di backup:

Proprietà

Valore

note

ip_addr

1.2.3.4

Indirizzo IP pubblico dell'applicazione, deve essere lo stesso per l'applicazione primaria e di backup.

maschera di rete

255.255.255.0

Maschera di rete per l'indirizzo IP pubblico dell'applicazione, deve essere lo stesso per l'applicazione primaria e di backup.

gateway

1.2.3.254

Gateway per l'indirizzo IP pubblico dell'applicazione, deve essere lo stesso per l'applicazione primaria e di backup.

fover_mode

asymmetric

Eseguito in modalità asimmetrica perché si desidera utilizzare l'applicazione di backup soltanto quando la primaria non funziona.

fover_local_ip

192.168.100.2

Indirizzo IP privato da usare per la comunicazione tra le appliance INSSLR nelle due applicazioni.

fover_remote_ip

192.168.100.1

Indirizzo IP remoto da usare per la comunicazione tra le appliance INSSLR nelle due applicazioni.

fover_netmask

255.255.255.0

Maschera di rete per fover_local_ip.

Applicazione Web ridondante (applicazione singola)

Per fare in modo che l'applicazione operi in modalità ridondante senza creare una nuova applicazione, è sufficiente raddoppiare le appliance ed eseguirle in modalità ridondante. Dato che ciò implica l'utilizzo (almeno) di due server Web e di due appliance di database, nella modalità normale sono usati tutti (e forniscono la scalabilità), ma ciascuno di loro è in grado di servire l'applicazione da solo se l'altra appliance non funzionasse. Per aumentare la scalabilità, è possibile aggiungere più appliance di Web e database. In questo esempio, metà delle appliance (in1, sw1, web1, db1) sono eseguite in un gruppo di failover e le altre (in2, sw2, web2, db2) sono eseguite in un altro gruppo di failover in modo che l'applicazione possa continuare a funzionare in caso di crash del server. Questa applicazione consente ridondanza a un costo molto basso come tutte le appliance (tranne un INSSLR e una appliance di HALB che richiedono risorse molto basse) sono in stato attivo e nessuna risorsa viene spesa per un'appliance di backup che corre solamente quando il fondamento non riesce.

in1

Proprietà

Valore

note

ip_addr

1.2.3.4

Indirizzo IP pubblico dell'applicazione, deve essere lo stesso per l'applicazione primaria e di backup.

maschera di rete

255.255.255.0

Maschera di rete per l'indirizzo IP pubblico dell'applicazione, deve essere lo stesso per l'applicazione primaria e di backup.

gateway

1.2.3.254

Gateway per l'indirizzo IP pubblico dell'applicazione, deve essere lo stesso per l'applicazione primaria e di backup.

fover_mode

simmetrico

Eseguito in modalità simmetrica.

fover_local_ip

192.168.100.1

Indirizzo IP privato da usare per la comunicazione tra le appliance INSSLR nelle due applicazioni.

fover_remote_ip

192.168.100.2

Indirizzo IP remoto da usare per la comunicazione tra le appliance INSSLR nelle due applicazioni.

fover_netmask

255.255.255.0

Maschera di rete per fover_local_ip.

in2

Proprietà

Valore

note

ip_addr

1.2.3.4

Indirizzo IP pubblico dell'applicazione, deve essere lo stesso per l'applicazione primaria e di backup.

maschera di rete

255.255.255.0

Maschera di rete per l'indirizzo IP pubblico dell'applicazione, deve essere lo stesso per l'applicazione primaria e di backup.

gateway

1.2.3.254

Gateway per l'indirizzo IP pubblico dell'applicazione, deve essere lo stesso per l'applicazione primaria e di backup.

fover_mode

simmetrico

Eseguito in modalità simmetrica.

fover_local_ip

192.168.100.2

Indirizzo IP privato da usare per la comunicazione tra le appliance INSSLR nelle due applicazioni.

fover_remote_ip

192.168.100.1

Indirizzo IP remoto da usare per la comunicazione tra le appliance INSSLR nelle due applicazioni.

fover_netmask

255.255.255.0

Maschera di rete per fover_local_ip.

db1

Nome di proprietà

Valore

note

auto_create

1

Creare il database se i volumi sono vuoti.

server_id

1

Server master1, dovrebbe essere differente sull'applicazione remota

rpl_mode

master_and_slave

master e slave

DB2

Nome di proprietà

Valore

note

auto_create

1

Creare il database se i volumi sono vuoti.

server_id

2

Server master1, dovrebbe essere differente sull'applicazione remota

rpl_mode

master_and_slave

master e slave

Applicazione Web ridondante (due applicazioni identiche)

È possibile eseguire due applicazioni identiche sulla stessa griglia (ma su server distinti in modo che il guasto di un server influisce soltanto su una delle applicazioni), o su griglie differenti, purché l'indirizzo IP usato sia accessibile dalle due griglie. L'esempio di seguito mostra un'applicazione che usa un'appliance di database che è ance eseguita in modalità ridondante in modo che, in caso di guasto di un'applicazione, l'altra può intervenire senza perdita di dati.

Appliance in uso:

La richiesta del client arriva sul gateway in1. Il gateway inoltra le richieste all'utilità di bilanciamento del carico Web, che indirizza la richiesta a uno dei server Web (web1 o web2). I server Web accedono al database di db. L'appliance di db si connette all'applicazione remota (che è una copia identica, l'unica differenza è il server_id del db e l'installazione di rete) per replicare il database. L'applicazione remota si connette all'appliance di db mediante repl_in gateway che è configurato per permettere la connessione soltanto da repl_out gateway dell'applicazione remota. Le appliance di db nelle due applicazioni sono eseguite nella configurazione master-master in modo che abbiamo sempre dati identici.

Esempio di configurazione di proprietà (le proprietà che non sono elencate dovrebbero essere lasciate ai loro valori predefiniti):

L'accesso Web a db è disponibile mediante il gateway di admin sulla porta 8080.

in1

Proprietà

Valore

note

ip_addr

1.2.3.4

Indirizzo IP pubblico dell'applicazione, deve essere lo stesso per entrambe le applicazioni.

maschera di rete

255.255.255.0

Maschera di rete per l'indirizzo IP pubblico dell'applicazione, deve essere lo stesso per entrambe le applicazioni.

gateway

1.2.3.254

Gateway per l'indirizzo IP pubblico dell'applicazione, deve essere lo stesso per entrambe le applicazioni.

fover_mode

simmetrico

Eseguito in modalità simmetrica.

fover_local_ip

192.168.100.1

Indirizzo IP privato da usare per la comunicazione tra le appliance INSSLR nelle due applicazioni. Modificarlo su 192.168.100.2 sull'applicazione remota.

fover_remote_ip

192.168.100.2

Indirizzo IP remoto da usare per la comunicazione tra le appliance INSSLR nelle due applicazioni. Modificarlo su 192.168.100.1 sull'applicazione remota.

fover_netmask

255.255.255.0

Maschera di rete per fover_local_ip.

db

Nome di proprietà

Valore

note

auto_create

1

Creare il database se i volumi sono vuoti.

error_log_filename

db.error

Nome di file log degli errori che deve essere archiviato sul volume di dati di log.

error_log_level

errore

Livello di registrazione errori

server_id

1

Server master 1, questo dovrebbe essere differente sulla seconda applicazione

rpl_mode

master_and_slave

master e slave

Importante: Soltanto una delle applicazioni è attiva in qualsiasi momento, l'altra è eseguita per il failover ed è usata quando l'applicazione attiva non riesce.

note

INSSLR supporta HTTP 1.0 e HTTP 1.1, ma se il client si identifica come MSIE, il supporto di HTTP 1.1 viene disattivato per quella connessione (per evitare i bug in alcune versioni di MSIE).

Se il client non è MSIE, INSSLR supporta HTTP 1.1 per il client (incluse le richieste multiple per capacità di sessione TCP), anche se il server di back-end supporta soltanto HTTP 1.0.

INSSLR supporta un IP esterno singolo e pertanto è possibile usare un unico certificato SSL.

Software open source e di terze parti utilizzato all'interno dell'appliance

INSSLR utilizza i seguenti pacchetti open source di terze parti oltre ai pacchetti open source di terze parti utilizzati dalla loro classe di base LUX6.

Software

Versione

Modificato

License

note

PyXML

0.8.4-19

No

MIT e Python e ZPLv1.0 e BSD

N/A

heartbeat

3.0.4-1

No

LGPLv2 e GPLv2

N/A

heartbeat-libs

3.0.4-1

No

LGPLv2 e GPLv2

N/A

iptables

1.4.7-5.1.el6_2

No

GPLv2

N/A

libgcrypt

1.4.5-9.el6_2.2

No

GPLv2

N/A

libgpg-error

1.7-4

No

LGPLv2.1

N/A

lighttpd

1.4.18-1

No

BSD

N/A

nginx

0.7.62-1

BSD

N/A

sudo

1.7.4p5-13.el6_3

No

BSD

N/A

telnet

0.17-47

No

BSD

N/A