Configurazione della connessione
La connessione verso il database Redis viene configurata tramite le seguenti proprietà del file <directory-lavoro>/govway_local.properties:
# Integrazione con database Redis
org.openspcoop2.pdd.redis.enabled=true
# Modalita' di connessione: 'cluster' (Redis Cluster) o 'single' (Redis single-endpoint / Redis Enterprise con HA interna)
org.openspcoop2.pdd.controlloTraffico.gestorePolicy.inMemory.REDIS.connectionMode=cluster
# Connection Url (possono essere fornite più url separate da virgola)
# usare rediss:// per TLS (con due s)
# per autenticazione: redis://username:password@host:port
org.openspcoop2.pdd.controlloTraffico.gestorePolicy.inMemory.REDIS.connectionUrl=redis://<HOST>:<PORT>
La proprietà “org.openspcoop2.pdd.redis.enabled” abilita l’integrazione con Redis: se abilitata, all’avvio GovWay inizializza il client verso il database Redis indicato. La stessa connessione viene utilizzata sia per il rate limiting distribuito sia per la validazione anti-replay distribuita delle DPoP proof (Validazione DPoP).
Nota
Per default, se all’avvio il database Redis non è raggiungibile, GovWay registra l’errore nei log e completa comunque l’inizializzazione. Per far fallire invece l’avvio di GovWay è possibile impostare la seguente proprietà:
org.openspcoop2.pdd.controlloTraffico.gestorePolicy.inMemory.REDIS.startupGovWay.throwExceptionIfRedisNotReady=true
Modalità di connessione
La proprietà “connectionMode” indica la topologia del database Redis:
cluster (default): Redis Cluster. Nella proprietà “connectionUrl” possono essere indicati uno o più nodi del cluster, separati da virgola. A partire da tali nodi il client scopre automaticamente la topologia completa del cluster;
single: Redis raggiungibile tramite un unico endpoint, ad esempio un’istanza standalone o Redis Enterprise, dove l’alta affidabilità è gestita internamente dal servizio. In questa modalità viene utilizzata solamente la prima url indicata nella proprietà “connectionUrl”.
Autenticazione
Se il database Redis richiede l’autenticazione, le credenziali vanno indicate direttamente nella url di connessione:
org.openspcoop2.pdd.controlloTraffico.gestorePolicy.inMemory.REDIS.connectionUrl=redis://<USERNAME>:<PASSWORD>@<HOST>:<PORT>
Nei log emessi da GovWay durante l’inizializzazione della connessione la password viene mascherata.
Connessione TLS
Per instaurare una connessione TLS si deve utilizzare lo schema “rediss://” (con due “s”) nella url di connessione. Per default il certificato del server viene validato rispetto alle CA presenti nel truststore della JVM e viene verificato che l’hostname corrisponda al CN o a un SAN del certificato. Tale comportamento può essere personalizzato tramite le seguenti proprietà:
# Truststore per la validazione del certificato server
org.openspcoop2.pdd.controlloTraffico.gestorePolicy.inMemory.REDIS.ssl.truststore.path=<PATH>
# Tipo del truststore (default: jks)
org.openspcoop2.pdd.controlloTraffico.gestorePolicy.inMemory.REDIS.ssl.truststore.type=jks
org.openspcoop2.pdd.controlloTraffico.gestorePolicy.inMemory.REDIS.ssl.truststore.password=<PASSWORD>
# Verifica che l'hostname del server corrisponda al CN/SAN del certificato (default: true)
org.openspcoop2.pdd.controlloTraffico.gestorePolicy.inMemory.REDIS.ssl.hostnameVerifier=true
# Accetta qualsiasi certificato server (disabilita anche hostnameVerifier). Solo per test, non usare in produzione.
org.openspcoop2.pdd.controlloTraffico.gestorePolicy.inMemory.REDIS.ssl.trustAll=false
Le proprietà determinano il tipo di verifica effettuata sul server:
Configurazione |
Verifica effettuata |
|---|---|
Nessuna proprietà “ssl” indicata |
Certificato validato con il truststore della JVM e verifica dell’hostname |
truststore.path indicato |
Certificato validato con il truststore indicato e verifica dell’hostname |
hostnameVerifier=false |
Solamente validazione del certificato, senza verifica dell’hostname |
trustAll=true |
Nessuna verifica: qualsiasi certificato viene accettato, indipendentemente dalle altre proprietà |
Se il file indicato in “truststore.path” non esiste o non è leggibile, l’avvio di GovWay fallisce.
Avvertimento
L’opzione “trustAll” disabilita qualsiasi verifica del server.