Tutoriel : installer un certificat SSL sur Debian

Tutoriel : installer un certificat SSL sur Debian

La première fois que j'ai installé un certificat SSL pour sécuriser certains de mes sites ou services, j'avoue que j'ai galéré pour trouver des informations. Si Internet est une véritable caverne d'Ali Baba, on y trouve aussi beaucoup d'infos erronées ou pas assez précises.

Configurer un site en HTTPS

Pour faciliter la mise en place du certificat SSL sur le serveur, nous allons partir du principe que vous avez suivi mon tutoriel Debian.

Étape 1 : acheter un certificat

La première étape consiste à acheter un certificat SSL. Il n'y a rien de plus inquiétant pour un utilisateur que d'arriver sur un site soit disant sécurisé qui propose une fenêtre indiquant que le certificat n'est pas certifié comme le témoigne cette image.

Site avec un certificat non sécurisé

Pour acheter mes certificats, j'utilise le site Namecheap qui en propose une grande variété. Je vous conseille le Comodo Essential Wildcard qui permet l'utilisation sur un nombre illimités de sous-domaines.

2 - Création d'une CSR

Pour valider votre certificat, le prestataire va vous demander de copier le contenu du fichier CSR. Il est important de le créer pour un domaine précis. Pour le tutoriel, nous allons utiliser le nom de domaine MON_DOMAINE (quand cela sera nécessaire, je préciserais l'extension).

Vérifiez que votre serveur est à jour avant de commencer :

$ aptitude update && aptitude upgrade

On se place dans le dossier SSL :

$ cd /etc/ssl/

On peut maintenant créer la clé privée comme suit :

$ openssl genrsa -out MON_DOMAINE.key 2048

On crée ensuite le fichier CSR avec la clé privée :

$ openssl req -new -sha256 -key MON_DOMAINE.key -out MON_DOMAINE.csr

Le serveur va vous demander plusieurs informations. Le champ le plus important est le Common Name qui doit correspondre à MON_DOMAINE.COM précédé d'une étoile et d'un point. C'est cette info indiquée dans le fichier CSR qui permettra d'indiquer que l'on va utiliser le certificat sur l'intégralité des sous-domaines :

Country Name : FR
State or Province Name : France
Locality Name : Paris
Organization Name : NOM_SOCIETE
Organizational Unit Name : CE_QUE_VOUS_VOULEZ
Common Name : *.MON_DOMAINE.COM
Email Address : VOTRE_EMAIL

Deux autres questions vous sont posées :

A challenge password : MOTDEPASSE_CHALLENGE
An optional company name : NOM_SOCIETE

Le prestataire va ensuite vous demander les informations présentes dans ce fichier. Ouvrez le et copiez l'intégralité du contenu :

$ nano MON_DOMAINE.csr

Étape 3 : installation et paramétrage

Normalement, vous devriez avoir reçu un mail avec votre certificat au format CRT. Connectez-vous à votre serveur en FTP et uploadez le fichier dans un dossier où vous avez les droits et pensez à le renommer. Pour l'exemple, le nom du dossier sera CLES.

On commence par déplacer le fichier dans le dossier SSL. Nous partons du principe que nous toujours positionné dans le dossier /etc/ssl/ :

$ mv /var/DOSSIER/MON_DOMAINE.crt certs/

Il faut ensuite modifier les droits comme ceci :

$ chmod 444 /certs/MON_DOMAINE.crt

On en profite également pour modifier les droits de fichier KEY :

$ chmod 400 MON_DOMAINE.key

Et on le déplace dans son répertoire :

$ mv MON_DOMAINE.key private/

Étape 4 : paramétrage d'un sous-domaine

Partons du principe que vous souhaitez proposer un webmail sécurisé à vos clients en sous-domaine. Je vous conseille l'utilisation de Roundcube qui est simple à installer et à configurer. Nous allons donc ajouter le sous-domaine dans le fichier de configuration de notre domaine. Ouvre le fichier :

$ nano /etc/apache2/sites-available/MON_DOMAINE.COM

Sous (si possible le dernier si vous en avez plusieurs) :

</VirtualHost>

Ajoutez :

# VirtualHost webmail.MON_DOMAINE.COM
<VirtualHost IP_DU_SERVEUR:80>
    ServerName webmail.MON_DOMAINE.COM
    Redirect 301 / https://webmail.MON_DOMAINE.COM/
</VirtualHost>
<VirtualHost IP_DU_SERVEUR:443>
    # Email admin
    ServerAdmin VOTRE_EMAIL
    # Adresse du site
    ServerName  webmail.MON_DOMAINE.COM
    # Chemin du site
    DocumentRoot /home/DOSSIER/sd/webmail/www
    # Options du site
    <Directory /home/DOSSIER/sd/webmail/www/>
        Options -Indexes +FollowSymLinks
        Order allow,deny
        allow from all
        RewriteBase /
    </Directory>
    # Logs erreurs
    ErrorLog /var/log/apache2/webmail.MON_DOMAINE.COM-error.log
    # Logs acces
    TransferLog /var/log/apache2/webmail.MON_DOMAINE.COM-access.log
    # Droits modifs
    SuexecUserGroup NOM_UTILISATEUR NOM_GROUPE
    # Activation du mode SSL pour ce site
    SSLEngine on
    # Emplacement du fichier contenant le certificat X509
    SSLCertificateFile /etc/ssl/certs/MON_DOMAINE.crt
    # Emplacement du fichier contenant la clef privee
    SSLCertificateKeyFile /etc/ssl/private/MON_DOMAINE.key
</VirtualHost>

Comme vous pouvez le voir ci-dessus, on en profite pour mettre en place une redirection 301 du site HTTP vers le HTTPS. Vous pouvez enregistrer le fichier.

Ouvrez maintenant le fichier de configuration de votre domaine :

$ nano /etc/bind/db.MON_DOMAINE.COM

Et ajoutez en bas :

webmail           IN      A       IP_DU_SERVEUR

N'oubliez pas de modifier cette zone :

2015020901 // A incrémenter d'un chiffre à chaque modif

Enregistrez le fichier et redémarrez les services :

$ service apache2 restart
$ service bind9 restart

Étape 5 : utilisation avec Postfix et Dovecot

Si vous gérez les e-mails de vos clients sur votre serveur, il est impératif de modifier les services Postfix et Dovecot afin d'éviter les galères d'acceptation de certificat sous Outlook. Et quand je dis galèrs, je n'exagère même pas. Là encore, on part du principe que vous avez suivi notre tutoriel à propos de l'installation d'un serveur Debian.

Ouvrier le fichier de configuration de Postfix :

$ nano /etc/postfix/main.cf

Et modifiez comme suit :

smtpd_tls_cert_file = /etc/ssl/certs/MON_DOMAINE.crt
smtpd_tls_key_file  = /etc/ssl/private/MON_DOMAINE.key

Enregistrez le fichier et configurez celui de Dovecot :

$ nano /etc/dovecot/conf.d/10-ssl.conf

Modifiez les lignes suivantes :

ssl_cert = </etc/ssl/certs/MON_DOMAINE.crt
ssl_key = </etc/ssl/private/MON_DOMAINE.key

Lors de l'installation d'un compte e-mail, vos clients devront utiliser les protocoles suivants :

Serveur de courrier entrant (POP) : pop.MON_DOMAINE.COM
Serveur de courrier entrant (IMAP) : imap.MON_DOMAINE.COM
Serveur de courrier sortant (SMTP) : smtp.MON_DOMAINE.COM

Si cette partie n'est pas assez claire, j'ai expliqué plus dans détail dans la section Gestion des noms de domaine (utilisation d'un certificat SSL).

Amusez-vous bien. :-)

Catégorie Tutoriels - Écrit par le 06/03/2015 - Article lu 10 726 fois - 10 commentaires

10 réflexions sur ce billet

Écrit par Littlebuzz du site http://blogbijoux.info/
Le 23/04/2013 à 11h17

Bon alors, j'ai lu, mais j'ai rien compris :-) C'était vraiment pour te faire plaisir !

