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.
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. :-)
10 réflexions sur ce billet
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 !!!
Le 23/04/2013 à 14h57
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.
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
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 :)
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
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+
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 !
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.
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é
La création de site Internet sur mesure est le coeur de métier de l'agence web Infini'click.
D'autres prestations sont également proposées, découvrez-les !
- Tutoriel : installer un serveur Debian (wheezy)
- Tutoriel : Installer un certificat SSL
- Piwik : monitorez tous vos sites discrètement
- Tutoriel Paypal : Intégration et configuration du paiement en ligne
- Tutoriel PayPlug : intégration au panier d'achat
- Référencement des images : l'état de l'art
- Des onglets en CSS avec JQuery
- Gildas le 04/03/2022 à 18:00
Nop j'ai que le require('fpdf.php) ; Mais pas... - Hervé le 04/03/2022 à 17:58
Gildas Tu n'appelles pas de fichier externe via un... - Gildas le 04/03/2022 à 17:50
merci de ton retour rapide, effectivement dans ma... - Hervé le 04/03/2022 à 17:45
Bonjour Gildas Effectivement, 8 ans ça fait un bail.... - Gildas le 04/03/2022 à 17:37
Bonjour Hervé, Bon j'arrive 8 ans après la... - Olivier le 16/01/2022 à 23:09
C'est clair que les actions réalisées ne correspondent...