Mes ressources pour le Web

Créer un site en local avec HTTPS.

En partant de l’installation effectuée soit en PHP le but est de créer un site en local avec HTTPS par exemple https://localtracfoil.com/ sachant que que ce site local sera dans le dossier home/utilisateur/sites/dossier_https/ et ici dans cet exemple se sera /home/linux/sites/tracfoil/

Pour mettre en place un site local en HTTPS sous Apache 2 vous avez le choix entre :
A - utiliser les certificats SSL par défaut (solution choisie ici par simplicité, mais avec alerte donc il faut ajouter une exception sur le navigateur)
B - générer un certificat non pas auto-signé, mais signé par votre certificat personnel avec mkcert


A - Par défaut Apache 2 contient deux fichiers pré-configurés :
000-default.conf et default-ssl.conf qui pointent tous les deux répertoire /var/www .
Le premier écoute sur le port 80 (HTTP) et le second sur le port 443.
- 000-default.conf est actif ce qui permet d’accéder à la page It Works !
Vous remarquerez aussi qu’il n’y a pas eu besoin de générer de certificat SSL. En effet, il y en a déjà un par défaut (valable 10 ans) que l'on peut voir en regardant dans le fichier default-ssl.conf situé dans /etc/apache2/sites-available
extrait :
# A self-signed (snakeoil) certificate can be created by installing
# the ssl-cert package. See
# /usr/share/doc/apache2/README.Debian.gz for more info.
# If both key and certificate are stored in the same file, only the
# SSLCertificateFile directive is needed. 
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

Nota suivant la distribution le logiciel éditeur de texte gedit peut être remplacer par mousepad ou autre.

- il a été créé un dossier /home/linux/sites/tracfoil

- Ajouter un fichier phpinfo.php comprenant <?php phpinfo(); ?> ou un fichier index.html pour tester.

- Création du VirtualHost dans /etc/apache2/sites-available
se rendre dans le dossier
cd /etc/apache2/sites-available
Copier le fichier original 000-default.conf en tracfoil.local.conf
sudo cp 000-default.conf tracfoil.local.conf
Editer pour modifier ce fichier
sudo gedit /etc/apache2/sites-available/tracfoil.local.conf
Supprimer le contenu pour mettre ce qui suit en fonction de vos dossiers
<IfModule mod_ssl.c>
<VirtualHost localtracfoil.com:443>
ServerAdmin sites@localhost
ServerName localtracfoil.com
DocumentRoot "/home/linux/sites/tracfoil"
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
<Directory "/home/linux/sites/tracfoil">
Require all granted
#pour rewrite
AllowOverride All
</Directory>
</VirtualHost>
</IfModule>

Puis activer les modifications du fichier tracfoil.local.conf par
sudo a2ensite tracfoil.local.conf

Ensuite activer le module SLL d'apache
sudo a2enmod ssl
ce qui donne
Enabling module ssl.

See /usr/share/doc/apache2/README.Debian.gz on how to configure SSL and create self-signed certificates.

Modifier le fichier hosts pour ajouter le domaine
sudo gedit /etc/hosts

ajouter
127.0.0.1     localtracfoil.com
Et enfin relancez apache2 :
sudo service apache2 restart ou systemctl restart apache2

Vérifier l’accès en HTTPS sur votre navigateur
https://localtracfoil.com/phpinfo.php

- Vous allez avoir une alerte
La connexion n’est pas sécurisée
localtracfoil.com uses an invalid security certificate. Error code: SEC_ERROR_UNKNOWN_ISSUER

- Il faut donc Ajouter une exception
local_https

Vous êtes prêt à tester votre CMS en HTTPS.


mais vous avez un cadenas noir avec une icône alerte
top

B - générer un certificat non pas auto-signé, mais signé par votre certificat personnel avec mkcert

Pour cela sous Debian XFCE, il faudra installer certutil, pour cela
sudo apt install libnss3-tools
cela donnera
libnss3-tools (version 2:3.42.1-1+deb10u3) sera installé
Sélection du paquet libnss3-tools précédemment désélectionné.
(Lecture de la base de données... 191866 fichiers et répertoires déjà installés.)
Préparation du dépaquetage de .../libnss3-tools_2%3a3.42.1-1+deb10u3_amd64.deb ...
Dépaquetage de libnss3-tools (2:3.42.1-1+deb10u3) ...
Paramétrage de libnss3-tools (2:3.42.1-1+deb10u3) ...
Traitement des actions différées (« triggers ») pour man-db (2.8.5-2) ...

Ensuite il faut installer Install mkcert : ici je prends le le fichier binaire directement depuis la page Releases  
- exemple la version mkcert-v1.4.3-linux-amd64
wget https://github.com/FiloSottile/mkcert/releases/download/v1.4.3/mkcert-v1.4.3-linux-amd64

