Réseau - Web - GNU/Linux

2013 22 août

TLSifiez votre serveur - Debian 7.0 Wheezy

Rédigé par Marc GUILLAUME | Aucun commentaire
Article précédent Mail façon FAI - Debian 7.0 Wheezy Article suivant

Pour pouvoir chiffrer les échanges du serveur sur l'Internet, il faut disposer d'une clé de chiffrement.

Note du traducteur : Le terme PKI qui revient souvent ci-dessous est un sigle anglais pour « Public Key Infrastructure » (que l'on pourrait traduire par infrastructure de clés publiques). Il désigne des sociétés externes (auxquelles vous faites implicitement confiance), qui vont vérifier l'authenticité de certificat SSL/TLS. Ces PKI sont souvent aussi désignés comme CA pour Certification Authorities c'est à dire autorités de certification. J'ai également traduit sur ce site le guide de Marcus Redivo sur la création de certificats SSL qui entre davantage dans les détails sur ces questions.

En lisant cette page vous pourrez constater que Christoph Haas ne porte pas ces prestataires de service dans son coeur. Il est vrai qu'ils font payer très cher des prestations qui peuvent sembler très surévaluées. Il faut cependant considérer que les prix les plus élevés pour les clés comprennent souvent un aspect assurance. Si le système est mis en défaut par exemple sur un site de e-commerce, le manque à gagner peut-être remboursé au commerçant jusqu'à un pafond défini dans le contrat. Donc comme une prime d'assurance le prix augmente avec la garantie.

Si vous n'êtes pas familier avec l'abbréviation TLS, il s'agit du successeur de SSL.

L'Internet est devenu un mauvais lieu. Beaucoup de matériel informatique, de logiciels et d'équipes techniques s'interposent entre votre ordinateur et votre serveur de courrier. Certains ne sont pas de confiance. Et d'autres sont même payés pour vous espionner. Il est donc de nos jours hors de question de faire tourner des services non chiffrés sur Internet - particulièrement quand il s'agit de gérer votre serveur et de l'utiliser pour votre courrier. Regardez tous les mots de passe gaspillés que vous envoyés sans protection via HTTP. Donc avant que vous n'utilisiez PhpMyAdmin et que vous lui envoyiez votre mot de passe « root » il faut commencer par sécuriser votre serveur Apache. Configurer TLS n'est pas difficile. Et pendant que nous y sommes nous allons créer les clés et certificats que nous utiliserons pour notre webmail HTTPS, notre POP3 sécurisé, notre IMAP sécurisé et notre SMTP lui aussi sécurisé.

Vous devez juste décider si vous devez acheter un certificat ou en créer un vous-même. Voici les éléments de comparaison :

Type Avantages Désadvantages Application
Auto-signé
  • C'est gratuit ;
  • c'est fait rapidement.
Les utilisateurs verront un message les avertissant que votre certificat n'est pas de confiance. Dans le cas d'un serveur de mail privé pour vous-même et quelques amis qui ne craignent pas d'ignorer les avertissements concernant une identité non vérifiée.
Auto-signé avec votre propre PKI (Public Key Infrastructure)
  • C'est gratuit ;
  • vous pourrez créer d'autres certificats que vos utilisateurs considéreront comme de confiance si ils ont installé votre certificat d'autorité.
Cela vous prendra un quart d'heure. Cela demandera aussi que tous vos utilisateurs installent votre certificat d'autorité comme certificat de confiance sur leurs ordinateurs. Cela n'a de sens que si vous pouvez automatiquement distribuer votre certificat dans un environnement d'entreprise. Un serveur de mail privé pour vous et vos amis qui là encore ne craignent pas d'installer votre certificat d'autorité.
Un certificat gratuit obtenu auprès de StartSSL
  • C'est gratuit ;
  • les utilisateurs ne recevront probablement pas de message d'alerte.
Cela prend 15 minutes de travail. Pour un serveur de mail public.
Un certificat commercial Les utilisateurs ne recevront pas de message d'alerte.
  • Le coût se situe entre 50€ et 200€ par an en moyenne ;
  • probablement une procédure d'enregistrement assez longue ;
  • vous financez la mafia des certificats ;
  • vous n'améliorez en aucune façon la sécurité de vos communications.
Pour tous ceux qui ont de l'argent de trop.

ATTENTION : quelle que soit la méthode que vous choisirez, créez la clé sur votre propre serveur. N'accordez jamais aucune confiance à une clé qui a été créée par quelqu'un d'autre. Cela pourrait paraître une bonne idée, car vous pourriez oublier une étape. Mais le prestataire connaît maintenant votre clé secrète et pourrait en théorie intercepter vos échanges chiffrés. Je décrirai comment faire tout ça proprement dans chaque section suivante. Simplement choisissez votre option et suivez les instructions.

Option 1 : le certificat auto-signé

L'option la plus simple. Lancez simplement la commande suivante sur votre serveur et vous obtiendrez un certificat valide pour tous usages valable pour les dix années à venir :

openssl req -new -x509 -days 3650 -nodes -newkey rsa:4096-out /etc/ssl/certs/mailserver.pem -keyout /etc/ssl/private/mailserver.pem

Pendant la création vous seront demandées différentes informations. Entrez ce que vous voulez. Le seul champ important est le Common Name qui doit contenir le nom pleinement qualifié par lequel vous voulez que soit connu votre serveur sur Internet.

Pour finir assurez vous que la clé secrète soit uniquement accessible à l'utilisateur root :

chmod go= /etc/ssl/private/mailserver.pem

Option 2 : le certificat auto-signé avec votre propre PKI

Cette solution est un peu plus élaborée que le simple certificat auto-signé. Mais vos utilisateurs ou clients devront installer votre certificat d'autorité à la main pour établir une relation de confiance avec votre PKI à la fois dans leurs navigateurs et dans leurs clients de mail.

Veuillez rechercher sur Internet les mots clé « openssl » et « CA.pl » pour davantage d'informations sur la manière de configurer votre propre PKI. Je ne couvrirai pas ce sujet ici.

Note du traducteur : J'ai traduit sur ce site divers documents concernant SSL et l'usage des certificats, dont un guide complet de création d'un certificat auto-signé et de son utilisation. Les étapes de création y sont détaillées, chaque option de création y est discutée ainsi que la procédure pour créer un certificat racine d'autorité qui permette de signer les certificats SSL des serveurs. Y sont bien entendu abordés les avantages, inconvénients et limites de ces certificats maison. C'est un complément aux informations fournies par Christoph Haas. Un document simple permettant de vous familiariser avec les grandes lignes de SSL/TLS sans entrer dans les détails techniques se trouve sur le site de Seb Sauvage.

Une fois que le PKI est configuré il vous suffit de créer une requête de signature de certificat (CSR pour Certificat Signing Request) de cette façon :

/usr/lib/ssl/misc/CA.pl -newreq

Pendant la création vous seront demandées différentes informations. Entrez ce que vous voulez. Le seul champ important est le Common Name qui doit contenir le nom pleinement qualifié par lequel vous voulez que soit connu votre serveur sur Internet.

Signez alors la requête (créez le certificat) :

/usr/lib/ssl/misc/CA.pl -sign 

Vous devriez maintenant trouver trois fichiers dans votre répertoire courant :

  • newreq.pem - vous pouvez le supprimer ;
  • newkey.pem - déplacez-le ici : /etc/ssl/private/mailserver.pem ;
  • newcert.pem - déplacez-le ici : /etc/ssl/certs/mailserver.pem.

Pour finir assurez vous que la clé secrète soit uniquement accessible à l'utilisateur root :

chmod go= /etc/ssl/private/mailserver.pem

Option 3 : certificat gratuit de StartSSL

Il s'agit presque toujours de la meilleure solution. Cela n'entraîne pas de dépense et vous fournira un certificat de confiance de base que la plupart des navigateurs et des clients de mail accepteront.

Créez un fichier de clés :

openssl genrsa -des3 -out /etc/ssl/private/mailserver.pem 4096

Créez une requête de signature pour ce certificat (CSR) :

openssl req -new -key /etc/ssl/private/mailserver.pem -out /etc/ssl/certs/mailserver.csr

Vont alors vous être demandées différentes informations. Entrez ce que vous voulez. Le seul champ important est toujours le Common Name qui doit contenir le nom pleinement qualifié par lequel vous voulez que soit connu votre serveur sur Internet.

Maintenant rendez-vous sur StartSSL et inscrivez-vous sur le site. Utilisez l'utilitaire de validation pour valider tout d'abord votre adresse mail. Utilisez ensuite de nouveau l'utilitaire de validation pour valider le domaine que vous voulez utiliser pour votre serveur.

Utilisez ensuite l'utilitaire de certification pour créer un certificat SSL/TLS pour un serveur web. Choisissez votrer adresse mail, copiez le contenu du fichier de CSR que vous venez de créer et si tout fonctionne bien vous recevez votre fichier de certificat. Placez-le alors ici /etc/ssl/certs/mailserver.pem.

En plus de la configuration d'Apache décrite ci-dessous assurez-vous bien d'installer également le chainig certificate. Un exemple de configuration est disponible à l'adresse StartSSL documentation.

Note du traducteur : Un échange de commentaires sur le site de Christoph Haas met l'accent sur ce qui pourrait sembler un problème potentiel en cas d'utilisation de StartSSL et d'un moyen de le contourner (messages 3015 et suivant). En cas d'utilisation de StartSSL, ceux-ci envoient un email de vérification sur un compte du domaine d'inscription (choisi dans une liste du genre postmaster@ webmaster@ etc.) Cela implique que vous devez avoir un moyen de recevoir ou transférer ce mail.

Cela pourrait laisser croire que le serveur de mail devrait déjà être installé et fonctionnel pour pouvoir utiliser les services de StartSSL. Mais en fait vous pouvez très bien utiliser une redirection avant la configuration du serveur (le commentateur prend l'exemple d'un pseudo domaine sur chez Godaddy mais il existe nombre d'autres solutions).

Option 4 : certificat payant

Êtes-vous certain de vouloir faire ça ? Alors cherchez simplement « SSL certificate » sur un moteur de recherche et envoyez la monnaie à une autorité de certification. Ces saloperies existent en plusieurs parfums.

Créez un fichier de clé :

openssl genrsa -des3 -out /etc/ssl/private/mailserver.pem 4096

Créez une requête de certification pour cette clé (CSR) :

openssl req -new -key /etc/ssl/private/mailserver.pem -out /etc/ssl/certs/mailserver.csr

Maintenant que vous avez décidé d'investir de l'argent, je vous suggère d'être très attentifs en remplissant les informations qui vous sont demandées lors de la création. Le Common Name doit correspondre au nom d'hôte pleinement qualifié par lequel vous voulez que soit connu votre serveur sur Internet.

Utilisez le fichier CSR pour demander un certificat à l'autorité SSL.

Activez HTTPS sur le serveur web Apache

Maintenant que vous avez une clé valide et un certificat utilisons les pour le serveur web, afin qu'il parle HTTPS au lieu de HTTP.

Allez dans le dossier /etc/apache2/sites-available et cherchez le fichier default-ssl. C'est un bon gabarit de configuration pour mettre en place HTTPS. Éditez-le et modifiez les lignes suivantes :

SSLCertificateFile   /etc/ssl/certs/mailserver.pem
SSLCertificateKeyFile /etc/ssl/private/mailserver.pem

Activez cette configuration SSL :

a2ensite default-ssl

Activez également le module mod_ssl :

a2enmod ssl

Je vous suggère de recharger la configuration d'Apache :

service apache2 reload

Si tout va bien vous devriez voir le message [ ok ]. Rendez vous alors à l'adresse https://YOURSERVER/ et regardez si vous voyez un message « It works! ». Si ce n'est pas le cas lancez la commande suivante pour voir si Apache détecte un problème évident :

apache2ctl configtest

Ou bien examinez le contenu du fichier de log /var/log/apache2/error.log pour plus d'information.

Configurer la redirection de HTTP vers HTTPS

Pour les utilisateurs qui oublient de taper https au lieu de http, configurons une redirection qui va les renvoyer automatiquement vers l'URL sécurisée. Éditez le fichier /etc/apache2/sites-available/default et ajoutez-y :

Redirect permanent / https://YOUR.MAIL.SERVER/

N'importe où dans la section VirtualHost. Bien entendu vous devez remplacer « YOUR.MAIL.SERVER » par le nom pleinement qualifié de votre serveur de courrier.

Écrire un commentaire

Quelle est la première lettre du mot vchypf ?

Fil RSS des commentaires de cet article

À propos

Yakati.com - Réseau - Web - GNU/Linux © 2017

Généré par PluXml en 0.051s  - Administration

Mes coordonnées

Marc Guillaume
contact[at]yakati.com
79150 ÉTUSSON

Crédits

Pour la gestion du contenu

Généré par PluXml, le Blog ou Cms sans base de données

Pour le contenu

Licence Creative Commons
Ce(tte) œuvre est mise à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International.

Pour le thème

Thème SOLID de blacktie.co adapté pour PluXml