Chez oim, forum libreChez oim, forum libre

 


Pages: 1 ... 3 4 5 [6]   En bas

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

Otomatic

  • Observateur
  • Saint patron des orateurs
  • *****
  • Hors ligne Hors ligne
  • Sexe: Homme
  • Messages: 571
  • Vieux geek assagi
      • Aviatechno
Tuto, LetsEncrypt: Installer un certificat de sécurité SSL sous Windows ou Linux
« Réponse #74 le: lundi 07 octobre 2019, 20:18 »
le: lundi 07 octobre 2019, 20:18

Bonsoir,
Non, je n'ai pas essayé, mais ça semble prometteur, le mod_md est très suivi et évolue vite. Lets Encrypt en local, c'est pas encore ça.
IP archivée
« La vie sans musique est tout simplement une erreur, une fatigue, un exil. » Friedrich Nietzsche.
« Ce n'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont forcément raison. » Coluche

alex

  • Administrateur
  • Dictionnaire ambulant
  • ********
  • Hors ligne Hors ligne
  • Sexe: Homme
  • Messages: 18.923
  • Proprio officiel chez oim !
Tuto, LetsEncrypt: Installer un certificat de sécurité SSL sous Windows ou Linux
« Réponse #75 le: lundi 07 octobre 2019, 20:28 »
le: lundi 07 octobre 2019, 20:28

Je vais regarder ça demain après midi (le matin je suis pas là, je vais me faire irradier dans un scanner :if:)

Ma plus grande peur, c'est que ce mod s'appuie sur Certbot et donc sur Python.
Très souvent, ce type de mod est développé pour Linux. Du coup, même si tu as Python installé sur ton Windows, ça ne fonctionne pas parce-que la bête cherche des chemins comme /etc ou /var
Mais bon, sait-on jamais ?! :)
IP archivée

alex

  • Administrateur
  • Dictionnaire ambulant
  • ********
  • Hors ligne Hors ligne
  • Sexe: Homme
  • Messages: 18.923
  • Proprio officiel chez oim !
Tuto, LetsEncrypt: Installer un certificat de sécurité SSL sous Windows ou Linux
« Réponse #76 le: mardi 08 octobre 2019, 19:18 »
le: mardi 08 octobre 2019, 19:18

Du coup, j'ai pas pu regarder aujourd'hui, journée de folie ! :kl:
https://chez-oim.org/index.php/topic,2263.0.html
IP archivée

alex

  • Administrateur
  • Dictionnaire ambulant
  • ********
  • Hors ligne Hors ligne
  • Sexe: Homme
  • Messages: 18.923
  • Proprio officiel chez oim !
Tuto, LetsEncrypt: Installer un certificat de sécurité SSL sous Windows ou Linux
« Réponse #77 le: mercredi 09 octobre 2019, 19:39 »
le: mercredi 09 octobre 2019, 19:39

Bon, ben cette histoire de mod_md, c'est pas gagné !

J'ai bien lu ce que la documentation Apache dit, mais aucun résultat de concret !
En global, c'est à dire en dehors des vhost, j'ai fait tout comme il faut :
Code
MDBaseServer off
MDCAChallenges http-01
MDCertificateAgreement accepted
MDCertificateAuthority https://acme-v02.api.letsencrypt.org/directory
MDPortMap http:80 https:433
MDPrivateKeys RSA 4096
MDRenewMode always
MDRenewWindow 30d
MDRequireHttps temporary
MDStoreDir "c:/ssl"

Ensuite, dans le vhost, j'ai fait aussi tout bien comme il faut :
Code
MDomain XXXXXXX www.XXXXXXX

<VirtualHost *:443>
# General setup for the virtual host
LoadModule php7_module "E:/wamp/bin/php/php7.2.4/php7apache2_4.dll"

ServerName XXXXXXX
ServerAlias www.XXXXXXX
DocumentRoot "E:/wamp/www"
ServerAdmin noreply@XXXXXXX

