[ MQ 9.4.4 Oct 2025][Linux]

Replica sicura per DR RDQM

È possibile specificare che il collegamento di replica nella configurazione DR RDQM sia protetto con TLS.

Quando si crea un gestore di code di disaster recovery (DR) in una configurazione RDQM, si può specificare che il collegamento usato per replicare i dati tra le istanze primarie e secondarie del gestore di code sia protetto con TLS.

Per configurare la replica sicura, completare i seguenti passaggi:
  1. Configurare i certificati richiesti.
  2. Configurare il servizio tlshd.
  3. Specificare l'opzione -re quando si crea un nuovo gestore di code utilizzando crtmqm.
Completare le prime due fasi una volta per ogni nodo. I certificati e la configurazione tlshd sono condivisi da tutti i gestori di code RDQM sul nodo che sono configurati per usare collegamenti di replica sicuri.

I protocolli TLS e le suite di cifratura che possono essere utilizzati dai collegamenti di replica sicuri RDQM sono controllati dalla politica crittografica attiva a livello di sistema. Utilizzare il comando Linux® update-crypto-policies per modificare il criterio attivo corrente.

Configurazione dei certificati

È necessario configurare i certificati da utilizzare per il collegamento di replica. I certificati creati per ciascun nodo possono essere utilizzati da tutti i collegamenti di replica. Se si dispone di più di un gestore di code RDQM su un nodo che utilizza collegamenti di replica sicuri, viene utilizzato lo stesso certificato.
Nota: Se un gestore di code in esecuzione su un nodo potrebbe far parte di una configurazione DR/HA, è necessario specificare un Subject Alternative Name (SAN) al momento della creazione dei certificati. Per ulteriori informazioni, vedere Replica sicura per DR/HA RDQM.

Per utilizzare un collegamento di replica sicuro in una configurazione RDQM DR sono necessari due certificati, uno per ogni nodo del gruppo RDQM DR.

Per configurare i certificati, eseguire i seguenti passaggi per ogni nodo della configurazione RDQM:
  1. Utilizza il seguente comando per generare una chiave privata:
    openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:4096 -out key_file
    dove key_file è il nome del file creato per memorizzare la chiave privata.
  2. Utilizzare il seguente comando per creare una richiesta di firma del certificato:
    openssl req -key key_file -subj "/CN=hostname" -new -out cert_req_file
    dove key_file è il file che contiene la chiave privata creata al punto 1, hostname è il nome host del nodo e cert_req_file è il file creato per memorizzare la richiesta di firma del certificato.

    Il Common Name (CN) del certificato deve essere impostato sul nome dell'host del nodo RDQM.

  3. Inviare la richiesta di firma del certificato all'autorità di certificazione (CA) per la firma. Quando si riceve il certificato firmato dalla CA, copiare i file della chiave privata, del certificato firmato e del certificato CA nella directory in cui si desidera memorizzare questi file. Ad esempio, la directory /etc/drbd.d/ .
  4. Impostate i permessi e la proprietà dei file delle chiavi private e dei certificati per garantire che solo l'utente root possa visualizzare le chiavi private.
    • Cambiare la proprietà del file della chiave privata e del certificato all'utente root.
    • Impostate i permessi sul file della chiave privata in modo che solo l'utente root abbia accesso in lettura e scrittura.
Il seguente esempio di script crea un'autorità di certificazione interna e due certificati da utilizzare in una configurazione RDQM DR.
Importante: questo esempio non è adatto a un ambiente di produzione ed è inteso solo come esempio per impostare rapidamente un ambiente di prova. La gestione dei certificati è un argomento complesso per gli utenti avanzati. Per la produzione, è necessario considerare aspetti come la rotazione, la revoca, la lunghezza delle chiavi e molto altro.
Eseguire il seguente script su uno dei nodi:
#!/bin/bash

# The CA name
ca_name="RDQM Test CA"

# The CA filename
ca_filename="rdqm_test_ca"

# Host certificates to generate
test_hosts=("alice" "bob")

mkdir certificates && cd ./certificates

# Create private key for use with private CA using OpenSSL
openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:4096 \
-out $ca_filename.key

# Create a private CA certificate using OpenSSL
openssl req -key $ca_filename.key -new -x509 -days 3650 -subj "/CN=$ca_name" \
-out $ca_filename.crt

# Create certificates for each node
for host in ${test_hosts[@]}; do

    # Create a private key
    openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:4096 \
    -out $host.key

    # Generate a CSR
    openssl req -key $host.key -subj "/CN=$host" -new -out $host.csr

    # Create a valid certificate signed by the private CA
    openssl x509 -req -in $host.csr -CA $ca_filename.crt \
    -CAkey $ca_filename.key -CAcreateserial -days 365 -out $host.crt

    # Remove sequential serial number
    rm -f $ca_filename.srl

    # Remove CSR
    rm -f $host.csr

