Une cohabitation facile : StartSSL et Zimbra
Avoir un certificat SSL signé par une haute autorité reconnue coûte bonbon, je vous laisse faire un tour chez VerySign, etc… Si un liquide salin ruisselle lentement le long de votre joue c’est normal. Si vous êtes comme moi (un sysadmin merveilleux, formidable, incroyable, avec de superbes chevilles qui enflent ?), vous avez certainement toujours signé vos certificats SSL, jusqu’au jour ou une personne s’est plainte des choses suivantes :
- L’avertissement rouge qui fait peur de Chrome
- L’autre avertissement rouge qui fait tout aussi peur d’Internet Explorer
- La prise de connaissance des risques encourus si vous osez poursuivre avec Firefox
Ce jour venu, chez StartSSL tu atterriras !
StartSSL propose gratuitement un certificat signé pour le domaine principal et un sous-domaine au choix. Par exemple :
- incloudus.com
- mail.incloudus.com
Je ne vais pas expliquer comment générer un certificat chez StartSSL, ne faites pas cette tête ! Une fois le certificat généré, il est impératif de récupérer les quatre fichiers suivants depuis l’interface de gestion StartSSL :
- ssl.key (la clé privée)
- ssl.crt (le certificat)
- ca.pem (le certificat de l’autorité, Root PEM encoded)
- sub.class1.server.ca.pem (le certificat lié à la classe, Class 1 Intermediate Server CA)
Koment ke C con fé avek Zimbra ?
Ah… les joies du langage SMS… Les quatre fichiers générés doivent être envoyés sur le serveur et déposés dans le répertoire /tmp/ssl. Toutes les commandes suivantes doivent être exécutées en tant que root.
1 |
# mkdir /tmp/ssl |
Le certificat de l’autorité et la classe 1 de StartSSL doivent être concaténées dans le fichier /tmp/ssl/ca_startssl.crt
1 |
# cat ca.pem sub.class1.server.ca.pem > /tmp/ssl/ca_startssl.crt |
Le certificat lié au domaine StartSSL doit être copié dans le répertoire /tmp/ssl/ (juste pour une question de logistique).
1 |
# cp ssl.crt /tmp/ssl/ |
La clé privée du certificat doit être copiée dans le répertoire /opt/zimbra/ssl/zimbra/commercial/ sous le nom commercial.key
1 |
# cp ssl.key /opt/zimbra/ssl/zimbra/commercial/commercial.key |
Avant d’aller plus moins, il est important de vérifier que la clé et le certificat match bien.
1 |
# /opt/zimbra/bin/zmcertmgr verifycrt comm /opt/zimbra/ssl/zimbra/commercial/commercial.key /tmp/ssl/ssl.crt |
Résultat :
1 2 3 |
** Verifying commercial.crt against commercial.key Certificate (ssl.crt) and private key (commercial.key) match. Valid Certificate: ssl.crt: OK |
Les choses sérieuses commencent. Zimbra propose une commande qui permet de déployer le certificat en se basant sur certificat ci-dessus.
1 |
# /opt/zimbra/bin/zmcertmgr deploycrt comm /tmp/ssl/ssl.crt /tmp/ssl/ca_startssl.crt |
Résultat :
1 2 3 4 5 6 7 8 9 10 11 12 13 |
** Verifying ssl.crt against /opt/zimbra/ssl/zimbra/commercial/commercial.key Certificate (ssl.crt) and private key (/opt/zimbra/ssl/zimbra/commercial/commercial.key) match. Valid Certificate: commercial.crt: OK ** Copying commercial.crt to /opt/zimbra/ssl/zimbra/commercial/commercial.crt cp: `ssl.crt' and `/opt/zimbra/ssl/zimbra/commercial/commercial.crt' are the same file ** Saving server config key zimbraSSLCertificate...done. ** Saving server config key zimbraSSLPrivateKey...done. ** Installing mta certificate and key...done. ** Installing slapd certificate and key...done. ** Installing proxy certificate and key...done. ** Creating pkcs12 file /opt/zimbra/ssl/zimbra/XXXXXXXX.pkcs12...done. ** Creating keystore file /opt/zimbra/conf/keystore...done. ** Installing CA to /opt/zimbra/conf/ca...done. |
Puis on enregistre le nouveau certificat (en passant par l’utilisateur zimbra).
1 2 |
# su - zimbra -c "/opt/zimbra/java/bin/keytool -import -alias new -keystore /opt/zimbra/java/jre/lib/security/cacerts -storepass My3tr0ngPa33w0rD -file /opt/zimbra/ssl/zimbra/commercial/commercial.crt" |
Tapez yes à la question : Trust this certificate?
L’option viewdeploycrt de la commande zmcertmgr permet de s’assurer que le certificat a bien été déployé.
1 |
# /opt/zimbra/bin/zmcertmgr viewdeployedcrt |
Résultat :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
::service mta:: notBefore=Jun 21 07:22:33 2013 GMT notAfter=Jun 22 07:40:33 2014 GMT < ... > SubjectAltName= mail.incloudus.com, incloudus.com ::service proxy:: notBefore=Jun 21 07:22:33 2013 GMT notAfter=Jun 22 07:40:33 2014 GMT < ... > SubjectAltName= mail.incloudus.com, incloudus.com ::service mailboxd:: notBefore=Jun 21 07:22:33 2013 GMT notAfter=Jun 22 07:40:33 2014 GMT < ... > SubjectAltName= mail.incloudus.com, incloudus.com ::service ldap:: notBefore=Jun 21 07:22:33 2013 GMT notAfter=Jun 22 07:40:33 2014 GMT < ... > SubjectAltName= mail.incloudus.com, incloudus.com |
Pour que le nouveau certificat soit pris en charge, Zimbra doit être redémarré.
1 |
# su - zimbra -c "zmcontrol stop && sleep 10 && zmcontrol start" |
Un petit peu de ménage et le tour est joué.
1 |
# rm -rf /tmp/ssl |
Gaëtan Trellu (goldyfruit)
Derniers articles parGaëtan Trellu (goldyfruit) (voir tous)
- systemd-networkd, l’âge de la maturité ? - 13 mars 2018
- Hyper-V, Nova, VxLAN et Open vSwitch, enfin une belle histoire ! - 31 décembre 2017
- iPXE et la fameuse erreur 0x040ee119 qui rend fou ! - 17 avril 2017
Certificat SSL gratuit StartSSL et Zimbra par Gaëtan Trellu (goldyfruit) est sous Licence Creative Commons Internationale Attribution 4.0.