Argomento precedente: INSSLR: gateway di input HTTP ridondante con supporto SSLArgomento successivo: OUT: appliance del gateway di output host singolo


INSSLR2 - gateway di input HTTP ridondante con supporto SSL

Ultima versione: 1.0.1-2

APP--Icona INSSLR2--ICO

In breve

Catalogo

Sistema

Categoria

Gateway

Volumi dell'utente

Num. minimo memoria

192M

OS

Linux

Vincoli

no

L'appliance di INSSLR2 è un gateway a 7 layer per le richieste HTTP sicure. Converte le richieste in richieste HTTP non codificate. È possibile utilizzare questa funzionalità per supportare una connessione HTTP protetta sul lato client.

Tuttavia, l'infrastruttura di elaborazione di backend non supporta o non può supportare SSL, incluso:

Se configurato, INSSLR2 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. Sia il client sia il server, prima di continuare, può contattare l'autorità di certificazione (CA, Certificate Authority) che ha emesso il certificato e confermare che il certificato è autentico.

Nella configurazione predefinita, INSSLR2 funge da gateway a 7 layer per le richieste di connessione HTTP protetta. Fornisce anche un punto di ingresso con firewall per il traffico di rete in un'applicazione. Può essere configurato con un indirizzo IP statico accessibile da Internet.

Quando configurato, è possibile utilizzare due appliance di INSSLR2 in modalità di failover per consentire un servizio ridondante. In questo caso, l'indirizzo IP di INSSLR2 viene eseguito soltanto su uno dei nodi e, in caso di guasto, viene trasferito automaticamente all'altra appliance di INSSLR2. Solo una delle appliance di INSSLR2 è attiva al momento. Durante l'esecuzione in modalità di failover, è possibile configurare INSSLR2 per l'esecuzione in diverse modalità:

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

INSSLR2 monitora costantemente lo stato dell'appliance di backend connessa al suo terminale di HTTP. I controlli dello stato condotti da INSSLR2 possono includere una semplice connessione TCP o una richiesta HTTP più complessa, se specificata sul limite di INSSLR2.

In caso di errore dell'appliance connessa, INSSLR2 segnala un errore al dashboard di griglia oppure, se è in modalità ridondante e configurato per farlo, esegue un failover all'appliance di backup di INSSLR2.

Per supportare le applicazioni che devono essere visualizzate in un indirizzo IP singolo per più di un servizio, configurare INSSLR2 per dirigere il traffico non HTTP direttamente su 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

192 MB

2 G

192M

Larghezza di banda

1 Mbps

2 Gbps

200 Mbps

note

Terminali

Name

Direzione

Protocollo

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 che rende l'appliance attiva o passiva è:

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

Se l'altro nodo non è attivo e non è possibile completare il failover, questa azione potrebbe non riuscire e nessun errore viene restituito. Spetta all'applicazione di chiamata controllare lo stato dell'appliance creando la richiesta seguente:

/?action=status

lo stato restituisce lo stato attivo o passivo corrente dell'appliance.

viene eseguita una chiusura forzata dell'appliance. In questo modo l'altro nodo assume il controllo, se è in esecuzione.

in

in

qualsiasi

Accetta tutto il traffico in entrata

Mediante la scheda Interfacce dell'editor di configurazione dell'applicazione, è possibile configurare l'interfaccia connessa al terminale.

fover

in

raw

Interfaccia di failover per la comunicazione reciproca tra due istanze INSSLR2.

Mediante la scheda Interfacce dell'editor di configurazione dell'applicazione, è possibile configurare l'interfaccia connessa al terminale.

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 del 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 mediante 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ò rimanere non connesso.

aux

out

qualsiasi

Output per altri protocolli, se configurato.

Per ulteriori informazioni, fare riferimento alle proprietà l3_accept_*.

nfy

out

HTTP

Invia notifiche quando si verifica un failover.

Consultare anche fover_nfy_prefix. Questo terminale può rimanere non connesso.

mon

out

cce

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

Proprietà

Name

Tipo

Description

dns1

Indirizzo IP

Definisce il server DNS primario.

Se l'host remoto è specificato dal relativo indirizzo IP, dns1 può rimanere vuoto. In caso contrario, è necessario specificare un valore per dns1.

Predefinito: (vuoto)

dns2

Indirizzo IP

