Introduzione
In questo tutorial imparerai come risolvere e correggere un messaggio di avvertimento di HAProxy Setting tune.ssl.default-dh-param a 1024 per impostazione predefinita
utilizzando i metodi descritti nel tutorial Come Risolvere gli Errori Comuni di HAProxy all’inizio di questa serie. Una volta confermato che il tuo server sta generando il messaggio di avvertimento, imparerai come risolverlo impostando l’opzione di configurazione ssl-dh-param-file
di HAProxy per utilizzare un file dhparams.pem
personalizzato.
Potresti incontrare un messaggio di avvertimento di HAProxy Setting tune.ssl.default-dh-param a 1024 per impostazione predefinita
quando il tuo server HAProxy è configurato con un certificato SSL/TLS e il parametro tune.ssl.default-dh-param
non è impostato nel file di configurazione haproxy.cfg
di HAProxy. Quando il parametro non è impostato, HAProxy utilizzerà per impostazione predefinita un valore di 1024 bit per la parte di accordo sulla chiave Diffie-Hellman della fase di handshake TLS, che è considerato non sicuro.
Il tuo server HAProxy potrebbe attivare questo avviso senza che tu ne sia a conoscenza. Puoi configurare un certificato SSL/TLS e HAProxy funzionerà, ma il server potrebbe avvisarti del problema in background. Se non sei sicuro se il tuo server HAProxy sta utilizzando un parametro Diffie-Hellman a 1024 bit per impostazione predefinita, puoi utilizzare uno strumento come il Test del server SSL Labs per controllare al tuo posto. Se ricevi un report che contiene la riga Questo server supporta parametri di scambio chiave Diffie-Hellman (DH) deboli
, allora il tuo server HAProxy è interessato.
Se hai già determinato che il tuo server HAProxy sta generando un avviso riguardante l’impostazione tune.ssl.default-dh-param
e desideri saltare il processo di risoluzione dei problemi, la sezione Risoluzione di un avviso Secure tune.ssl.default-dh-param
alla fine di questo tutorial spiega come risolvere il problema.
Controllo di un avviso tune.ssl.default-dh-param
utilizzando systemctl
Seguendo i passaggi di risoluzione dei problemi del tutorial Come Risolvere Errori Comuni di HAProxy all’inizio di questa serie, il primo passo quando stai risolvendo un messaggio di avviso Impostazione di tune.ssl.default-dh-param su 1024 per impostazione predefinita
è controllare lo stato di HAProxy con systemctl
.
L’output dal comando systemctl status
potrebbe contenere tutte le informazioni diagnostiche di cui hai bisogno per risolvere l’errore. Tuttavia, è importante esaminare lo stato attuale del servizio haproxy
per assicurarsi che sia in esecuzione e che tutti i servizi che dipendono da esso siano ancora in grado di funzionare mentre risolvi l’avviso.
Utilizza questo comando systemctl
per esaminare lo stato di HAProxy su qualsiasi distribuzione Linux:
Il flag -l
garantirà che systemctl
produca in output l’intero contenuto di una riga, anziché sostituire ellissi (…
) per le righe lunghe. Il flag --no-pager
produrrà l’intero registro sullo schermo senza invocare uno strumento come less
che mostra solo una schermata di contenuto per volta.
Dato che stai risolvendo un messaggio di avviso Setting tune.ssl.default-dh-param to 1024 by default
, dovresti ricevere un output simile al seguente:
Output● haproxy.service - HAProxy Load Balancer
Loaded: loaded (/usr/lib/systemd/system/haproxy.service; disabled; vendor preset: disabled)
Active: active (running) since Tue 2020-10-06 14:31:39 UTC; 2min 31s ago
Process: 71406 ExecStartPre=/usr/sbin/haproxy -f $CONFIG -c -q (code=exited, status=0/SUCCESS)
Main PID: 71407 (haproxy)
. . .
Oct 06 14:31:39 bb9fb4c53743 systemd[1]: Starting HAProxy Load Balancer...
Oct 06 14:31:39 bb9fb4c53743 haproxy[71407]: [WARNING] 279/143139 (71407) : parsing [/etc/haproxy/haproxy.cfg:69] : 'bind *:5000' :
Oct 06 14:31:39 bb9fb4c53743 haproxy[71407]: unable to load default 1024 bits DH parameter for certificate '/etc/haproxy/fullchain.pem'.
Oct 06 14:31:39 bb9fb4c53743 haproxy[71407]: , SSL library will use an automatically generated DH parameter.
Oct 06 14:31:39 bb9fb4c53743 haproxy[71407]: [WARNING] 279/143139 (71407) : Setting tune.ssl.default-dh-param to 1024 by default, if your workload permits it you should set it to at least 2048. Please set a value >= 1024 to make this warning disappear.
Oct 06 14:31:39 bb9fb4c53743 haproxy[71407]: Proxy main started.
Oct 06 14:31:39 bb9fb4c53743 haproxy[71407]: Proxy static started.
Oct 06 14:31:39 bb9fb4c53743 haproxy[71407]: Proxy app started.
Oct 06 14:31:39 bb9fb4c53743 systemd[1]: Started HAProxy Load Balancer.
Ci sono due sezioni importanti evidenziate da notare in questo output. La prima è la linea active (running)
, che indica che HAProxy è disponibile ed in esecuzione. Se il tuo server mostra una riga come Active: failed
, allora dovrai risolvere i problemi di HAProxy utilizzando i metodi descritti nel tutorial Come Risolvere i Comuni Errori di HAProxy all’inizio di questa serie.
Il secondo insieme di linee evidenziate proviene dal diario di systemd
e contiene l’avvertimento tune.ssl.default-dh-param
. Queste linee forniscono tutte le informazioni sull’avvertimento, su come viene attivato, le azioni intraprese da HAProxy e come risolverlo.
Se l’output del tuo systemctl
include linee con l’avvertimento tune.ssl.default-dh-param
, passa alla sezione Risoluzione di un Avvertimento tune.ssl.default-dh-param
alla fine di questo tutorial per imparare come configurare HAProxy con un valore più sicuro.
Altrimenti, se l’output del tuo systemctl
non fornisce informazioni specifiche sull’avvertimento, ma sai che il tuo server sta utilizzando parametri Diffie-Hellman deboli, la prossima sezione di questo tutorial ti guiderà nell’uso dei log di journalctl
per individuare il messaggio di avvertimento.
Controllo di un Avvertimento tune.ssl.default-dh-param
Utilizzando journalctl
Se l’output del tuo systemctl
non include un avvertimento tune.ssl.default-dh-param
ma sai che il tuo server è interessato, procedi con l’uso del comando journalctl
per esaminare i log di systemd
per HAProxy.
Esegui il seguente comando su qualsiasi distribuzione Linux per ispezionare i log del diario di systemd
per il servizio haproxy
:
La parte | grep tune.ssl.default-dh-param
del comando utilizza un tubo (|
) per inviare l’output da journalctl
al comando grep
come input. Utilizzare il tubo significa che verranno mostrate solo le righe corrispondenti dal diario sullo schermo.
Se il diario include un avviso tune.ssl.default-dh-param
, riceverai un output come il seguente:
OutputOct 06 14:31:39 bb9fb4c53743 haproxy[71407]: [WARNING] 279/143139 (71407) : Setting tune.ssl.default-dh-param to 1024 by default, if your workload permits it you should set it to at least 2048. Please set a value >= 1024 to make this warning disappear.
Dato che questo output include l’avviso, puoi passare alla sezione Impostare un Valore Sicuro per tune.ssl.default-dh-param
alla fine di questo tutorial per imparare come configurare HAProxy con un valore più sicuro.
Se non ricevi alcun output dopo aver eseguito il comando journalctl
, la sezione successiva mostrerà come puoi verificare la presenza di un avviso tune.ssl.default-dh-param
utilizzando lo strumento di verifica della configurazione incorporato in HAProxy o i file di registro.
Verifica di un Avviso tune.ssl.default-dh-param
Utilizzando haproxy -c
o i File di Registro
HAProxy include un comando che può esaminare e validare i suoi file di configurazione. È possibile utilizzare il comando per controllare errori di sintassi o impostazioni non valide senza riavviare HAProxy e rischiare tempi di inattività per i vostri servizi. Inoltre, se il vostro server HAProxy è configurato per registrare l’output su un file o nei log di sistema, è possibile esaminare i file di registro per controllare un avvertimento tune.ssl.default-dh-param
.
Per controllare un avvertimento tune.ssl.default-dh-param
utilizzando HAProxy stesso, eseguire il seguente comando su qualsiasi distribuzione Linux. Se il file di configurazione di HAProxy si trova in una posizione diversa rispetto al percorso evidenziato /etc/haproxy/haproxy.cfg
, assicurarsi di sostituire il percorso corretto del proprio file:
Se il vostro server è configurato con SSL/TLS e non ha impostato tune.ssl.default-dh-param
, riceverete un output di avviso simile al seguente:
Output[WARNING] 279/150829 (71512) : parsing [/etc/haproxy/haproxy.cfg:69] : 'bind *:5000' :
unable to load default 1024 bits DH parameter for certificate '/etc/haproxy/fullchain.pem'.
, SSL library will use an automatically generated DH parameter.
[WARNING] 279/150829 (71512) : Setting tune.ssl.default-dh-param to 1024 by default, if your workload permits it you should set it to at least 2048. Please set a value >= 1024 to make this warning disappear.
Configuration file is valid
La riga evidenziata contiene l’avviso tune.ssl.default-dh-param
.
Per controllare il messaggio di avviso utilizzando i log di HAProxy, è possibile cercare righe che corrispondano alla stringa tune.ssl.default-dh-param
utilizzando il comando grep
. Eseguire il seguente comando per controllare gli avvisi:
Notare che se avete configurato HAProxy con una posizione diversa per i log, assicuratevi di sostituire il vostro percorso al posto del file evidenziato /var/log/haproxy.log
.
Se il vostro server sta generando l’avviso, riceverete un output simile al seguente:
OutputOct 6 14:31:39 bb9fb4c53743 haproxy[71407]: [WARNING] 279/143139 (71407) : Setting tune.ssl.default-dh-param to 1024 by default, if your workload permits it you should set it to at least 2048. Please set a value >= 1024 to make this warning disappear.
Nota: I tuoi file di registro potrebbero non includere il messaggio di avviso, ma il comando haproxy -c
genererà comunque il avviso. Se questo è il caso, è probabile che il servizio HAproxy sia in esecuzione da tempo sufficiente per consentire la rotazione del file di registro, quindi non include il avviso.
Controllare il messaggio utilizzando il metodo haproxy -c
è il modo più affidabile per determinare se il tuo server è interessato, quindi puoi tranquillamente ignorare le voci di file di registro mancanti.
Ora che hai determinato se il tuo server sta generando un avviso tune.ssl.default-dh-param
, puoi procedere al passaggio successivo di questo tutorial, che spiega due metodi che puoi utilizzare per risolvere il problema.
Risoluzione di un Avviso tune.ssl.default-dh-param
Puoi risolvere un avviso tune.ssl.default-dh-param
in HAProxy con diverse impostazioni diverse. Un’opzione è impostare il valore tune.ssl.default-dh-param
su qualcosa di più grande di 1024 esplicitamente in /etc/haproxy/haproxy.cfg
come indicato nel messaggio di avviso. Tuttavia, la documentazione di HAProxy consiglia di specificare parametri Diffie-Hellman personalizzati poiché questo approccio è più sicuro, quindi useremo questo metodo invece.
Prima genererai un file dhparams.pem
utilizzando l’utilità openssl
. Una volta creato il file, lo aggiungerai alla sezione di configurazione globale di HAProxy in modo che eventuali blocchi frontend
ereditino l’impostazione.
Per generare i parametri DH personalizzati, esegui il seguente comando:
Riceverai un output simile al seguente:
OutputGenerating DH parameters, 2048 bit long safe prime, generator 2
This is going to take a long time
..............
Una volta completato il comando, configura HAProxy per utilizzare il file di parametri DH personalizzati. Apri /etc/haproxy/haproxy.cfg
in vi
o nel tuo editor preferito.
sudo vi /etc/haproxy/haproxy.cfg
Trova la sezione nel file simile alla seguente:
Output. . .
# turn on stats unix socket
stats socket /var/lib/haproxy/stats
# utilize system-wide crypto-policies
#ssl-default-bind-ciphers PROFILE=SYSTEM
ssl-default-server-ciphers PROFILE=SYSTEM
Aggiungi ora una riga dopo la linea ssl-default-server-ciphers PROFILE=SYSTEM
come segue:
ssl-dh-param-file /etc/haproxy/dhparams.pem
L’intera sezione dovrebbe assomigliare alla seguente, inclusa la nuova riga evidenziata ssl-dh-param-file
che hai aggiunto:
/etc/haproxy/haproxy.cfg. . .
# turn on stats unix socket
stats socket /var/lib/haproxy/stats
# utilize system-wide crypto-policies
#ssl-default-bind-ciphers PROFILE=SYSTEM
ssl-default-server-ciphers PROFILE=SYSTEM
ssl-dh-param-file /etc/haproxy/dhparams.pem
Quando hai finito di modificare il file, salvalo e chiudilo premendo ESC
, digitando :wq
e premendo ENTER
.
Testa la configurazione utilizzando il comando haproxy -c
per assicurarti di aver aggiunto l’impostazione corretta e che HAProxy possa accedere al file dhparams.pem
personalizzato:
Dovresti ricevere un output che indica che la configurazione è valida come segue:
OutputConfiguration file is valid
Se la tua configurazione è valida, riavvia HAProxy in modo che utilizzi il nuovo file dei parametri Diffie-Hellman:
Ora hai configurato HAProxy con un set di parametri Diffie-Hellman personalizzati a 2048 bit che tutti i frontend saranno in grado di utilizzare. Hai anche soppresso gli avvisi tune.ssl.default-dh-param
.
Conclusione
In questo tutorial, hai imparato come risolvere un messaggio di avviso HAProxy Impostazione tune.ssl.default-dh-param su 1024 per impostazione predefinita
. Hai esplorato quattro metodi diversi per esaminare la configurazione di HAProxy per trovare il messaggio. Inizialmente hai utilizzato systemctl
e journalctl
per esaminare lo stato del server HAProxy e cercare di trovare il messaggio nei log di systemd
. Successivamente hai esaminato il file di configurazione di HAProxy utilizzando il controllo della configurazione integrato haproxy -c
. Infine hai controllato le voci di log utilizzando il comando grep
sul file di log di HAProxy.
Dopo aver confermato che il tuo server stava generando un messaggio di avviso Impostazione tune.ssl.default-dh-param su 1024 per impostazione predefinita
, hai generato un file di parametri Diffie-Hellman personalizzato e configurato HAProxy per utilizzarlo impostando la direttiva di configurazione ssl-dh-param-file
.
Ora che hai questa configurazione in atto, il tuo server HAProxy utilizzerà per impostazione predefinita i parametri Diffie-Hellman più sicuri, e il messaggio di avviso tune.ssl.default-dh-param
non comparirà più nei tuoi log.