cela va sauvegarder le fichier mkcert-v1.4.3-linux-amd64 dans le home/utilisateur ici ce sera pour l'exemple /home/linux/
...
mkcert-v1.4.3-linux 100%[===================>] 4,58M 2,98MB/s ds 1,5s
2021-0x-xx 16:29:05 (2,98 MB/s) — « mkcert-v1.4.3-linux-amd64 » sauvegardé [4803796/4803796]

Les manipulations suivantes seront faites en ligne de commande en terminal administrateur
sudo -s

renommer le fichier
mv mkcert-v1.4.3-linux-amd64 mkcert
le rendre exécutable
chmod +x mkcert
copier vers le dossier
cp mkcert /usr/local/bin/
le fichiers est dans /usr/local/bin/mkcert

installer mkcert
mkcert -install
The local CA is now installed in the system trust store! ⚡️
ERROR: no Firefox and/or Chrome/Chromium security databases found

Ensuite il y aura les fichiers suivant :
/usr/local/share/ca-certificates/mkcert_development_CA_XXxxxxxxxxxxxxxxx9.crt
/etc/ssl/certs/mkcert_development_CA_32xxxxxxxxxxxxx9.pem

Il faut importer le fichier mkcert_development_CA_XXxxxxxxxxxxxxx9.pem dans les certificats de Firefox dans l'onglet "Autorités"
import_certif_ffx_r  1inser_r  2inser_r  3inser_r
                                            et sélectionnez le fichier              validez                                      le cerificat


Il faut maintenant générer le fichier de certifical SSL local  pour les domaines sites, localtracfoil.com, localhost, ..
mkcert sites 'localtracfoil.com' localhost 127.0.0.1 ::1
cela donnera
Note: the local CA is not installed in the Firefox and/or Chrome/Chromium trust store.
Run "mkcert -install" for certificates to be trusted automatically ⚠️
Created a new certificate valid for the following names
- "sites"
- "localtracfoil.com"
- "localhost"
- "127.0.0.1"
- "::1"
Reminder: X.509 wildcards only go one level deep, so this won't match a.b.localtracfoil.com
The certificate is at "./sites+4.pem" and the key at "./sites+4-key.pem"
It will expire on 18 May 2023


Les fichiers cerificats seront dans
/home/linux/sites+4-key.pem
/home/linux/sites+4.pem

- Création du VirtualHost dans /etc/apache2/sites-available
se rendre dans le dossier
cd /etc/apache2/sites-available
Copier le fichier original 000-default.conf en tracfoil.local.conf
sudo cp 000-default.conf tracfoil.local.conf
Editer pour modifier ce fichier
sudo gedit /etc/apache2/sites-available/tracfoil.local.conf
Supprimer le contenu pour mettre ce qui suit en fonction de vos dossiers
<IfModule mod_ssl.c>
<VirtualHost localtracfoil.com:443>
ServerAdmin sites@localhost
ServerName localtracfoil.com
DocumentRoot "/home/linux/sites/tracfoil"
SSLEngine on
SSLCertificateFile /home/linux/sites+4.pem
SSLCertificateKeyFile /home/linux/sites+4-key.pem
<Directory "/home/linux/sites/tracfoil">
Require all granted
#pour rewrite
AllowOverride All
</Directory>
</VirtualHost>
</IfModule>

Puis activer les modifications du fichier tracfoil.local.conf par
sudo a2ensite tracfoil.local.conf

Ensuite activer le module SLL d'apache
sudo a2enmod ssl
ce qui donne
Enabling module ssl.
See /usr/share/doc/apache2/README.Debian.gz on how to configure SSL and create self-signed certificates.

Modifier le fichier hosts pour ajouter le domaine
sudo gedit /etc/hosts

ajouter
127.0.0.1     localtracfoil.com
Et enfin relancez apache2 :
sudo systemctl restart apache2

Vérifier l’accès en HTTPS sur votre navigateur
Vous n'avez pas d'alerte et la conexion est bien sécurisée, sauf que le cadenas est noir au lieu de vert, mais pas d'icone d'alerte
et comme sur le certificat il ets fait mention des domaines sites, localtracfoil.com, localhost le HTTPS est donc sur les 3 dossiers.
 sur https://sites/gestion/...   https://sites/localtracfoil.com     https://loclahost

https_siteOK_r  https_site-localtracfoilOK_r   https_localhostOK_r



Crédits
- Configurer le SSL avec Apache 2
- Créer un certificat SSL autosigné pour le développement en local
- Documentation Apache
- Localhost et HTTPS
- How to Create Locally Trusted SSL Certificates with mkcert

Version originale du 01/05/2017-0

CC_licence
Document http://jc.etiemble.free.fr/abc/ JCE - version du 23/03/2021-0 

.