Definisce il server DNS secondario, che viene utilizzato se il server DNS primario non risponde.

Predefinito: (vuoto)

l7_accept

enum

Specifica il tipo di traffico HTTP da 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

enum

Specifica quali protocolli dovrebbero essere inoltrati al terminale di AUX.

Valori validi: nessuno, tcp, udp, raw, tutti.
Se impostata su tcp o udp, la proprietà l3_accept_port può specificare la porta.

Se impostata su raw, la proprietà l3_accept_port specifica il numero di protocollo.

Se impostata su tutti, tutto il traffico in entrata sull'interfaccia esterna viene inoltrato al terminale aux. La proprietà l7_accept ha la precedenza su questa impostazione.

Nota: se si imposta l7_accept su un valore diverso da nessuno, tutti gli http vengono inoltrati al terminale http e il traffico rimanente è indirizzato su 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 aux.

I protocolli nell'elenco possono essere specificati come numeri di porta o come nomi di protocollo standard, ad esempio ftp e smtp quando si specificano le porte TCP o UDP o gre e tcp, utilizzando i protocolli raw. È anche possibile specificare gli intervalli di porta come 1024:10000 o 0:1024.

Se questo valore rimane vuoto, tutte le porte del protocollo specificato vengono inoltrate.

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. Le voci multiple vanno separate 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

Impostazione predefinita: OFF

cert_file

Stringa

Nome di file, relativo alla radice del volume di dati, del certificato server che questa istanza di gateway deve presentare al client.

Se si imposta l7_accept su https o entrambi, nella posizione specificata dalla proprietà deve essere presente un certificato valido sul volume di dati configurato. In caso contrario, non è possibile avviare INSSLR2. Per ulteriori informazioni, fare riferimento a Volumi.

Predefinito: server.pem

unsafe_ssl

Stringa

Abilita l'uso di crittografie ssl 'non sicure' per la compatibilità con i browser legacy.

Il valore predefinito disabilitato disattiva le crittografie di SSLv2 oltre ad 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, è possibile utilizzare tutte le crittografie di SSL disponibili sul sistema per le sessioni https. Ciò include SSLv2.

Predefinito: disabilitato

Questa proprietà veniva aggiunta nella versione 1.2.1.

keepalive

Numero intero

Specifica il tempo di keep-alive massimo tra INSSLR2 e il client. Il tempo è specificato in secondi.

Valore predefinito: 15

timeout

Numero intero

Specifica quanti secondi INSSLR2 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

Numero intero

Dimensione massima in MB della richiesta del client. Aumenta se l'applicazione deve gestire grandi carichi client.

Valore 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. Per ulteriori informazioni, fare riferimento alla documentazione di nginx.

È possibile aggiungere linee di configurazione multiple separate vicino;.

Nota: se impostata, questa proprietà deve avere una sintassi di nginx valida, ovvero 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 INSSLR2.

Quando impostato su ask, i client devono presentare certificati, ma la connessione è stabilita anche se non è presente un certificato valido.

Impostazione predefinita: OFF

client_depth

Numero intero

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 che contiene una sequenza di certificati di CA nel formato PEM. I nomi dei certificati di CA elencati sono inviati al client sulla connessione. 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 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: 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 INSSLR2 e, se il certificato deve essere revocato, INSSLR2 emette una risposta con errore di certificato SSL al client.

Analogamente a ca_list_client, il nome di 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à del controllo di integrità

Name

Tipo

Description

healthcheck_method

Stringa

Il metodo usato per l'healthcheck dei server Web di backend.

  • off: il controllo di integrità è disabilitato. Tutte le altre proprietà healthcheck_ sono irrilevanti.
  • tcp_connect: INSSLR2 si connette alla porta 80 del server Web. Se la connessione riesce, INSSLR2 suppone che il server Web è funzionale.

    Questo è il metodo più veloce e che richiede meno risorse.

  • http_head: INSSLR2 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 INSSLR2 e server Web, ma è più affidabile. Viene eseguita la corrispondenza della risposta con un'espressione regolare specificata da healthcheck_regexp. Se viene individuata una corrispondenza, il server è considerato attivo.

  • http_get: INSSLR2 utilizza il metodo GET per richiedere il documento specificato dalla proprietà di 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 utilizzato per eseguire il controllo di integrità dei server Web di backend nei metodi di controllo di integrità http_get e http_head dei server Web.

