WIP cert client
This commit is contained in:
parent
b88dddba96
commit
0ad5793be7
1 changed files with 57 additions and 12 deletions
|
@ -93,6 +93,8 @@ On supprime exim4, car Mailcow utilise postfix.
|
|||
# apt purge exim4 exim4-base exim4-config exim4-daemon-light
|
||||
```
|
||||
|
||||
## Installation
|
||||
|
||||
Puis on télécharge le script d'installation, on édite la configuration et on lance l'installation.
|
||||
|
||||
```
|
||||
|
@ -109,7 +111,7 @@ Laissez-vous guider par le script d'installation.
|
|||
# ./install.sh
|
||||
```
|
||||
|
||||
# Fini
|
||||
## Fini
|
||||
|
||||
Voilà, c'est fini ! Il vous reste à créer votre premier compte mail via l'interface d'admin.
|
||||
|
||||
|
@ -117,7 +119,7 @@ Si vous avez des questions ou besoin d'aide, n'hésitez pas à ouvrir un ticket
|
|||
|
||||
# Bonus : Certificat client X.509
|
||||
|
||||
L'idée est de restreindre l'accès au services web (webmail et admin), et mail (SMTPS/IMAPS) via un certificat client X.509. Sans ce certificat, impossible d'accéder à quoi que ce soit.
|
||||
L'idée est de restreindre l'accès aux services web (webmail et admin), et mail (SMTPS/IMAPS) via un certificat client X.509. Sans ce certificat, impossible d'accéder à quoi que ce soit.
|
||||
|
||||
> **Note** : Cela remplace le certificat Let's Encrypt utilisé par Mailcow.
|
||||
|
||||
|
@ -133,30 +135,74 @@ Pour cela il faut mettre en place une `PKI` et émettre un certificat client. J'
|
|||
# sed -i -e 's#PREFIX=.*#PREFIX=/etc/shellpki#' -e 's#WWWDIR=.*#WWWDIR=/etc/ssl/clients#' shellpki.sh
|
||||
```
|
||||
|
||||
Éditer `/etc/shellpki/openssl.cnf` et initialiser shellPKI. Le plus important est de remplir le « Common Name », par exemple `ca.domain.tld`.
|
||||
Éditer `/etc/shellpki/openssl.cnf` et initialiser shellPKI. Le plus important est de remplir le « Common Name », par exemple `Myname Root Certificate`.
|
||||
|
||||
```
|
||||
# vim /etc/shellpki/openssl.cnf
|
||||
# ./shellpki.sh init
|
||||
```
|
||||
|
||||
Ensuite on génère un
|
||||
Injecter le certificat racine `/etc/shellpki/ca/cacert.pem` dans votre navigateur et vos appareils tel qu'un smartphone.
|
||||
|
||||
On obtiens un certificat et une clé dans `/etc/shellpki/ca/` que l'on peut positionner sur nginx, dovecot et postfix.
|
||||
Ensuite on génère un certificat (sans passphrase) pour les services web et mail avec un « Common Name » correspondant à votre FQDN pour accéder à vos services comme `mail.domain.tld`.
|
||||
|
||||
```
|
||||
# sed -i -e 's#/etc/ssl/mail/mail.crt#/etc/shellpki/ca/cacert.pem#' \
|
||||
-e 's#/etc/ssl/mail/mail.key#/etc/shellpki/ca/private.key#' \
|
||||
/etc/nginx/sites-available/mailcow.conf /etc/postfix/main.cf \
|
||||
/etc/dovecot/dovecot.conf
|
||||
# ./shellpki.sh create
|
||||
```
|
||||
|
||||
Générer un certificat client
|
||||
On obtiens un certificat et une clé dans `/etc/ssl/clients/` que l'on positionne sur nginx, dovecot et postfix. Les différentes directives à modifier :
|
||||
|
||||
```
|
||||
/etc/nginx/sites-available/mailcow.conf:25: ssl_certificate
|
||||
/etc/nginx/sites-available/mailcow.conf:26: ssl_certificate_key
|
||||
/etc/postfix/main.cf:17:smtpd_tls_cert_file
|
||||
/etc/postfix/main.cf:18:smtpd_tls_key_fil
|
||||
/etc/dovecot/dovecot.conf:129:ssl_cert
|
||||
/etc/dovecot/dovecot.conf:130:ssl_key
|
||||
```
|
||||
|
||||
```
|
||||
# for service in dovecot postfix nginx; do systemctl restart $service; done
|
||||
```
|
||||
|
||||
On en régénère un autre pour votre client (sans passphrase), soit un utilisateur par exemple. On pourra choisir un « Common Name » `username.mail.domain.tld` ou `Nom Prénom`.
|
||||
|
||||
```
|
||||
# ./shellpki.sh create
|
||||
```
|
||||
|
||||
Puis on le converti au format `PKCS#12` avec une passphrase d'export.
|
||||
|
||||
```
|
||||
# cd /etc/ssl/clients
|
||||
# openssl pkcs12 -export -in benoit.mail.benpro.fr.crt -inkey benoit.mail.benpro.fr.key -out benoit.mail.benpro.fr.p12
|
||||
```
|
||||
|
||||
Il faudra importer ce certificat client dans les navigateurs et dans diverses applications (Thunderbird, Exchange/GMail sous Android, …).
|
||||
|
||||
La dernière étape consiste à dire à dovecot et nginx qu'il est nécessaire de présenter un certificat client.
|
||||
|
||||
Pour nginx :
|
||||
|
||||
```
|
||||
ssl_client_certificate /etc/shellpki/ca/cacert.pem;
|
||||
ssl_verify_client on;
|
||||
```
|
||||
|
||||
```
|
||||
# systemctl restart nginx
|
||||
```
|
||||
|
||||
Pour dovecot :
|
||||
|
||||
```
|
||||
ssl_client_ca_file = </etc/shellpki/ca/cacert.pem
|
||||
ssl_verify_client_cert = yes
|
||||
```
|
||||
|
||||
```
|
||||
# systemctl restart dovecot.service
|
||||
```
|
||||
|
||||
# Autres actions
|
||||
|
||||
|
@ -165,5 +211,4 @@ Voici une liste de tâches non exhaustives à faire de votre côté que je ne do
|
|||
- Activer un pare-feu sur votre machine, par exemple `ufw` ;
|
||||
- Monitorer votre serveur ;
|
||||
- S'assurer du suivi des mises à jour ;
|
||||
- Faire des sauvegardes ;
|
||||
- …
|
||||
- Faire des sauvegardes.
|
||||
|
|
Loading…
Reference in a new issue