Certicat SSL : générer où

Quelle commande pour générer un certificat SSL gratuit ?
Je ne retrouve plus le fil où j’avais généré le mien.
Merci

J’ai bien trouvé ça sur le wiki mais ça me fait poser des questions avant de faire.
Mon but est de créer un serveur mail pour quelqu’un qui ne connait rien en matière de linux.
Je pourrai intervenir assez souvent mais ça pose toujours problème.
Mes questions sont donc :
L’avertissement dont il est question ne risque-t-il pas de faire peur aux correspondants qui voudront le joindre ?
La validité d’un an est-elle modifiable ?
Au bout de ce délai, est-ce facile à prolonger ou faut-il refaire ?
Merci.

Créer un certificat autosigné

Attention, ce type de certificat génèrera un avertissement dans le logiciel client, mais vous permettra d’utiliser SSL si le client l’accepte. C’est génant si vous voulez créer un site d’e-commerce, mais suffisant pour chiffrer les connexions sur un serveur perso.
directement

$ openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout mykey.pem -out mycert.pem

Ceci crééra un certificat autosigné valable un an (365 jours) chiffré en RSA 2048bits dans le fichier mycert.pem, et la clé privée dans mykey.pem.

il existe des sites genre startSSL qui te signent gratuitement ton certificat si tu es un particulier.

Il y a aussi let’s encrypt

1 J'aime

Je ne lis que du bien de Let’s Encrypt, une autorité de certification gratuite qui émet des certificats de 3 mois. Ça te permet (en plus) d’éviter l’écueil du certificat auto-signé qu’est l’alerte de sécurité qui peut effrayer certains visiteurs. Leur marque de fabrique, si on peut dire, est d’essayer de rendre la demande de certificats accessibles à tous, par l’automatisation de la demande et des réponses aux challenges. Tu pourras en lire plus sur leur site.

Le site officiel de Let’s Encrypt : https://letsencrypt.org/
Leur doc : https://letsencrypt.readthedocs.org/en/latest/

J’ai sauté le pas récemment, je serai ravi de détailler ma procédure si tu décides de te lancer.

Il y a maintenant un paquet letsencrypt dans backport qui gère bien le truc.

1 J'aime

Très intéressant tout ça, et oui, je suis intéressé par un éventuel développement.
Je repose une question qui n’a pas eu réponse :
Au bout de ce délai, ici 3 mois, ailleurs, il est question d’un an, que faut il faire, recommencer la demande ou il y a prorogation de la validité :?:

1 J'aime

Pas de prorogation (que je sache), il faut refaire une demande. C’est un des points forts de Let’s Encrypt : vu que tu utilises leur client qui automatise tout, le “renouvellement” du certificat (en fait une nouvelle demande) est grandement facilité.

Donc je ne sais pas si tu as regardé le principe de Let’s Encrypt, mais il repose sur leur client du même nom. Tu as, comme le mentionne mazarini, un paquet dans les backports que tu peux installer et qui te fournit la commande letsencrypt. Cette commande lance le client qui te permet de faire toutes les actions nécessaires auprès de Let’s Encrypt, l’autorité de certification, notamment une première demande puis les renouvellements.

Il y a un article récent sur LinuxFr qui donne un retour d’expérience intéressant : http://linuxfr.org/news/reparlons-de-let-s-encrypt
L’auteur souligne une des faiblesses de cette automatisation complète : la nécessite de lancer le client Let’s Encrypt sur ton serveur sous root. Donc il développe une méthode pour désautomatiser un peu et ne lancer le client qu’en simple utilisateur. Mais c’est du coup un peu plus compliqué.

Donc tu as le choix : soit tu fais confiance au client officiel (empaqueté dans letsencrypt), soit tu utilises la méthode dérivée proposée dans l’article LinuxFr. Pour ma part j’ai décidé de faire un peu plus à la main, en plus ça m’a appris des choses sur les certificats. En gros, je génère le certificat sur ma machine locale (PC de bureau), je fais les manips de vérification (challenges) sur le serveur comme me le demande le client letsencrypt, puis j’envoie le certificat sur le serveur. Je te colle ci-dessous ce que j’ai fait exactement :