Può essere specificato come URL completo, ad esempio: http://host.name/file/to/check/for.php o come percorso relativo: /file/to/check/for.php.

Se specificato come URL, INSSLR2 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, INSSLR2 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: INSSLR2-health-check

healthcheck_regexp

Stringa

Una stringa di test usata con la modalità di healthcheck di http_head e http_get. È probabile che valori brevi o comuni, come OK, causino false corrispondenze positive. Questa stringa è un'espressione regolare Perl.

Predefinito: ^HTTP\/1\.\d\s+200

healthcheck_interval

Numero intero

Intervallo tra i controlli di integrità dei server Web di backend. Questo valore è specificato in secondi.

Valore predefinito: 60 secondi

healthcheck_timeout

Numero intero

Il tempo massimo in secondi che un healthcheck può richiedere.

Se il timeout viene superato, il controllo è considerato non riuscito e viene terminato. Viene avviato un nuovo controllo.

Valore predefinito: 10

healthcheck_alert

Numero intero

Numero di errori di healthcheck successivi prima che INSSLR2 avvii gli errori di dumping sul dashboard della griglia.

Se impostato su 0, non sono riportati errori al dashboard ma i controlli di integrità rimangono abilitati.

Non impostare a un livello troppo basso per evitare falsi positivi si avvia/arresta l'applicazione.

Se INSSLR2 è eseguito in modalità ridondante e se si desidera passare al nodo di backup in caso di errore del server di backend, fare riferimento a fover_on_healthcheck per ulteriori informazioni.

Impostazione predefinita: 3

Proprietà avanzate utilizzate negli scenari di failover

Name

Tipo

Description

fover_mode

Stringa

Modalità di failover.

Valori validi: nessuno (nessun failover), simmetrico e asimmetrico

Se impostato sul valore nessuno, INSSLR2 funziona semplicemente come un'appliance di INSSLR2 e non fornisce capacità di failover.

Se impostato sul valore simmetrico, INSSLR2 viene eseguito in modalità di failover simmetrico. Si richiedono due appliance di INSSLR2, eseguite ambedue in modalità di failover simmetrico.

Se impostato sul valore asimmetrico, INSSLR2 viene eseguito in modalità di failover asimmetrico. Si richiedono due appliance di INSSLR2, eseguite ambedue in modalità di failover asimmetrico.

Nota: quando vengono eseguite in modalità di failover, entrambe le appliance devono avere fover_mode impostato sullo stesso valore.

Predefinito: nessuno

fover_remote_ip

Indirizzo IP

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

Nota: lasciarlo 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_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 and goes through the nfy terminal.

Predefinito: ?

fover_on_healthcheck

Numero intero

Specificare se INSSLR2 deve eseguire un failover al nodo di backup quando un controllo di integrità sul terminale HTTP non riesce.

Se impostato su un valore diverso da zero, INSSLR2 esegue un failover dopo molti controlli di integrità successivi. Non impostarlo su un livello troppo basso per evitare falsi positivi quando si avvia o si arresta l'applicazione.

Se si desidera ricevere delle notifiche esclusivamente per gli errori, fare riferimento a healthcheck_alert.

Predefinito: 0 (disabilita).

Volumi

Name

Description

codice

Un volume di dati di sola lettura, chiamato 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

INSSLR2 rileva l'errore di INSSLR2 in circa 10 secondi e richiede altri 10 secondi per eseguire il failover sull'altra applicazione. Il tempo totale trascorso dal verificarsi dell'errore dell'applicazione all'intervento dell'altra applicazione è pari a circa 20 secondi.

Tasso di richiesta

INSSLR2 indirizza non meno di 3000 transazioni (coppia richiesta/risposta) al secondo, in base alle dimensioni del documento e alla larghezza di banda di rete disponibile.

Velocità effettiva di dati

INSSLR2 indirizza non meno di 7 MB al secondo, in base alle dimensioni del documento e alla larghezza di banda di rete disponibile

Connessioni concorrenti

Con la sua memoria predefinita, INSSLR2 supporta non meno di 500 richieste in sospeso contemporaneamente. Una richiesta in sospeso è una connessione TCP aperta dal client, su cui sono presenti una o più richieste HTTP non completate in corso.

