Sécuriser facilement et gratuitement un site avec HTTPS

Publié initialement à : https://korben.info/securiser-facilement-gratuitement-site-https.html

Vous connaissez sans doute tous, Let’s encrypt qui permet d’avoir un certificat SSL gratuit pour basculer son site en HTTPS. Mais connaissez-vous Certbot, un outil proposé par l’EFF (Electronic Frontier Foundation) qui permet d’obtenir en une ligne de commande son certificat et de configurer dans la foulée son serveur web ? Je n’avais pas encore…

2 « J'aime »

Quelqu’un a une idée concernant un vhost qui n’a pas de nom de domaine ?

J’ai un petit server mais sans NDD, dans mon site-enabled : server_name _;

Or le script veut un domaine …

Avec nginx il ne faut pas oublier de recharger la conf pour qu’il prenne en compte le nouveau certificat.
Rajouter “&& service nginx reload” a la fin de la tache cron de certbot suffit amplement.

Bonjour,

je voudrais rajouter un petit point sur ton tuto.

Les certificats Let’s Encrypt sont valables 3 mois.
Lorsque tu demande de renouveler tes certifs, le script coupe ton serveur web,
demande aux serveurs de Let’s Encript de vérifier que les domaines dont tu demande le certif
pointent bien vers ton serveur.
Et enfin si c’est le cas, et que tes certificats ne sont pas a jours, il t’envois les nouveaux, et redémarre ton serveur.

Tout ça pour dire que si tu laisse la cron comme tu l’as mis, tu va couper ton serveur web pendant environ 45 secondes deux fois par jour (et dans notre domaine on connais tous la loi de Murphy…) sans compter le spam que tu va créer auprès des serveurs de Let’s Encrypt si tout le monde suit ton tuto.

Donc pour rester raisonnable, le faire une fois par mois serait plus efficient.
(Et si jamais ton certificat va expirer, Lets Encrypt t’envois un mail, d’ailleurs des fois il le fait quand c’est pas vrais =p )

Il n’y a pas de réponse pour ça, la politique de Let’s Encrypt est assez claire sur le sujet sur leurs forums, seuls des noms de domaines accessible par leurs serveurs recevront un certif.

Ni un nom arbitraire, ni une ip ne feront l’objet d’une délivrance de certificat.

Oki, c’est bien ce que je pensais. Bon, merci :slight_smile:

Tu peux t’en procurer un sur No-ip.com par exemple.

mauvais titre, “Sécuriser facilement et gratuitement un site avec HTTPS” voudrais dire que de passer son site en HTTPS le sécuriserai

2 « J'aime »

Pour ceux qui sont du côté obscur de la force, il y a un module Powershell qui fait la même chose.
ACMESharp, dispo sur GitHub.
Il est possible de valider un nom de domaine en ajoutant un record TXT à la zone DNS du domaine à valider. Très pratique pour les domaines qui n’ont pas de serveur web associé (ou si c’est une appliance ou un site sur lequel on n’a pas la main du tout).
Bonne journée :wink:

En équivalent j’utilise depuis quelque mois Easy Engine sur un serveur VPS, qui me permet de gérer différents environnements web avec certificat de chez Let’s encrypt en renouvellement automatique, l’installation d’un environnement se fait en une ligne de commande, d’autres ont testé cette solution ?

La coupure du serveur n’est pas nécessaire.

C’est vrai uniquement avec le plugin “standalone” qui “remplace” temporairement le serveur web existant pour effectuer les validations.
Mais il existe d’autres plugin qui permette de faire la validation via un module Apache ou Nginx, ou d’utiliser des méthode n’interférant pas avec le serveur web utilisé (webroot)

Quelqu’un sait comment générer un certif par domaine plutôt qu’un certif multi-domaines ?
J’ai l’impression que c’est le comportement par défaut de ne pas générer plusieurs certifs et j’ai du coup l’impression que ça rend mes sous-domaines visibles en jetant un oeil au certificat…
Quelqu’un a des retours là dessus ? Ou bien mes sous-domaines sont de toute façon visibles sur le net ? (je parle de domaines perso non indexés par les moteurs de recherche)

Tes domaines sont visibles sur https://crt.sh/?Identity=%&iCAID=16418

Tu as oublié dans ton cron de reloader la conf du serveur web. Comme les certificats sont placés en RAM, sans reload, les vieux certificats seront toujours servis.

1 « J'aime »

Je ne suis pas sur de comprendre… Comment trouves-tu des sous domaines, même en connaissant le domaine pricinpal avec ce site ? La recherche *.mondomaine.ext n’a pas l’air de fonctionner…
En gros je voudrais juste rendre plus difficile de trouver mes sous-domaines quand on est sur le domaine principal. Quelqu’un sait si c’est possible ?

ça peut sembler évident, mais let’s encrypt ne fonctionne que pour les sites internet, par pour les serveurs intranet

1 « J'aime »

Let’s Encrypt ne génère pas de wildcard (*.mondomaine.tld)
Par contre, aucun problème pour générer plusieurs certificat différents.
Il suffit de les faire un après l’autre, comme si les autres n’existaient pas (en utilisant la même adresse mail et sans recréer de compte à chaque fois)

1 « J'aime »

En même temps si quelqu’un sniff tes paquets sur ton réseau c’est que c’est un réseau pourri. HTTPS surcharge le réseau et les ordinateurs inutilement.

Let’s Encrypt publient tous les domaines sur lesquels ils ont délivré un certificat (Certificate Transparency).
Exemple de recherche pour un domaine récemment trouvé sur crt.sh https://www.google.com/transparencyreport/https/ct/#domain=victorias-emporium.co.uk&incl_exp=false&incl_sub=true

Donc soit tu crées un certificat unique pour ton domaine et ses sous-domaines et alors il suffit de voir ce certificat (en visitant ton domaine ou en allant sur crt.sh ou autre) pour retrouver les autres sous-domaines validés, soit tu crées des certificats indépendants et is se trouvent publiés individuellement et tout aussi trouvables (comme avec ce domaine britannique).

Qu’en est il pour ceux qui sont derrière Cloudlfare ?
j’obtient un magnifique ’ Failed to connect to 104.28.1.206:443 for TLS-SNI-01 challenge’
Quelqu’un a réussi avec cloudflare ?