Retouches

This commit is contained in:
benoit 2017-03-05 21:29:56 +01:00
parent f7370b7f19
commit 1dd7c65284

View file

@ -115,13 +115,13 @@ Laissez-vous guider par le script d'installation.
Voilà, c'est fini ! Il vous reste à créer votre premier compte mail via l'interface d'admin. Voilà, c'est fini ! Il vous reste à créer votre premier compte mail via l'interface d'admin.
Si vous avez des questions ou besoin d'aide, n'hésitez pas à ouvrir un ticket (an anglais !) ici. Sinon demandez-moi sur [Twitter](https://twitter.com/benpro82) ou par [Mail](mailto:benoit[arobase]benpro.fr). Si vous avez des questions ou besoin d'aide, n'hésitez pas à ouvrir un ticket (an Anglais !) [ici](https://github.com/andryyy/mailcow/issues). Sinon demandez-moi sur [Twitter](https://twitter.com/benpro82) ou par [mail](mailto:benoit[arobase]benpro.fr).
# Bonus : Certificat client X.509 # Bonus : Certificat client X.509
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. L'idée est de restreindre l'accès aux services web (webmail et admin), et mail (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. > **Note** : Cela ne remplace pas le certificat Let's Encrypt utilisé par Mailcow. On demande juste que le client présente un certificat émis par notre CA.
Pour cela il faut mettre en place une `PKI` et émettre un certificat client. J'utilise l'outil [shellPKI](https://wiki.evolix.org/HowtoOpenVPN#mise-en-place-dune-pki-avec-shellpki-openbsd-et-debian) pour ça. Pour cela il faut mettre en place une `PKI` et émettre un certificat client. J'utilise l'outil [shellPKI](https://wiki.evolix.org/HowtoOpenVPN#mise-en-place-dune-pki-avec-shellpki-openbsd-et-debian) pour ça.
@ -142,29 +142,7 @@ Pour cela il faut mettre en place une `PKI` et émettre un certificat client. J'
# ./shellpki.sh init # ./shellpki.sh init
``` ```
Injecter le certificat racine `/etc/shellpki/ca/cacert.pem` dans votre navigateur et vos appareils tel qu'un smartphone. On génère un certificat client (sans passphrase), soit un utilisateur par exemple. Il faudra choisir un « Common Name » du type `user@domain.tld`.
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`.
```
# ./shellpki.sh create
```
On obtiens un certificat et une clé dans `/etc/ssl/clients/` que l'on positionne sur nginx et dovecot. 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/dovecot/dovecot.conf:129:ssl_cert
/etc/dovecot/dovecot.conf:130:ssl_key
```
```
# systemctl restart nginx
# systemctl restart dovecot
```
On en régénère un autre pour votre client (sans passphrase), soit un utilisateur par exemple. Il faudra choisir un « Common Name » du type `user@domain.tld`.
``` ```
# ./shellpki.sh create # ./shellpki.sh create
@ -177,7 +155,7 @@ Puis on le converti au format `PKCS#12` avec une passphrase d'export. Cette pass
# openssl pkcs12 -export -in benoit.mail.benpro.fr.crt -inkey benoit.mail.benpro.fr.key -out benoit.mail.benpro.fr.p12 # 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, …). Il faudra importer ce certificat client dans les navigateurs et dans diverses applications (Thunderbird, Exchange/GMail sous Android, K9-Mail, …).
La dernière étape consiste à dire à dovecot et nginx qu'il est nécessaire de présenter un certificat client. La dernière étape consiste à dire à dovecot et nginx qu'il est nécessaire de présenter un certificat client.
@ -192,8 +170,9 @@ ssl_verify_client on;
# systemctl restart nginx # systemctl restart nginx
``` ```
Pour dovecot :
Pour dovecot > **Note** : Attention, si vous avez un webmail qui se connecte en local, imap non chiffré, l'activation de `auth_ssl_require_client_cert`, va imposer d'utiliser un certificat… Cassant votre webmail. Il n'y a pas à ce jour la possibilité d'activer `auth_ssl_require_client_cert` seulement pour imaps… Si vous utilisez un webmail, n'activez pas ceci sur dovecot.
``` ```
# Client certificate # Client certificate
@ -206,14 +185,13 @@ protocol !smtp {
auth_ssl_username_from_cert = yes auth_ssl_username_from_cert = yes
auth_mechanisms = external auth_mechanisms = external
} }
``` ```
``` ```
# systemctl restart dovecot.service # systemctl restart dovecot.service
``` ```
> **Note** : Attention, si vous avez un webmail qui se connecte en local, imap non chiffré, l'activation de `auth_ssl_require_client_cert`, va imposer d'utiliser un certificat… Cassant votre webmail. Il n'y a pas à ce jour la possibilité d'activer `auth_ssl_require_client_cert` seulement pour imaps. Vous devez maintenant faire le nécessaire côté client (Thunderbird, K9-Mail, …)
# Autres actions # Autres actions