Il valore massimo di connessioni simultanee dipende dalla memoria libera disponibile. Ciascuna memoria aggiuntiva di 16 MB aumenta il numero di transazioni http concorrenti di 500.

Ad esempio, se utilizza l'esecuzione in modalità ridondante e si vogliono servire 2000 connessioni simultanee, servono 100 M + 3*16 M= 148 M. La memoria minima quando viene si utilizza l'esecuzione in modalità ridondante è 100 M.

Notifiche

Quando viene eseguito in modalità ridondante (il valore fover_mode non è impostato su nessuno), INSSLR2 attiva le notifiche quando diventa attivo o passivo. Ciò avviene all'avvio del nodo attivo o quando si verifica un failover. Ogni nodo invia una notifica che informa se è attivo o passivo.

INSSLR2 invia due notifiche:

fover_nfy_prefix può essere utilizzato per modificare la posizione dello script remoto chiamato e/o per aggiungere altri parametri.

Esempi di valori fover_nfy_prefix:

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

Note:

Healthcheck

INSSLR2 esegue un cronjob ogni minuto controllando quanto segue:

Se si verifica una delle condizioni indicate sopra, viene inviato un messaggio di errore al dashboard della griglia. Se più di un test non riesce, sul dashboard della griglia viene visualizzato un messaggio di sintesi di tutti gli errori.

Ogni errore viene inviato al dashboard della griglia soltanto una volta all'ora. Nessun errore viene segnalato nei primi 5 minuti dopo l'avvio dell'appliance. Ciò previene eventuali falsi allarmi quando l'altro nodo nella replica non si è avviato.

Certificati di server

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

Generazione dei certificati di server

È possibile generare un certificato di server che possa essere firmato da un'autorità di certificazione (CA) attendibile dietro compenso o creare un certificato auto-firmato.

Attenersi alla seguente procedura:

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

    Inoltre, è possibile generare un codice protetto di trasmissione mediante il comando seguente. Tuttavia, se si crea un codice protetto di trasmissione, è necessario rimuovere la password prima di utilizzarlo in INSSLR2. INSSLR2 richiede un codice senza password.

    openssl genrsa -des3 -out privkey.pem 2048 
    
  2. Creare un certificato mediante una delle opzioni seguenti:

Uso dei certificati di server

Ora è possibile posizionare il certificato e il codice in un file e utilizzarlo in INSSLR2 eseguendo il comando seguente:

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

INSSLR2 consente di utilizzare un certificato esistente che si impiega in Apache. Verificare che il codice non sia protetto da password utilizzando i passaggi descritti sopra, quindi posizionare il certificato privato e il codice in un unico file.

Ad esempio:

Se si usa un certificato a catena, occorre includere il certificato intermedio fornito dal mittente. Posizionare il codice privato, il certificato e il certificato intermedio in un unico file in questo ordine.

Ad esempio:

Importante: Il codice di firma del server è la prova d'identità del proprio sito Web. È anche vulnerabile, poiché non è codificato da una password per consentire all'appliance di leggerlo senza assistenza.

Quando si installa il codice sul volume di dati, applicare delle misure di protezione del file che contiene il codice. Non utilizzare lo stesso volume di dati per altri scopi e non renderlo visibile a un server Web. Ad esempio, per ospitare dati accessibili dal Web, come pagine HTML e script.

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

Creazione di un'Autorità di certificazione

Se si dispone già di un'autorità di certificazione utilizzata per creare il certificato del server autofirmato, ignorare questo passaggio e utilizzare tale autorità di certificazione. Quando si creano gli strumenti dell'autorità certificata per l'applicazione in uso, è importante che l'ambiente sia sicuro.

Importante: il codice privato per l'autorità di certificazione è la base di trust per l'applicazione. Non perderlo o fornirlo ad altre parti.

Attenersi alla seguente procedura:

  1. Creare una directory di lavoro su un host sicuro e, all'interno di tale directory, creare:
  2. Creare un tasto di RSA protetto da password per CA con una lunghezza di codice di 2048 bit:
    openssl genrsa -des3 -out CA/private/CA_key.pem 2048 
    
  3. Dal codice privato creare il certificato di codice pubblico per l'autorità di certificazione:
    openssl req -new -key CA/private/CA_key.pem -x509 -days 365 -out CA/CA_cert.pem 
    

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

È possibile creare certificati di client firmati dall'autorità di certificazione.