<MDomain XXXXXXX>
  MDCertificateFile "c:/ssl/XXXXXXX.cer"
  MDCertificateKeyFile "c:/ssl/XXXXXXX.key"
</MDomain>
Jusque là, pas de souci, le certificat est correctement chargé en remplacement des directives SSLCertificateFile & SSLCertificateKeyFile.

Par contre, Apache dit que si le certificat n'existe pas, il sera créé. Ce n'est pas le cas, j'ai une erreur indiquant que le certificat n'existe pas. :iz:
Je vais continuer à chercher, mais je serais d'avis d'attendre que ce module ne soit plus expérimental. Ca clarifierait les choses.


IP archivée

alex

  • Administrateur
  • Dictionnaire ambulant
  • ********
  • Hors ligne Hors ligne
  • Sexe: Homme
  • Messages: 18.923
  • Proprio officiel chez oim !
Tuto, LetsEncrypt: Installer un certificat de sécurité SSL sous Windows ou Linux
« Réponse #78 le: jeudi 17 octobre 2019, 18:30 »
le: jeudi 17 octobre 2019, 18:30

Ca y est, j'ai réussi ! :gq:

Ca tenait à un tout petit détail de rien du tout dans la config, mais c'était suffisant pour que les certificats restent en statique sans jamais être renouvelés, voir créés.