Maintenant, si un jour j'ai un certificat SSL à installer, je te tel, ça ira bien plus vite !!!

Salut Mister,

super HOWTO que voici !

Je bookmarque direct car je sens que je vais en avoir bien besoin incessamment sous peu.

Sinon pour l'anecdote, j'ai pour habitude de me fournir chez *ahem* OVH qui propose ses propres NDD en SSL avec le certificat qui va bien.

C'est pas la "soluce" la plus pro mais je dois avouer que c'est quand même bien pratique !

Bref, merci Hervé. ;-)

Merci pour le tuto. Bien qu'utilisant surtout des serveurs mutualisés, je finirai sans doute par me laisser tenter par un dédié, et à ce moment-là ton article me sera bien utile ^^ Je compte en effet bien tester le https pour un de mes sites à venir.

Écrit par Louis du site http://100rimes.com
Le 25/04/2013 à 10h30

Wahoo... C'est vraiment compliqué et long quand on ne connait pas spécialement le truc. Les offres (comme chez OVH) de SSL "clé en main" ne sont-elles pas à la hauteur ?

Merci

Écrit par tonyok75
Le 29/04/2013 à 12h25

Bonjour, très bon tuto !

J'aurai une question : comment faire pour protéger uniquement une page du site, par exemple : www.mondomaine.fr/panier.php

Merci d'avance :)

Écrit par Dream Seychelles
Le 07/05/2013 à 08h08

Merci pour le tutoriel je finirai sans doute par me laisser tenter par un dédié, et à ce moment-là ton article me sera bien utile

Écrit par Christophe
Le 23/05/2013 à 12h56

@ Tonyok75

Si tu souhaites sécuriser une seule page, tu dois :

1) Activer le SSL sur www.mondomaine.fr comme indiqué dans ce tutoriel ;

2) Insérer un code PHP dans ta page "panier.php"

// Si le port utilisé est 80 (http), on redirige https (443)
if ( $_SERVER["SERVER_PORT"] == '80' ) {
header("Location: https://www.mondomaine.fr/panier.php");
exit();
}

?>

Pour ceux qui ne savent pas quel certificat SSL choisir (il en existe des dizaines...), j'utilise régulièrement ce site :

https://www.wistee.fr/certificat-ssl/comparateur.php

A+

Écrit par Philippe
Le 01/10/2014 à 07h52

Bonjour,

Merci pour ce tutorial qui m'a aidé à mettre en place un https... Enfin à essayer, car ça a viré à la cata. Toutes mes configurations CRON ont disparu pendant l'opération. Avez-vous une idée d'où ça peut venir ?

Merci !

Écrit par Hervé
Le 01/10/2014 à 10h35

Philippe

Non, lorsque j'ai installé le certificat SSL sur l'un de mes sites, les tâches cron n'ont pas disparu. C'est surprenant, car on ne touche pas au fichier crontab.

Écrit par José
Le 22/12/2014 à 12h06

Bonjour,

Je viens de tomber sur cet article très intéressant. Je comprends pas cette histoire d'IP failover ? J'ai un serveur dédié OVH, et je voudrai passer des sites en https également.

Merci beaucoup
José

Les commentaires de ce billet sont fermés

Haut de page