Attenersi alla seguente procedura:

  1. Generare un codice privato RSA:
    openssl genrsa -out clientA_privkey.pem 2048 
    

    Per creare un codice protetto da password, utilizzare lo switch -des3

  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 
    

Note:

Creare i file di elenco di CA usati da INSSLR2

Revoca dei certificati di client firmati da CA

Per revocare un certificato di client pubblicato dall'autorità di certificazione, utilizzare il comando seguente:

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

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):

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

In questo esempio, crl.pem è il file che deve essere fornito a INSSLR2 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 INSSLR2

È possibile creare i file di elenco dell'autorità di certificazione che sono utilizzati da INSSLR2.

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.

    Se si desidera, il certificato di server di INSSLR2, 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.

  3. Dopo aver posizionato server.pem e ca_list_client.pem, testare l'autenticazione del certificato client come segue:

Intestazioni di certificato di client

Se un client si connette a INSSLR2 mediante HTTPS e presenta un certificato di client, INSSLR2 aggiunge le seguenti intestazioni alla richiesta restituita al server di backend:

È responsabilità dell'applicazione utilizzare o non utilizzare queste intestazioni. INSSLR2 trasmette semplicemente le informazioni senza verificarle, ad eccezione della correttezza della firma e della codifica.

Uso tipico

Applicazioni Web

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

APP--Applicazioni Web_Fornitura--HTTPS--ICO

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

APP--Applicazioni Web_Scalabili--HTTPS--ICO

Gli esempi di configurazione mostrano soltanto le proprietà impostate su valori non predefiniti.

Name

Tipo

Description

17_accept

http/https/both

Specifica quale protocollo l7 viene utilizzato.

Se https o entrambi sono specificati, il volume del codice dovrebbe 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 INSSLR2 per trasmettere il traffico HTTP al rispettivo terminale e utilizzare il terminale di AUX per altri servizi.


APP--App Web e Servizi aggiuntivi--ICO

Proprietà

Valore

note

17_accept

http/https/both

Specifica quale protocollo l7 viene utilizzato.

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 servizi aggiuntivi multipli

Se si dispone di più servizi tcp/udp oltre all'http, è possibile utilizzare INSSLR2 per trasmettere il traffico HTTP al rispettivo terminale HTTP e utilizzare aux per alimentare il traffico restante a PS8. PS8 alimenta quindi il traffico desiderato ai server di backend.

APP--App Web e Servizi aggiuntivi multipli--ICO

Proprietà

Valore

note

17_accept

http/https/both

Specifica quale protocollo l7 viene utilizzato.

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

tutti

Reindirizzare al terminale aux tutto il traffico IP, eccetto icmp, che non è trasmesso al terminale http.

Applicazioni Web ridondanti

Per fornire un'applicazione Web ridondante, copiare l'applicazione e utilizzare INSSLR2 per fornire le funzionalità di failover per l'indirizzo IP esterno.

Nota: se due appliance di INSSLR2 nella stessa applicazione sono configurate per l'esecuzione in modalità ridondante, viene visualizzato un messaggio di avviso quando si configura lo stesso indirizzo IP su due interfacce diverse. Ignorare l'errore.

Applicazione Web di backup

Se si desidera un'applicazione di backup che notifica gli utenti sui tempi di inattività, è possibile utilizzare INSSLR2 per creare un'applicazione di backup che richiede risorse minime.

Appliance in uso:

INSSLR2 sull'applicazione primaria

Proprietà

Valore

note

fover_mode

asymmetric

Eseguito in modalità asimmetrica per utilizzare l'applicazione di backup soltanto quando la primaria non funziona.

fover_remote_ip

192.168.100.2

Indirizzo IP remoto utilizzato per la comunicazione tra le appliance di INSSLR2 nelle due applicazioni.

INSSLR2 sull'applicazione di backup

Proprietà

Valore

note

fover_mode

asymmetric

Eseguito in modalità asimmetrica per utilizzare l'applicazione di backup soltanto quando la primaria non funziona.

fover_remote_ip

192.168.100.1

Indirizzo IP remoto utilizzato per la comunicazione tra le appliance di INSSLR2 nelle due applicazioni.

Nota: mediante la scheda Interfacce dell'editor di configurazione dell'applicazione, è possibile configurare gli attributi dell'interfaccia connessa al terminale fover. Ad esempio, le proprietà di fover_local_ip e fover_netmask.

