Chez oim, forum libreChez oim, forum libre

favicon Google Recherche avancée  

Sans gluten

Ce site web est garanti sans gluten !
(Peut contenir des traces d'oeuf, de fruits à coque, de lait, de crustacés, de végétariens)



Pages: [1]   En bas

Auteur Sujet: Tuto, LetsEncrypt: Installer un certificat de sécurité SSL sous Windows ou Linux  (Lu 347 fois)

alex

  • Administrateur
  • Dictionnaire ambulant
  • ********
  • Hors ligne Hors ligne
  • Sexe: Homme
  • Messages: 14.855
  • Proprio officiel chez oim !




Introduction
Risque de sécurité avec les clés RSA
Commençons
Préparation pour Windows
Préparation pour Linux
Créer les clés et le certificat CSR
Obtenir le certificat SSL
Installer le certificat
Observer le contenu du certificat SSL


Mise à jour du 17 septembre 2017
Mise à jour des liens vers la nouvelle version des exécutables Windows - v0.27


Nouveau, c'est pour très bientôt ! (ce tuto sera mis à jour à ce moment là) :)
En janvier 2018, Lets Encrypt délivrera des certificat Wildcards ! :ic:
Cela signifie que Lets Encrypt délivrera des certificats pour votre domaine mais aussi tous ses sous domaines, même si ils n'existent pas encore à la création du certificat !
Un certificat wilcards se présente pour supporter les domaines sous la forme *.example.com
Vivement 2018 ! :)


(Haut de Page)
CE TUTO EST CONÇU POUR LES SERVEURS APACHE !
Vous pouvez le suivre pour obtenir votre certificat, mais les paramétrages sont destinés à APACHE !

ATTENTION ! Ce tuto est de niveau "geek à l'aise avec le SSL et la configuration d'un serveur Apache !"
Plus vous en saurez, mieux ce sera. Si vous êtes un noob, il est possible d'y arriver, mais ce ne sera pas facile pour vous !
De toute façon, comme d'hab, pour les questions, insultes, menaces, vous pouvez répondre. C'est pas la peine d'être inscrit. :)


Salut tous,

Dans ce nouveau tuto, je vais essayer de vous aider à créer un certificat de requête (CSR) afin d'obtenir un vrai certificat de sécurité auprès de Lets Encrypt.
Ensuite, nous installerons ce certificat sur notre serveur pour pouvoir bénéficier d'une connexion sécurisée.
Lets Encrypt est aujourd'hui une autorité de certification autorisée à délivrer des certificats de sécurité gratuits reconnus par tous les navigateurs web.
Le seul vrai problème de Lets Encrypt et qu'ils délivrent des certificats valables 90 jours seulement. A la longue, quand vous serez familiarisé avec la façon de faire, ce ne sera plus gênant, d'autant plus qu'il est possible d'automatiser le renouvellement.

Il existe des outils gratuits entièrement automatisés (comme "certbot", par exemple) pour obtenir et renouveler les certificats de sécurité.
Ces outils ont un gros inconvénient. Ils fonctionnent sur des config "classiques".
Ici, vous le verrez, nous avons une configuration "exotique", avec des sous domaines, qui ne fonctionnerait pas avec certbot ou n'importe quel autre outil automatique.


Ce tuto est parfaitement valable pour Linux !
Il vous suffit d'avoir Perl sur votre serveur et d'avoir installé le module Crypt::LE qui vous donnera accès au script le.pl
C'est la version exécutable de ce script que nous utiliserons pour obtenir notre certificat de sécurité sous Windows.
Sous Linux, la démarche restera la même et la syntaxe sera rigoureusement identique. Il suffira juste de convertir le.exe en le.pl, c'est tout.


(Haut de Page)
ATTENTION ! RISQUE DE SÉCURITÉ MAXIMAL !