Du coup, j'en ai profité pour télécharger la dernière mise à jour pour Windows de ce mod_md.
Apache 2.4.41 fonctionne avec la 2.0.10 (qui est une beta) alors qu'il est possible d'avoir la 2.1.9 déjà toute compilée avec VS16 ou le VC15 et la 2.2.0 arrive ces jours ci (c'est la version finale).

Ce module se télécharge ici : https://github.com/nono303/mod_md/releases
Il suffit de télécharger le .zip de la dernière version, de décompresser et de copier/coller le module mod_md.so, compilé avec le VC++ choisi, dans le dossier modules de Apache en remplacement de l'ancien.


Ensuite, allons-y. Pour l'exemple, on demandera un certificat pour example.com et deux sous domaines.
Tout à la fin de HTTPD.CONF copier/coller ce qui suit :
Code
<IfModule mod_status.c>
    <Location "/server-status">
        SetHandler server-status
        Require local
    </Location>

    <IfModule mod_md.c>
        <Location "/md-status">
            SetHandler md-status
            Require local
        </Location>
    </IfModule>
</IfModule>

<IfModule mod_md.c>
    MDBaseServer off
    MDCAChallenges http-01
    MDCertificateAgreement accepted
    MDCertificateAuthority https://acme-v02.api.letsencrypt.org/directory
#   MDCertificateAuthority https://acme-staging-v02.api.letsencrypt.org/directory
    MDCertificateProtocol ACME
    MDCertificateStatus on
    MDMustStaple on
    MDPortMap http:80 https:443
    MDPrivateKeys RSA 4096
    MDRenewMode always
    MDRenewWindow 30d
    MDRequireHttps temporary
    MDStoreDir "c:/ssl/md"
</IfModule>

Ensuite, au dessus de votre VHOST et comme VHOST, entrez ceci : (Attention ! On ne donne plus de certificat/clé dans le VHOST, c'est Mod_MD qui se charge de tout !)
Code
<MDomain example.com auto>
    MDMember www.example.com
    MDMember mail.example.com

    MDCertificateFile "c:/ssl/md/domains/example.com/pubcert.pem"
    MDCertificateKeyFile "c:/ssl/md/domains/example.com/privkey.pem"
</MDomain>

<VirtualHost *:443>
    ServerName example.com
    ServerAlias www.example.com
    ServerAlias mail.example.com

    ServerAdmin admin@example.com

    DocumentRoot E:/wamp/www

    SSLEngine on

    # Ne spécifier aucun certificat ni clé à la suite, Mod_MD se charge de tout
</VirtualHost>

Bien entendu, il ne faudra pas oublier de créer un alias et une petite config pour les serveurs Lets Encrypt dans le dossier Alias de Wamp, afin que Lets Encrypt puisse librement accéder au dossier ./.well-known/acme-challenge/ afin de valider les fichiers de vérification créés par Mod_MD :
Code
Alias /.well-known/acme-challenge "C:\ssl\md\challenges"

<directory "C:\ssl\md\challenges">
    Options -Indexes
    AllowOverride none
    Require all granted
</Directory>


Et voilà, il ne reste plus qu'à laisser la magie opérer et lancer Apache !
Si le certificat n'existe pas, il sera créé.

Et voici la suite :




Puis, après redémarrage du serveur :




Dans error.log, ce message sera présent à chaque création/renouvellement de certificat :
Code
[Thu Oct 17 03:54:53.065600 2019] [md:notice] [pid 2020:tid 1252] AH10059: The Managed Domain example.com has been setup and changes will be activated on next (graceful) server restart.


ATTENTION AUX DOSSIERS CRÉÉS !
Dans l'exemple, le chemin C:\ssl est utilisé.
Les dossiers suivants sont ceux du module MD, il n'est pas possible de les renommer !
Un autre lecteur et dossier peut-être utilisé, mais le dossier .\md\challenges, par exemple, venant à la suite n'est pas négociable !
Donc, quand un chemin comme C:\ssl\md est donné, seul ce qui vient avant \md peut être modifié !
Le module MD créera les dossiers et fichiers dont il a besoin dans le dossier md :
Code
md-+--
   +- accounts
   +- archive
   +- challenges
   +- domains
   +- fallback-privkey.pem
   +- fallback-cert.pem
   +- httpd.json
   +- md_store.json
   +- staging
   +- tmp

Il est possible d'exécuter un script dès que quelque chose se passe avec les certificats gérés, comme par exemple un script se chargeant de redémarrer le serveur.
Pour ça, la documentation est notre amie à tous ! :)
IP archivée

Otomatic

  • Observateur
  • Saint patron des orateurs
  • *****
  • Hors ligne Hors ligne
  • Sexe: Homme
  • Messages: 571
  • Vieux geek assagi
      • Aviatechno
Tuto, LetsEncrypt: Installer un certificat de sécurité SSL sous Windows ou Linux
« Réponse #79 le: jeudi 17 octobre 2019, 19:30 »
le: jeudi 17 octobre 2019, 19:30

Bonsoir et bravo  :ic:
J'ai bien fait d'en parler de ce mod Apache.
IP archivée
« La vie sans musique est tout simplement une erreur, une fatigue, un exil. » Friedrich Nietzsche.
« Ce n'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont forcément raison. » Coluche

alex

  • Administrateur
  • Dictionnaire ambulant
  • ********
  • Hors ligne Hors ligne
  • Sexe: Homme
  • Messages: 18.923
  • Proprio officiel chez oim !
Tuto, LetsEncrypt: Installer un certificat de sécurité SSL sous Windows ou Linux
« Réponse #80 le: jeudi 17 octobre 2019, 19:56 »
le: jeudi 17 octobre 2019, 19:56

Je me doutais un peu que tu voulais que je dégrossisse le boulot, vilain canailloux ! :id:

Enfin bref, ça marche, et ça marche même plutôt bien. A chaque fois qu'un domaine est ajouté avec MDomain, le prochain démarrage de Apache ira chercher un certificat pour ce domaine, tout seul comme un grand. Et ça renouvellera tout seul aussi. :jw:

D'ailleurs, je pense que je vais créer un tuto sur ce mod, il est vraiment très pratique ! :)

Le seul souci, sous Windows avec Wamp, c'est qu'il n'existe pas de reload Apache. C'est stop ou start, et du coup restart.
C'est gênant, parce-que ça entraîne une coupure. Un reload serait vraiment le bien venu ! ;)

IP archivée

Otomatic

  • Observateur
  • Saint patron des orateurs
  • *****
  • Hors ligne Hors ligne
  • Sexe: Homme
  • Messages: 571
  • Vieux geek assagi
      • Aviatechno
Tuto, LetsEncrypt: Installer un certificat de sécurité SSL sous Windows ou Linux
« Réponse #81 le: jeudi 17 octobre 2019, 20:59 »
le: jeudi 17 octobre 2019, 20:59

Bonsoir,

"reload" Apache, je m'y suis particulièrement intéressé, mais, quoi qu'on fasse, c'est totalement impossible sous Windows.
C'est forcément stop et start, le "graceful" restart ne marche pas.
IP archivée
« La vie sans musique est tout simplement une erreur, une fatigue, un exil. » Friedrich Nietzsche.
« Ce n'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont forcément raison. » Coluche

maximus23

  • Observateur
  • Pipelette invétérée
  • *******
  • Hors ligne Hors ligne
  • Sexe: Homme
  • Messages: 2.292
  • Grand chevalier du mot de passe
      • ®Smf® Solutions

Bonsoir,

"reload" Apache, je m'y suis particulièrement intéressé, mais, quoi qu'on fasse, c'est totalement impossible sous Windows.
C'est forcément stop et start, le "graceful" restart ne marche pas.

Bonsoir,

J'avais vu quelque part que cette fonction serait implémentée sous Apache 2.4 VCL16 mais je n'ai plus suivi les évolutions depuis un bout de temps. On aurait du avoir ce Graceful fonctionnel à l'identique que linux en lieu et place du -k ou du stop start.

:)
IP archivée
Amitiés et à bientôt...
Have a nice day...