done
L'esempio genera i seguenti file nella directory certificates :
  • rdqm_test_ca.crt
  • rdqm_test_ca.key
  • alice.crt
  • alice.csr
  • alice.key
  • bob.crt
  • bob.csr
  • bob.key
Distribuite i certificati completando i seguenti passaggi:
  1. Copiare il certificato CA (rdqm_test_ca.crt) nella directory /etc/drbd.d/ di ciascun nodo. (Questi sono percorsi di esempio, se necessario si può scegliere un'altra posizione)
  2. Copiare il certificato di ogni nodo (file.crt ) e la chiave privata (file.key ) in /etc/drbd.d/. (Questi sono percorsi di esempio, se necessario si può scegliere un'altra posizione)
  3. Modificare le autorizzazioni e la proprietà dei file per le chiavi private e il certificato su ciascun nodo. Questo assicura che solo l'utente root possa visualizzare il contenuto delle chiavi private:
    chmod 600 /etc/drbd.d/*.key
    chown root:root /etc/drbd.d/*.key 
    chown root:root /etc/drbd.d/*.crt
  4. Conservare la chiave privata dell'autorità di certificazione in un luogo sicuro.

Configurazione del servizio tlshd

Questo servizio tlshd deve essere configurato e poi abilitato e avviato, prima che qualsiasi handshake TLS di DRBD possa essere completato. Il servizio tlshd è fornito in un pacchetto che viene installato con i pacchetti drbd-utils-9.

Il file di configurazione per questo servizio è /etc/tlshd.conf e i contenuti iniziali sono:

[debug]
loglevel=0
tls=0
nl=0

[authenticate]
#keyrings= <keyring>;<keyring>;<keyring>

[authenticate.client]
#x509.truststore= <pathname>
#x509.certificate= <pathname>
#x509.private_key= <pathname>

[authenticate.server]
#x509.truststore= <pathname>
#x509.certificate= <pathname>
#x509.private_key= <pathname>
Prima di abilitare e avviare il servizio tlshd, è necessario specificare i valori delle seguenti proprietà in entrambe le sezioni authenticate.client e authenticate.server (DRBD può stabilire le sue connessioni in entrambe le direzioni, a meno che non ci sia un firewall che blocca una direzione):
x509.truststore
Il percorso del file che contiene il certificato della CA che ha firmato i certificati utilizzati dai nodi RDQM. Se è richiesta una catena di fiducia complessa, deve essere acquisita in un unico file.
x509.certificate
Il percorso del file che contiene il certificato firmato dalla CA per il nodo RDQM.
x509.private_key
Il percorso del file che contiene la chiave privata del nodo RDQM. Il file deve essere di proprietà di root e i permessi di lettura/scrittura devono essere concessi solo all'utente root.
I percorsi specificati in queste proprietà devono tutti identificare file locali.
È inoltre possibile specificare facoltativamente un elenco di revoca dei certificati (CRL). È necessario impostarlo in entrambe le sezioni authenticate.client e authenticate.server :
x509.crl
Il percorso di un file contenente le liste di revoca dei certificati (CRL) codificate in PEM da usare per verificare lo stato di revoca dei certificati durante ogni handshake. Se questa opzione non è specificata, il controllo CRL viene saltato.
Se si sono creati i certificati utilizzando lo script di esempio in Configurazione dei certificati, si configura il file come segue per il server alice:
[authenticate.client]
x509.truststore=/etc/drbd.d/rdqm_test_ca.crt
x509.certificate=/etc/drbd.d/alice.crt
x509.private_key=/etc/drbd.d/alice.key

[authenticate.server]
x509.truststore=/etc/drbd.d/rdqm_test_ca.crt
x509.certificate=/etc/drbd.d/alice.crt
x509.private_key=/etc/drbd.d/alice.key
Prima di attivare il servizio per la prima volta, immettere il seguente comando:
systemctl daemon-reload
Per avviare il servizio tlshd, digitate il seguente comando:
systemctl enable --now tlshd

Creazione della DR RDQM

Si crea un gestore di code DR con un collegamento di replica sicuro utilizzando il comando crtmqm con l'opzione -re , ad esempio per l'istanza primaria:
crtmqm -rr p -rl <Local_IP> -ri <Recovery_IP> -rn <Recovery_name> -rp <Port> -re  <DRQMname>
Al termine del comando, viene visualizzato il comando da immettere sul nodo secondario per creare l'istanza secondaria del gestore di code.

Utilizzare il comando rdqmstatus per confermare che il collegamento di replica è protetto da TLS. Per ulteriori informazioni, vedere Visualizzazione dello stato di DR RDQM.

Per ulteriori informazioni sulla creazione di un RDQM DR, vedere Creazione di un RDQM di disaster recovery.