Dans ce tuto, nous allons manipuler ce qu'on appelle des clés RSA.
Il existe deux types de clés RSA qui sont indissociables. La clé privée et la clé publique. Ces 2 clés sont liées, elles sont inséparables.
Sur votre certificat de sécurité, la clé publique apparaitra et c'est entièrement normal. La clé publique, comme son nom l'indique, est destinée à être rendue publique.
La clé privée est secrète et elle doit le rester ! Elle ne doit être divulguée sous aucun prétexte ! Seul votre site a besoin de la clé privée. Tous les autres sites de la planète ne doivent pas connaitre cette clé ! Même si c'est demandé gentiment, ne donnez jamais votre clé privée !
C'est cette clé qui fera qu'on sait que c'est vous et votre certificat sur un site sécurisé. C'est cette clé qui servira à établir une connexion sécurisée sur votre site.
Si quelqu'un connait cette clé privée, il pourra créer un "vrai faux certificat" et/ou intercepter la clé générée pour établir la connexion sécurisée et ainsi lancer une attaque de l'homme du milieu.
J'insiste et j'insiste lourdement ! Votre clé privée doit rester secrète !



D'une façon générale, quand vous travaillez avec des clés RSA, la clé privée est secrète, elle est à vous seul.
La clé publique peut être divulguée sans aucun souci et elle doit quasiment toujours être divulguée.




(Haut de Page)
Commençons

La façon de faire est la même sous Linux que sous Windows. Quand une manipulation spéciale pour un système sera demandée, cela sera précisé.

