Come installare un certificato SSL commerciale su un server Zimbra
Un certificato SSL commerciale su Zimbra può presentare diversi problemi frustranti, anche quando l'autorità di certificazione afferma che il certificato è stato emesso correttamente. I problemi più comuni di solito non riguardano il certificato stesso: la chiave privata non corrisponde al certificato restituito, manca un'autorità di certificazione intermedia, il nome host non è presente nel Subject Alternative Name (SAN) del certificato oppure l'amministratore distribuisce i file prima di convalidare la catena.
Il modo più sicuro per gestire l'operazione è considerarla una sequenza di controlli piuttosto che un singolo comando "installa certificato". Lo strumento per la gestione dei certificati di Zimbra, documentato zmcertmgr, può creare una richiesta di firma del certificato (CSR), verificare la chiave privata e la catena di autorità di certificazione (CA), distribuire il certificato ai servizi Zimbra e mostrare il certificato attualmente attivo. Il Centro assistenza tecnica ufficiale di Zimbra documenta questi comandi nella sua guida "Console di amministrazione e strumenti CLI per la gestione dei certificati" .
Come dovrebbe apparire un'installazione SSL di Zimbra di successo
Prima di apportare qualsiasi modifica, definisci il risultato desiderato. Un'implementazione corretta deve soddisfare tutte queste condizioni:
L'elenco SAN del certificato include ogni nome host pubblico effettivamente utilizzato dai client, come ad esempio mail.example.com.
Il certificato emesso corrisponde alla chiave privata memorizzata per il certificato commerciale.
Zimbra è in grado di convalidare l'intera catena di certificati, dal certificato del server, attraverso i certificati CA intermedi, fino alla CA radice.
zmcertmgr deploycrt commSi completa senza errori di mancata corrispondenza della chiave o di convalida della catena.
I servizi di Zimbra si riavviano correttamente.
zmcertmgr viewdeployedcrtmostra il certificato previsto.
Un browser o un client TLS che si connette al nome host pubblico visualizza il nuovo certificato e nessun avviso di attendibilità.
Se uno di questi controlli fallisce, correggi quello specifico livello prima di continuare. Ridistribuire ripetutamente gli stessi file raramente risolve un problema di chiave, SAN o catena.
Prima di iniziare: scegli il flusso di lavoro del certificato corretto
Situazione
Approccio consigliato
Compromesso principale
Nuovo certificato utilizzando un CSR generato da Zimbra
Genera il CSR con zmcertmgre conserva quello generatocommercial.key
La corrispondenza delle chiavi è la più semplice, ma la chiave privata rimane comunque legata a questa installazione di Zimbra.
Certificato rilasciato da una chiave privata esistente
Conferma che quella chiave sia quella che Zimbra utilizzerà prima della distribuzione.
Utile per le migrazioni, ma è più facile creare una mancata corrispondenza della chiave.
Zimbra a nodo singolo
Verifica e distribuisci localmente, quindi riavvia
Semplice, con un'unica finestra di manutenzione.
Zimbra multi-nodo
Pianifica il posizionamento e la distribuzione dei certificati per nodo oppure utilizza le opzioni multi-server supportate da Zimbra.
È necessario un maggiore coordinamento; non si deve presumere che una procedura a nodo singolo copra ogni ruolo.
La pagina del Centro assistenza tecnica di Zimbra riporta che su Zimbra 8.7 e versioni successive, zmcertmgril programma viene eseguito come zimbrautente. Documenta inoltre che la chiave privata commerciale deve essere denominata commercial.keyin /opt/zimbra/ssl/zimbra/commerciale che il certificato del server più il file della catena di certificati CA devono essere posizionati in una directory temporanea prima della distribuzione.
Passaggio 1: eseguire il backup del materiale del certificato corrente
Non iniziare eliminando la directory SSL esistente. Crea prima un backup che potrai ripristinare in caso di errore della nuova distribuzione. Come utente root, un esempio prudente è:
cp -a /opt/zimbra/ssl/zimbra /opt/zimbra/ssl/zimbra.backup-$(date +%Y%m%d-%H%M%S)
Annotare inoltre il certificato attualmente in uso prima di modificarlo:
su - zimbra
/opt/zimbra/bin/zmcertmgr viewdeployedcrt
Questo fornisce un punto di riferimento per il confronto dopo la modifica. Se il tuo ambiente ha più nodi Zimbra, acquisisci lo stato corrente del certificato su ciascun server interessato anziché presumere che siano identici.
Passaggio 2: genera una richiesta di firma del certificato (CSR) con i nomi host di cui hai effettivamente bisogno
Per un nuovo certificato commerciale, creare la richiesta di firma del certificato (CSR) con il nome host di produzione e gli eventuali SAN aggiuntivi. La documentazione di Zimbra indica la seguente sintassi:
/opt/zimbra/bin/zmcertmgr createcsr comm -new \
-subject "/C=US/ST=CA/L=Sunnyvale/O=Example/OU=IT/CN=mail.example.com" \
-subjectAltNames "mail.example.com"
Se gli utenti si connettono anche tramite un altro nome, ad esempio webmail.example.com, è necessario includerlo nell'elenco SAN quando si richiede il certificato. I client TLS moderni convalidano i nomi host rispetto ai SAN, quindi un certificato che sembra corretto solo in base al nome comune potrebbe comunque generare un avviso nel browser se il nome host è mancante.
Prima di inviare la richiesta di certificato (CSR), rivedila:
/opt/zimbra/bin/zmcertmgr viewcsr comm /opt/zimbra/ssl/zimbra/commercial/commercial.csr
Un flusso di lavoro terminale per la fase CSR, in cui la richiesta commerciale e la chiave privata vengono create prima che la richiesta venga inviata all'autorità di certificazione.
Checkpoint: fermati qui se i nomi DNS richiesti non sono corretti. Emettere prima il certificato e scoprire in seguito la mancanza di un SAN significa che in genere è necessario che l'autorità di certificazione (CA) lo riemetta.
Passaggio 3: raccogliere il certificato del server e la catena completa di CA
Dopo la convalida, la CA commerciale in genere restituisce il certificato del server più uno o più certificati intermedi. La procedura ufficiale di Zimbra per i certificati commerciali a nodo singolo prevede il certificato del server in formato PEM e indica agli amministratori di combinare i certificati CA intermedi e radice in un file di catena.
La disposizione tipica di un allestimento scenico è la seguente:
Utilizza i file forniti dalla tua autorità di certificazione per il tuo specifico prodotto di certificazione. Non copiare un certificato intermedio da un tutorial non correlato solo perché il nome del marchio CA è simile. Le gerarchie delle CA cambiano nel tempo e l'utilizzo di un certificato intermedio errato è una causa comune di problemi unable to get local issuer certificate.
La fase CA-chain combina il certificato intermedio emittente e il certificato radice nel file della catena che Zimbra verifica insieme al certificato del server.
Passaggio 4: verificare la chiave privata, il certificato del server e la catena prima della distribuzione
Questo è il punto di controllo di sicurezza più importante. Eseguire il comando di verifica documentato come utente Zimbra nelle versioni correnti di Zimbra:
su - zimbra
/opt/zimbra/bin/zmcertmgr verifycrt comm \
/opt/zimbra/ssl/zimbra/commercial/commercial.key \
/tmp/commercial.crt \
/tmp/ca_chain.crt
Una verifica riuscita conferma che il certificato e la chiave privata corrispondono e che il certificato è valido. La documentazione degli strumenti di certificazione di Zimbra spiega che tale verifica verifycrtcombina un controllo della chiave e un controllo della catena di certificati.
La fase di verifica dovrebbe confermare sia la corrispondenza tra la chiave e il certificato, sia la catena di autorità di certificazione (CA) prima che qualsiasi certificato venga distribuito.
Se la verifica fallisce, scegli la soluzione in base all'errore
Certificato e chiave privata non corrispondenti: il certificato CA non è stato emesso dalla CSR associata all'autorità di certificazione corrente commercial.key. Ripristinare la chiave corretta o riemettere il certificato da una nuova CSR.
Impossibile convalidare la catena di certificati: il bundle intermedio/radice è incompleto, nell'ordine sbagliato, scaduto o non corrisponde alla catena del certificato di questo server. Richiedere la catena corretta all'autorità di certificazione emittente.
Certificato scaduto: non distribuirlo. Richiedi un certificato valido e verifica anche se un certificato intermedio o radice nella catena è scaduto. Zimbra documenta questa modalità di errore nella sua guida alla risoluzione dei problemi relativi alle CA radice scadute .
Nome host mancante: la verifica potrebbe non corrispondere al controllo del nome host eseguito dal browser. Esaminare i SAN emessi e riemetterli se il nome pubblico non è presente.
Passaggio 5: distribuire il certificato commerciale
Solo dopo che la verifica avrà esito positivo, potrai procedere alla distribuzione:
/opt/zimbra/bin/zmcertmgr deploycrt comm /tmp/commercial.crt /tmp/ca_chain.crt
Il processo di implementazione documentato di Zimbra copia il certificato commerciale nella sua area SSL, aggiunge la catena di certificati CA, aggiorna la configurazione del certificato e installa il materiale del certificato per servizi quali MTA, LDAP, proxy e componenti di posta elettronica, a seconda del server.
Non sovrascrivere manualmente keystore Java o file di certificati di servizio casuali, a meno che la documentazione della tua specifica versione di Zimbra non lo richieda espressamente. Lo scopo zmcertmgrè mantenere coerente il materiale dei certificati specifici del servizio.
Passaggio 6: riavviare i servizi di Zimbra
Dopo l'implementazione, riavviare Zimbra:
su - zimbra
zmcontrol restart
Quindi verifica lo stato del servizio:
zmcontrol status
Se un servizio non torna allo stato Running, è necessario indagare prima di dichiarare completata la modifica del certificato. I problemi relativi ai certificati possono influire su LDAP, proxy, caselle di posta o altre comunicazioni dipendenti da TLS, soprattutto in installazioni multi-nodo.
La fase finale lato server distribuisce il certificato verificato, riavvia Zimbra e controlla il certificato segnalato da viewdeployedcrt.
Passaggio 7: verificare il risultato sia da Zimbra che dal lato client
Utilizzate innanzitutto la visualizzazione del certificato fornita da Zimbra:
/opt/zimbra/bin/zmcertmgr viewdeployedcrt
È inoltre possibile verificare se un certificato di servizio distribuito è in scadenza:
/opt/zimbra/bin/zmcertmgr checkcrtexpiration all -days 30
Infine, verifica l'esatto nome host pubblico che gli utenti utilizzano. Un utile controllo OpenSSL da un'altra macchina è il seguente:
Cerca il certificato foglia previsto, il nome host corretto, una catena completa e un risultato di verifica positivo. Quindi apri lo stesso URL HTTPS in un browser corrente. Un test tramite browser è importante perché verifica il nome host effettivamente raggiunto dagli utenti, non solo i file del certificato presenti sul disco.
Quando la procedura standard non è sufficiente
Modifica il tuo approccio anziché forzare i passaggi a nodo singolo se si verifica una qualsiasi di queste condizioni:
Zimbra multi-nodo: la distribuzione dei certificati potrebbe dover coprire i ruoli di proxy, mailbox, LDAP e MTA su host diversi. Lo strumento di certificazione di Zimbra supporta opzioni multi-server, ma è necessario verificare la procedura per la propria topologia prima di utilizzarle.
Il proxy inverso o il bilanciatore di carico esterno termina la connessione TLS: potrebbe essere necessario installare il certificato pubblico anche su tale dispositivo. Un certificato Zimbra corretto da solo non cambierà ciò che i client vedono se la connessione TLS termina a monte.
Stai importando una chiave esistente: assicurati che sia posizionata nella cartella in cui Zimbra si aspetta la chiave privata commerciale e che le autorizzazioni corrispondano ai requisiti della versione prima della verifica.
La tua CA fornisce solo un pacchetto intermedio: segui le istruzioni della catena corrente della CA anziché inventare un certificato radice. Zimbra necessita di una catena che possa convalidare; i file esatti dipendono dall'emittente.
Il certificato è stato rinnovato con lo stesso hostname ma con una chiave diversa: aggiornare la chiave privata corrispondente prima della verifica. Un certificato precedente commercial.keynon può essere utilizzato per convalidare un certificato emesso per una nuova coppia di chiavi.
Verifica finale
L'installazione è completa solo quando sono vere tutte le seguenti condizioni: verifycrtil test ha deploycrtesito positivo, i servizi Zimbra tornano allo stato "In esecuzione", viewdeployedcrtviene visualizzato il nuovo certificato e una connessione TLS esterna all'hostname reale riceve lo stesso certificato valido senza avvisi di attendibilità o relativi all'hostname.
Per la sintassi dei comandi e il comportamento specifico della versione, fare riferimento principalmente alla documentazione ufficiale di Zimbra relativa agli strumenti per la certificazionemail.example.com . Gli esempi qui riportati sono utilizzati come segnaposto; sostituire i nomi, i file dei certificati e i dettagli organizzativi con i valori emessi per il proprio ambiente.