Otomatic

  • Observateur
  • Saint patron des orateurs
  • *****
  • Hors ligne Hors ligne
  • Sexe: Homme
  • Messages: 571
  • Vieux geek assagi
      • Aviatechno

Bonjour,

Je viens de faire des essais et, a priori, ça fonctionne maintenant avec Apache 2.4.41 VS16.
- Ajout d'un VirtualHost dans la page wamp add_vhosts.php
donc, modification des fichiers hosts et httpd-vhosts.conf
Lancement dans la page add_vhosts.php de :
Code
$command = array(
  'ipconfig /flushdns',
  $c_apacheExe.' -n '.$c_apacheService.' -k restart',
);
ob_start();
foreach($command as $value) {
  echo "Command-> ".$value."\n";
  passthru($value);
}
$output = iconv("CP850","UTF-8//TRANSLIT", ob_get_contents());
ob_end_clean();
$dns_refresh_message = '<pre><code>'.$output.'</code></pre>';

Nouveaux fichiers hosts et httpd-vhosts.conf bien pris en compte par Windows et par Apache.
IP archivée
« La vie sans musique est tout simplement une erreur, une fatigue, un exil. » Friedrich Nietzsche.
« Ce n'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont forcément raison. » Coluche

alex

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

Tu veux en venir où avec ton bout de code, je ne comprends pas. :-\
J'ai bien vu le -k restart, mais bon...

Sinon, c'est clair que le reload manque cruellement.
Ca fait des années que je le souhaite.


J'ai édité mon post de "résolution" du mod_md, histoire d'ajouter une goutte de sécurité dans /md-status qui doit être destiné à une utilisation locale uniquement.
J'ai aussi ajouté l'adresse "staging" (de test) de Lets Encrypt afin que chacun puisse faire ses essais tranquillement avec des certificats bidons délivrés par Lets Encrypt plutôt que des vrais certificats.
Il suffit de placer le commentaire devant la ligne qu'on ne veut pas.
Lets Encrypt est bien plus permissif quand on réclame un certificat en mode "staging".
En mode normal, on se retrouve vite avec un refus de certificats à attendre que Lets Encrypt oublie tous les essais ratés...
IP archivée