Sur votre serveur, Rendez vous à la racine de celui ci (le point d'entrée où se trouve index.php ou index.html). La racine de votre site est le dossier où atterrissent chaque visiteur ou membre.
Créez un dossier que vous appellerez .well-known/.
Ensuite, dans ce dossier .well-known/, créez un autre dossier qui s'appellera acme-challenge/.
Voilà, votre site contient les dossiers .well-known/acme-challenge/, il est prêt pour répondre aux requêtes de vérification de Lets Encrypt.


(Haut de Page)
Maintenant, nous allons télécharger l'outil LE de la bibliothèque Crypt::LE qui sera indispensable pour générer vos clés et votre certificat de requête en vue d'obtenir un vrai certificat signé par Lets Encrypt.

Pour Windows, rendez vous ici et téléchargez la version qui correspond à votre machine :
- Windows 32 Bits
- Windows 64 bits

Ce tuto est maintenu à jour, mais si vous voulez être certain de télécharger une version toujours à jour, vous pouvez aller directement sur la page Github du projet.
Les téléchargements sont en bas de page.


(Haut de Page)
Sous Linux avec Perl, utilisez CPAN.
Installez le module Crypt::LE
Code
cpan -i Crypt::LE 
Si il vous manque des modules dont Crypt::LE a besoin, cela sera indiqué et l'installation stoppée. Installez les dépendances indiquées et reprenez l'installation de Crypt::LE
Les dépendances PERL s'installent automatiquement avec Crypt::LE.

En cas de gros problème pour installer les dépendances, n'omettez pas le paquet openssl-devel.
Vous êtes bien conscient que OpenSSL est absolument nécessaire, si ce n'est pas le cas, stoppez tout ici. Ce n'est pas la peine d'aller plus loin, ce sujet semble vous dépasser. Faites attention si vous continuez sans savoir ce que vous faites !

Pour CentOS/Fedora/Redhat
Code
yum install openssl-devel

Ubuntu/Debian :
Code
sudo apt-get install libssl-dev


Si vous avez Perl mais n'avez pas CPAN, installez le :
Pour CentOS/Fedora/Redhat
Code
yum install perl-CPAN -y

Ubuntu/Debian :
Code: bash
apt-get install build-essential


Vous pouvez vous aider avec le site ZeroSSL.com qui pourra même vous aider à obtenir des certificats "auto-signés" pour travailler en local et bien plus encore lorsque vous aurez votre CSR (ne donnez jamais votre clé privée ! Un CSR, oui. Une clé, non !).


Pour Windows, dans chaque fichier .zip, vous trouverez un fichier le32.exe ou le64.exe selon la version choisie.
Renommez votre fichier en le.exe
Ca me permettra de donner les mêmes instructions pour Windows 32bits et 64bits. Rassurez vous, ça ne changera rien.

Sous Linux, vous utiliserez le.pl qui présente exactement la même syntaxe que pour Windows.


(Haut de Page)
Entrons dans le vif du sujet en créant les clés et le certificat de requête (CSR)

Imaginons que nous souhaitons un certificat pour le domaine example.com
Ce domaine possède les sous domaines suivants et nous voulons aussi un certificat pour ces sous domaines :
www.example.com
static.example.com
mail.exemple.com



Créez un dossier qui ne soit pas accessible au public et déplacez-y le.exe (le.pl sera accessible de partout).

Sous Windows, avec Wamp, le dossier créé sera par exemple : C:\Wamp\ssl dans le cas où la racine du site est C:\Wamp\www
Sous Linux, ce dossier pourra être : /var/ssl dans le cas où la racine du site est /var/www

C'est vous qui choisissez comme vous en avez envie. Cependant, dites vous bien que le dossier devra être accessible pour le serveur.
Dans ce dossier seront stockés la clé privée et le certificat de sécurité. Le public ne doit pas pouvoir accéder à ce dossier.
Soyez vigilant ! Pas de config du style example.com/ssl, ce serait la plus grosse boulette que vous ayez faite.


Placez vous dans le dossier créé et ouvrez une invite de commande (la console sous Linux)
Sous Windows, appuyez sur la touche "Windows" et entrez "CMD" suivit de entrée. Sous Linux, ouvrez la console ou le shell, c'est pareil.
Rendez vous dans le dossier créé, pour Windows :
Code
cd \wamp\ssl
Ou, sous Linux :
Code
cd /var/ssl


Sous Windows, nous allons utiliser le.exe et entrer ce qui suit :
Code: perl
le.exe --key account-key.key --email "hostmaster@example.com" --csr example.com.csr --csr-key example.com.key --domains "example.com,www.example.com,static.example.com,mail.example.com" --generate-missing --generate-only

Sous Linux, vous entrerez :
Code: perl
perl le.pl --key account-key.key --email "hostmaster@example.com" --csr example.com.csr --csr-key example.com.key --domains "example.com,www.example.com,static.example.com,mail.example.com" --generate-missing --generate-only

Bien entendu, vous modifierez le nom de domaine et le mail pour les remplacer par les votres. (Il n'existe aucun risque de SPAM avec le mail)

Suite à ceci, vous allez obtenir plusieurs fichiers :
account-key.key : Il s'agit de votre clé privée vous permettant de vous identifier chez Lets Encrypt. Il s'agit de la clé de votre compte, elle n'a rien à voir avec votre certificat mais elle doit aussi rester secrète. Cette clé peut être utilisée pour révoquer votre certificat.
Le mail fourni ne sera utilisé que pour vous prévenir quand il faut renouveler le certificat.
example.com.csr : C'est ce fichier qui contient votre demande de certificat. Il a été signé avec votre clé privée et il contient la clé publique.
example.com.key : Il s'agit de votre clé privée qui doit rester secrète. C'est cette clé qui servira sur votre serveur pour établir une connexion sécurisée. C'est également cette clé qui fera de vous le propriétaire officiel de votre certificat de sécurité.
Si vous perdez cette clé, votre certificat ne sera plus utilisable et vous êtes bon pour en demander un autre avec une nouvelle clé.


(Haut de Page)
Demandons notre certificat !

Attention ! Chacun des domaines ou sous domaines indiqués dans le CSR, le certificat de requête, doit pointer sur votre serveur et avoir accès au dossier /.well-known/acme-challenge/
Si ce n'est pas le cas, vous n'aurez pas votre certificat.

Tout est en règle ? Allons-y !

Pour Windows, la demande sera sous cette forme :
Code: perl
le.exe --key account-key.key --email "hostmaster@example.com" --csr example.com.csr --crt example.com.crt --generate-missing --unlink --path "C:\wamp\www\.well-known\acme-challenge" --live
Pour Linux, ce sera pareil mais avec le.pl :
Code: perl
perl le.pl --key account-key.key --email "hostmaster@example.com" --csr example.com.csr --crt example.com.crt --generate-missing --unlink --path "/var/www/.well-known/acme-challenge" --live

Bien sûr, modifiez le chemin après le paramètre --path pour indiquer où se trouve /.well-known/acme-challenge selon votre configuration.
Le.exe ou le.pl créera des fichiers de signature dans le dossier afin de valider vos domaines et sous domaines qui seront lus par Lets Encrypt pour validation puis il détruira ces fichiers immédiatement après.

Si tout se passe bien, vous allez obtenir votre certificat. Dans notre exemple il s'appellera example.com.crt
Il ne reste plus qu'à l'installer sur le serveur.

Si vous souhaitez vous entrainer, retirez le paramètre "--live". Vous obtiendrez un "Fake certificat", un faux certificat. Vous replacerez ce paramètre "--live" quand vous serez prêt.
Ca vous permettra d'étudier le certificat obtenu afin de vérifier que tout est bien là. Ces fakes certificats n'ont aucune valeur, vous pouvez en demander autant que vous le voulez pour vérifier que tout ce passe bien. ;)



(Haut de Page)
Installer le certificat sur le serveur

Vous avez besoin de 3 choses.
- La clé privée.
- Le certificat de vos domaines et sous domaines.
- Le certificat intermédiaire (normalement, ce certificat est fourni avec le certificat des domaines, il est compris dedans) et est compris par Apache 2.4 avec la directive Apache SSLCertificateChainFile.
On va faire plus simple, pour que Apache 2.2 soit utilisable, téléchargez le certificat intermédiaire ou Bundle ici et stockez le dans le même dossier que les autres.

Attention quand même. Si vous utilisez Apache 2.2, pensez à mettre à jour votre version de Apache.
Il n'est jamais recommandé d'utiliser de vieilles versions de Apache/PHP.


Maintenant, rendez vous dans la configuration de Apache.
Vous devriez trouver un fichier httpd-ssl.conf dans le dossier extra/

L'arborescence est comme ceci à peu de choses prêt :
httpd.conf  ---
                    |
                 extra/ ---
                              |
                      httpd-ssl.conf


Vous pouvez vous inspirer de httpd.conf pour avoir une idée des chemins.

Dans ce fichier, nous allons créer un Virtual Host puis nous réglerons les chiffrages autorisés.
En tête de fichier, entrez ce qui suit en modifiant les chemins pour qu'ils pointent vers vos certificats (vous avez 2 certificats, le votre. Mais aussi le Bundle, celui de l'autorité) et votre clé privée.
Code: apache
Listen 443