Applicazione Web ridondante in un'applicazione singola

Per eseguire l'applicazione in modalità ridondante senza creare una nuova applicazione, è possibile raddoppiare le appliance ed eseguirle in modalità ridondante. Poiché ciò implica l'utilizzo di almeno due server Web e di due appliance di database nella modalità normale, tutti vengono utilizzati, fornendo la scalabilità. Tuttavia, ciascuno di loro è in grado di servire l'applicazione da solo se l'altra appliance non funziona.

Per aumentare la scalabilità, è possibile aggiungere ulteriori appliance Web e database. In questo esempio, metà delle appliance (in1, sw1, web1, db1) è eseguita in un gruppo di failover e le rimanenti (in2, sw2, web2, db2) sono eseguite in un altro gruppo di failover per consentire all'applicazione di continuare a funzionare dopo un crash del server. Questa applicazione fornisce la ridondanza a un costo molto basso quando tutte le appliance (tranne che per l'appliance di INSSLR2 e di HALB che richiedono risorse molto basse) sono in stato attivo e nessuna risorsa viene spesa per un'appliance di backup che viene eseguita solamente quando la primaria non funziona.

APP--Applicazione Web ridondante_applicazione singola_ICO

in1

Proprietà

Valore

note

fover_mode

simmetrico

Eseguito in modalità simmetrica.

fover_remote_ip

192.168.100.2

Indirizzo IP remoto utilizzato per la comunicazione tra le appliance di INSSLR2 nelle due applicazioni.

in2

Proprietà

Valore

note

fover_mode

simmetrico

Eseguito in modalità simmetrica.

fover_remote_ip

192.168.100.1

Indirizzo IP remoto utilizzato per la comunicazione tra le appliance di INSSLR2 nelle due applicazioni.

db1

Nome della proprietà

Valore

note

auto_create

1

Creare il database se i volumi sono vuoti.

server_id

1

Server master 1. Deve essere diverso sull'applicazione remota

rpl_mode

master_and_slave

Master e slave

DB2

Nome della 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

Applicazione Web ridondante con due applicazioni identiche

È possibile eseguire due applicazioni identiche sulla stessa griglia, ma su server separati o su griglie diverse, se l'indirizzo IP è accessibile da ambedue le griglie. In questo modo l'errore di un server influisce solo su una delle applicazioni.

Nota: se due appliance di INSSLR2 nella stessa applicazione sono configurate per l'esecuzione in modalità ridondante, viene visualizzato un messaggio di avviso quando si configura lo stesso indirizzo IP su due interfacce diverse. Ignorare l'errore.

L'esempio riportato di seguito mostra un'applicazione che utilizza un'appliance di database anch'essa eseguita in modalità ridondante. In caso di guasto di un'applicazione, l'altra può intervenire senza alcuna perdita di dati.

APP--Applicazione Web ridondante_due applicazioni identiche--ICO

Appliance in uso:

Le richieste del client arrivano sul gateway di insslr. 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 db si connette all'applicazione remota. Per replicare il database, l'applicazione remota è una copia identica in cui l'unica differenza è rappresentata dal server_id del db e dall'installazione di rete.

L'applicazione remota si connette all'appliance db mediante repl_in gateway che è configurato per consentire la connessione soltanto dal gateway repl_out dell'applicazione remota. Le appliance db nelle due applicazioni sono eseguite nella configurazione master-master per garantire che abbiano sempre dati identici.

Esempio di configurazione delle proprietà

Le proprietà che non sono elencate devono essere lasciate ai loro valori predefiniti. L'accesso Web a db è disponibile mediante il gateway di admin sulla porta 8080.

insslr

Proprietà

Valore

note

fover_mode

simmetrico

Eseguito in modalità simmetrica.

fover_remote_ip

192.168.100.2

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

db

Nome della 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: solo una delle applicazioni è attiva in qualsiasi momento, l'altra è eseguita per il failover ed è usata quando l'applicazione attiva non riesce.

Note:

Questa appliance usa software Open Source e di terze parti

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

Software

Versione

Modificato

License

note

PyXML

0.8.4-19

No

BSD

N/A

heartbeat

3.0.4-1

No

LGPLv2.1

N/A

heartbeat-libs

3.0.4-1

No

LGPLv2.1

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