Otomatic

  • Observateur
  • Saint patron des orateurs
  • *****
  • Hors ligne Hors ligne
  • Sexe: Homme
  • Messages: 571
  • Vieux geek assagi
      • Aviatechno

Je dirais qu'avec Apache 2.4.41 VS16, -k restart correspondrait bien à un reload, sans arrêter Apache puisque le script PHP WEB n'est pas arrêté et que les modifications de httpd-vhosts.conf sont bien prises en compte.
IP archivée
« La vie sans musique est tout simplement une erreur, une fatigue, un exil. » Friedrich Nietzsche.
« Ce n'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont forcément raison. » Coluche

alex

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

Oh ! Sans déconner ?! :)

Tu peux traduire les variables suivantes que je teste : (c'est httpd.exe ?)
$c_apacheExe
$c_apacheService

Par contre, pour un reload Apache, je ne comprends pas ce flushdns, mais alors pas du tout ! :iq:


IP archivée

Otomatic

  • Observateur
  • Saint patron des orateurs
  • *****
  • Hors ligne Hors ligne
  • Sexe: Homme
  • Messages: 571
  • Vieux geek assagi
      • Aviatechno

Bonsoir,

$c_apacheExe = chemin complet absolu sur httpd.exe

$c_apacheService = nom sur service qui lance Apache, en l'occurrence wampapache ou wampapache64

Quant à ipconfig /flushdns  c'est pour que le modifications du fichier hosts soient prises en compte, vu qu'il n'est plus possible, sous Windows 10, d'arrêter et de redémarrer le service dnscache.

J'ajouterais que c'est lancé depuis une page web et qu'avant Apache 2.4.41 VS16, cela arrêtait purement et simplement Apache, donc le script était planté puisque PHP WEB n'était plus activé.

Bien vérifier qu'Apache 2.4.41 est compilé VS16, httpd.exe -v doit bien l'indiquer :
Code
J:\wamp64\bin\apache\apache2.4.41\bin>httpd -v
Server version: Apache/2.4.41 (Win64)
Apache Lounge VS16 Server built:   Aug  9 2019 16:46:32
IP archivée
« La vie sans musique est tout simplement une erreur, une fatigue, un exil. » Friedrich Nietzsche.
« Ce n'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont forcément raison. » Coluche

alex

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

Ah oui, dis donc, ça a à l'air de faire un reload ! :ip:
Code
httpd -n wampapache64 -k restart

Atta, atta.
Pas d'emballement, pas de fausse joie, je fais un test de changement de config et je dis ce qu'il en est.
En tout cas, le service n'est pas interrompu, ça c'est certain. :)


Messages du même membre fusionnés car compris dans le délai d'édition (Vous avez 30 minutes pour éditer).

Et merde ! C'est pas ça.
Il se passe quelque chose, ça prend un peu de temps, mais la config n'est pas rechargée. :gk:

P'tain ! J'y croyais ! Merde alors ! :(
IP archivée

Otomatic

  • Observateur
  • Saint patron des orateurs
  • *****
  • Hors ligne Hors ligne
  • Sexe: Homme
  • Messages: 571
  • Vieux geek assagi
      • Aviatechno

L'ajout d'un VirtualHost dans httpd-vhosts.conf a été bien prise en compte après le restart. Vu par httpd.conf.exe -t -D DUMP_VHOSTS

Éventuellement, essaye de le faire deux fois de suite.

Mais, même si ça ne fonctionne pas encore correctement, il y a une belle avancée, ça n'arrête pas Apache.
IP archivée
« La vie sans musique est tout simplement une erreur, une fatigue, un exil. » Friedrich Nietzsche.
« Ce n'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont forcément raison. » Coluche
Pages: 1 ... 3 4 5 [6]   En haut
 

+ Réponse Rapide

Page générée en 0.119 secondes avec 25 requêtes.