<VirtualHost *:443>

#   General setup for the virtual host

    ServerName example.com
    ServerAlias www.example.com
    ServerAlias mail.example.com
    ServerAlias static.example.com
    DocumentRoot "C:/wamp/www"
    ServerAdmin noreply@example.com

#   SSL Engine Switch:
#   Enable/Disable SSL for this virtual host.
    SSLEngine on
    SSLCertificateFile "c:/wamp/ssl/example.com.crt"
    SSLCertificateKeyFile "c:/wamp/ssl/example.com.key"
    SSLCertificateChainFile "c:/wamp/ssl/lets-encrypt-x3-cross-signed.pem"

</VirtualHost>
Sous Linux, vous n'avez qu'à simplement modifier les chemins des dossiers (/var/ssl dans notre exemple).

Ensuite, nous allons nous intéresser aux chiffrages autorisés ainsi qu'aux logs.

Code: apache
    CustomLog "C:/wamp/logs/access_ssl.log" \
              "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
ErrorLog "C:/wamp/logs/apache_error.log"
    TransferLog "C:/wamp/logs/access.log"

# modern configuration, tweak to your needs
SSLProtocol             all -SSLv3 -SSLv2 -TLSv1.1
SSLCipherSuite          HIGH:MEDIUM:!RC4:!3DES:!DES:!IDEA:!MD5:!aNULL:!eNULL:!EXP
SSLHonorCipherOrder     on
SSLCompression          off
SSLSessionTickets       on