##Sur la machine locale

  1. aptitude -R install letsencrypt.

  2. $ openssl genrsa 4096 > domain.key
  3. $ openssl req -new -sha256 -key domain.key -subj “/” -reqexts SAN -config <(cat /etc/ssl/openssl.cnf <(printf “[SAN]\nsubjectAltName=DNS:tondomaine.tld,DNS:www.tondomaine.tld”)) > cert.csr
  4. $ letsencrypt certonly --config ~/.config/letsencrypt/letsencrypt.conf --csr cert.csr --cert-path cert.pem --chain-path chain.pem --fullchain-path cert+chain.pem --authenticator manual --domains tondomaine.tld, www.tondomaine.tld

##Sur le serveur distant

  1. Suivre les indications données par letsencrypt sur la machine locale, et créer pour chaque subjectAltName le fichier requis dans /var/www/.well-known/acme-challenge/ avec le contenu indiqué puis valider sur la machine locale.

  2. Rapatrier les fichiers 0000_cert+chain.pem et domain.key dans le dossier /etc/nginx/letsencrypt/ et les donner à root : chown root:root 0000_cert+chain.pem domain.key.

  3. Indiquer à Nginx d’utiliser les certificats pour servir en HTTPS (/etc/nginx/sites-available/defaults) :
    3.1. ssl_certificate /etc/nginx/letsencrypt/0000_cert+chain.pem;
    3.2. ssl_certificate_key /etc/nginx/letsencrypt/domain.key;

  4. Relancer nginx : systemctl restart nginx.

  5. Lancer un navigateur sur https://www.tondomaine.tld et vérifier le certificat.

  6. Si tout a fonctionné, supprimer les fichiers utilisés pour le challenge ACME : # rm /var/www/.well-known/acme-challenge/*

##Les sources que j’ai utilisées

Voilà, je serai ravi de donner plus d’explications, mais avec le manuel du client letsencrypt et l’article de LinuxFr tu devrais déjà avoir de quoi potasser :wink:

1 J'aime

En fait, j’attends 3 mois pour voir si le renouvellement marche tout seul.

Je lance par cron la commande de renew toutes les semaines. Pour les 2 premières semaines, la commande me dit :

The following certs are not due for renewal yet:
/etc/letsencrypt/live/www.XXXXX.com/fullchain.pem (skipped)
No renewals were attempted.

J’ai plus confiance dans les mainteneurs Debian que dans mes compétences…

Merci à vous deux pour toutes ces précisions.
Beaucoup de travail en vue pour assimiler.

Ouais enfin, quand tu lis le disclaimer de Let’s Encrypt :

The Let’s Encrypt Client is BETA SOFTWARE. It contains plenty of bugs and rough edges, and should be tested thoroughly in staging environments before use on production systems.

Donc j’ai été très réceptif aux arguments développés dans la dépêche de LinuxFr quant à l’exécution d’un script en beta avec les droits root sur un serveur en production. C’est ce qui m’a poussé à désautomatiser un peu ma procédure. Ceci dit, je pense que sur une installation très standard (un LAMP type), le client officiel doit très bien faire le job.

J’utilise effectivement let’ s encrypte pour mon site web. J’ai supposé que s’il avait été mis sur Jessie, c’est qu’il n’y avait pas de problème. La dernière fois que j’ai regardé, grub2 était en béta, mais ne posais pas de problème.
Edit : Je suis croyant, j’ai été faire bruler un cierge pour Saint Jessie :slightly_smiling:

C’est un site vitrine et pour le moment, j’ai juste vérifié que ca marchait en https et en http, mais je basculerai en https seul plus tard ; après avoir vu comment se passe le renouvellement et comme régler les liens de mon site qui reste en http. Pour le moment je me bats avec IPv6.

Des petites nouvelles sur le “renouvellement” de certificat auprès de Let’s Encrypt.

  • Ils envoient un mail 10 jours et la veille de l’expiration pour rappeler de renouveler.
  • Le renouvellement est en fait une nouvelle demande complète.

Et ça marche toujours aussi bien :slight_smile:.