Le protocole SSL n'est plus assez sûr, il présente des vulnérabilités, il est donc interdit sur notre serveur. Seul le TLS est à la hauteur.
Vous remarquerez que le TLS 1.1 n'est pas pris en charge. Aucun appareil ne l'utilise. C'est soit TLS 1.0, soit TLS 1.2.
TLS 1.1 ne sert à rien du tout. Vu qu'il ne sera pas utilisé, nous l'interdisons donc. Ca ne sert à rien de laisser une porte ouverte et ce n'est pas prudent.

Ensuite, nous autorisons certaines suites de chiffrage parmi les plus solides (HIGH:MEDIUM) et nous refusons les autres moins fiables (!3DES:!DES:!IDEA etc.).

Une fois redémarré votre serveur (le redémarrage du serveur est une obligation pour qu'il charge le certificat de sécurité) sous Windows ou le service HTTPD rechargé sous Linux, rendez vous sur ce site : https://www.ssllabs.com/ssltest/ pour tester votre installation SSL.
En espérant que tout va pour le mieux.

Et voilà, désormais votre site est accessible en HTTPS ! :)


ATTENTION !
Un certificat de sécurité n'a rien de secret et il ne faut pas y "cacher" des sous domaines que vous souhaitez garder pour vous.
Votre certificat va participer à la "transparence des certificats de sécurité" et il sera vérifié par tous les géants du web.
Vous pourrez le retrouver ici : https://crt.sh/

La transparence des certificats est nécessaire afin qu'il n'y ait pas de "triche" comme ça a déjà été le cas avec StartSSL (Startcom) et Woosign qui a été gravement puni en voyant tous ses certificats et ceux de ses clients invalidés.
Ce site en a été victime et notre certificat délivré par Startcom et valable 3 ans n'a plus aujourd'hui aucune valeur. Nous avons donc été obligés de changer dans l'urgence. :iq:



(Haut de Page)
A quoi va ressembler notre certificat ?

Prenons le certificat de ce site pour se simplifier la vie. Je vous le répète, un certificat de sécurité n'a rien de secret, vous pouvez récupérer le certificat de ce site ou d'un autre si ça vous chante.
Par contre, si vous n'avez pas la clé privée du certificat, il pourra servir uniquement de décoration au dessus de la télé si vous trouvez ça joli...
Ouvrez votre certificat.


La première chose que vous remarquerez, c'est le chemin d'accès jusqu'à l'autorité de certification qui permettra à votre navigateur web de valider le certificat ou pas.





Ensuite, en regardant plus loin, vous verrez apparaitre pour quel site le certificat a été délivré.
Ca se passe à la ligne "Objet"





Et ensuite, vous aurez la liste des autre domaines ou sous domaines validés pour lesquels votre certificat fonctionnera.
Il s'agit de la ligne "Autre nom de l'objet".





Faites très attention aux dates de validité du certificat ! Le certificat devra être renouvelé avant sa date de péremption.
Les navigateurs web refuseront d'utiliser un certificat qui n'est plus valide. Ils seront tellement alarmistes que n'importe quel internaute ne prendra pas le risque d'utiliser un certificat périmé et ne viendra plus sur votre site.







IP archivée

alex

  • Administrateur
  • Dictionnaire ambulant
  • ********
  • Hors ligne Hors ligne
  • Sexe: Homme
  • Messages: 14.855
  • Proprio officiel chez oim !

Ah je vous l'avais dit ! C'est coton ! :jq:
Mais si vous êtes motivés, je suis là. Motivé avec un minimum de connaissances quand même, hein ? ;)
IP archivée

alex

  • Administrateur
  • Dictionnaire ambulant
  • ********
  • Hors ligne Hors ligne
  • Sexe: Homme
  • Messages: 14.855
  • Proprio officiel chez oim !

Mise à jour du 22 août 2017
Mise à jour des liens vers la nouvelle version des exécutables - v0.25
IP archivée

maximus23

  • Observateur
  • Pipelette pathologique
  • ******
  • Hors ligne Hors ligne
  • Sexe: Homme
  • Messages: 1.608
  • Grand chevalier du mot de passe
      • ®Smf® Solutions

Alors startcom ils sont toujours excommunié ?
IP archivée
Amitiés et à bientôt...
Have a nice day...

alex

  • Administrateur
  • Dictionnaire ambulant
  • ********
  • Hors ligne Hors ligne
  • Sexe: Homme
  • Messages: 14.855
  • Proprio officiel chez oim !

Oui, je crois, j'ai pas regardé.
La punition devait durer 1 an, mais ils ont décidé de créer une nouvelle autorité de certification qui n'est toujours pas reconnue.

A leur place, j'aurais pris la punition et j'aurais attendu 1 an. :iz:
IP archivée

alex

  • Administrateur
  • Dictionnaire ambulant
  • ********
  • Hors ligne Hors ligne
  • Sexe: Homme
  • Messages: 14.855
  • Proprio officiel chez oim !

Pour revenir sur Startcom et Woosign, ça revient tout doucement. :)
Cette semaine, j'ai testé un certificat délivré par leur nouvelle autorité de certification qui ne l'est pas encore tout à fait.

Le certificat passe chez Microsoft et son Internet Explorer, ça devrait donc être pareil pour Edge.
Il passe aussi chez Apple et son Safari (Merci Poulet pour le test).

C'est pas la panacée, mais c'est un début.
Il reste Mozilla et son Firefox mais aussi le navigateur Opera qui fonctionne avec Webkit, le moteur de Mozilla. Je ne peux pas dire si Firefox et Opera ont une politique différente dans la gestion des certificats.
Il reste aussi Google et son Chrome.

Autant dire que c'est pas encore gagné. Il reste 3 navigateurs majoritaires à convaincre que Startcom et Woosign peuvent être des autorités de certification dignes de confiance.

Pour les nuls, je tiens à vous rassurer. Si un certificat est fabriqué maison, et donc pas accepté d'office par les navigateurs, ou délivré par une autorité de certification, ça ne change absolument rien. Les connexions seront sécurisées de la même façon avec un certificat "maison" qu'avec un certificat "honnête".
La seule différence est que le certificat "honnête" garanti que vous êtes sur le bon site, des vérifications ont été faites avant que le certificat ne soit délivré.
Sinon, ça ne remet pas en cause la sécurisation de votre connexion. Même un certificat périmé peut servir pour sécuriser une connexion !
Ce n'est pas très élégant, puisque tous les navigateurs vont s'affoler en vous disant que c'est certain, "un dangereux pirate essaye de vous avoir", mais bon...

IP archivée

alex

  • Administrateur
  • Dictionnaire ambulant
  • ********
  • Hors ligne Hors ligne
  • Sexe: Homme
  • Messages: 14.855
  • Proprio officiel chez oim !

Mise à jour : le 30 septembre 2017
Ajout de liens pour naviguer dans le tuto sans avoir à tout "dérouler".

IP archivée
Pages: [1]   En haut
 

+ Réponse Rapide

Page générée en 0.136 secondes avec 22 requêtes.