Serveur Web et Certificat
Nous allons créer ce que l'on appelle une machine LAMP, d'après Wikipédia une machine "LAMP est un acronyme désignant un ensemble de logiciels libres permettant de construire des serveurs de sites web. L'acronyme original se réfère aux logiciels suivants : * « Linux », le système d'exploitation ( GNU/Linux ) ;
- « Apache », le serveur Web ;
- « MySQL ou MariaDB », le serveur de base de données ;
- À l'origine, « PHP », « Perl » ou « Python », les langages de script."
Installation de la machine
Dans un premier temps, nous avons besoin d'une machine Linux Debian 12 sans interface graphique.
Cette machine se nomme debianLAMP, elle a besoin de 20Gb de stockage. Si besoin, aidez-vous du Tuto suivant
Installation d'une machine Debian sans interface graphique
Installation du serveur Web
Maintenant que notre machine est prête, nous allons installer notre serveur web qui vas héberger notre site.
pour cela effectuer la commande
sudo apt-get install apache2
Une fois le téléchargement terminé, entrer la commande ip a
dans votre terminal, noter votre adresse IP.
Sur votre machine hôte, entrez l'adresse de votre Debian. Une page Apache doit s'afficher
Question 1
Le protocole utilisé est implicite, Quel est ce port et le protocole associé ?
Sur votre machine virtuelle, créer un dossier LAMP dans le dossier /var/www/html
Créer ensuite à l'intérieur du dossier LAMP un fichier index.html
Entrer ensuite le code suivant :
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>LAMP</title>
</head>
<body>
Hello World !
</body>
</html>
Question 2
Comment accéder à cette ressource depuis votre navigateur ?
L'objectif est maintenant d'avoir un lien utilisable plus facilement pour cela, nous avons besoin de modifier le fichier host de windows
Question 3
À quoi sert le fichier host ?
Ouvrez le bloc-notes en administrateur puis rendez-vous à l'emplacement suivant C:\Windows\System32\drivers\etc ajouter la ligne. IP de votre machine lamp.local
Question 4
Comment accéder à son site plus facilement maintenant ?
Sur votre machine Debian en root allez dans le dossier /etc/apache2/sites-available
Créez un fichier lamp.local.conf et ajouter le code suivant :
<VirtualHost *:80>
ServerName lamp.local
DocumentRoot /var/www/html/lamp
</VirtualHost>
Pour que les modifications soient effectives, il faut recharger apache2 pour cela effectuer les commandes suivantes
a2ensite lamp.local.conf
systemctl reload apache2
Question 5
Quel est l'objectif de cette manipulation ?
Il y a un problème sur notre serveur web pour le moment : nous avons accès à l'arborescence du server web.
Question 6
Pourquoi est-ce un problème ?
Pour palier à ce problème, ajouter dans le VirtualHost du fichier lamp.local les lignes suivantes :
<Directory /var/www/html/lamp>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
</Directory>
Certificat SSL
Un certificat SSL est un certificat électronique qui authentifie l'identité d'un site Web et permet également d'avoir une connexion chiffrée. SSL (Secure Sockets Layer) est un protocole de sécurité qui crée un lien chiffré entre un serveur Web et un navigateur Web.
Un certificat SSL est un certificat électronique qui authentifie l'identité d'un site Web et permet une connexion chiffrée. SSL signifie « Secure Sockets Layer », c'est un protocole de sécurité qui crée un lien chiffré entre un serveur Web et un navigateur Web. Le certificat doit être renouvelé périodiquement.
Génération d'un certificat autosignée
Effectuer la commande suivante pour générer un certificat autosignée.
openssl req -x509 -nodes -days 3000 -newkey rsa:4094 -keyout /etc/ssl/lamplocal.key -out /etc/ssl/lamplocal.crt
La commande s'exécute, répondez ensuite aux questions que l'application OpenSSL vous pose.
Activation du module SSL
Dans le dossier /var/log/apache2 activer SSL grâce à la commande suivante :
a2enmod ssl
Puis redémarrer le service apache2.
Configuration du VirtualHost sur le port 443
- Rendez-vous dans le dossier /etc/apache2/sites-available
- Ouvrez le fichier lamp.local.conf
- Sur La base du VirtualHost du port 80 faite le VirtualHost du port 443
- Ajoutez la ligne
SSLEngine on
- Ajoutez la ligne
SSLCertificateFile /etc/ssl/lamplocal.crt
- Ajoutez la ligne
SSLCertificateKeyFile /etc/ssl/lamplocal.key
Redémarrer le serveur
Rendez-vous sur le site https://lamp.local
Redirection du port 80 vers le port 443
Activer le mode rewrite avec la commande suivante : a2enmod rewrite
Remplacez le contenu du VirtualHost du port 80 avec le code suivant
ServerName lamp.local
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
Installation des autres utilitaires
Nous avons besoin des autres utilitaires pour faire fonctionner notre machine LAMP, voici la commande à effectuer pour les installer
apt install mariadb-server mariadb-client php libapache2-mod-php php-cli php-mysql php-zip php-curl php-xml wget -y
Question 7
À quoi sert l'argument -y
Nous allons maintenant vérifier que PHP fonctionne dans le dossier lamp, ajouter un fichier PHP nommé test.php et ajouter le code suivant :
echo "<?php phpinfo(); ?>"
Rendez-vous sur la page web associé à votre fichier PHP
Question 8
D'après cette page, quelle est la version de PHP que vous venez d'installer ?
Question 9
Notre nom de serveur a-t-il bien été modifié du point de vue de PHP ?
Installation de SSH
Question 10
Quel est l'objectif de mettre en place le service SSH ?
Voici la commande pour installer le service SSH :
apt install openssh-server
Ouvrez désormais, sur votre machine hôte, l'application puTTY. Dans la partie HostName, entrez l'adresse IP de votre machine, vérifiez que le port est le 22. Lancez ensuite la connexion avec le bouton Open
Travaillez désormais depuis le terminal de puTTY
Installation de la base de donnée
Nous allons procéder à une installation "propre" de la base de donnée, pour cela effectuer la commande suivante :
mysql_secure_installation
Voici les réponses à fournir à la configuration demandées par l'utilitaire
Enter current password for root (enter for none):
Change the root password? [Y/n] Y
New password:
Re-enter new password:
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y
Nous allons maintenant nous connecter en root à la base de donnée
mysql -u root -p
nous allons créer un utilisateur dans cette base et lui attribuer des droits sur les tables
CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* to 'user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Nous allons maintenant installer phpmyadmin, pour cela faites la commande suivante :
apt-get install phpmyadmin
À l'aide de la touche espace, sélectionné pache2 en serveur Web
Choisissez ensuite oui pour configurer la base par défaut
Entrez ensuite un mot de passe pour MySQL server.
sur votre machine hôte dans un navigateur, vous pouvez maintenant accéder depuis l'addresse http://lamp.local/phpmyadmin/ à phpmyadmin pour cela utiliser en nom d'utilisateur root et le mot de passe que vous vennez de saisir.
Pour s'assurer qu'Apache à bien admin l'ajout des différents modules, nous allons le relancer grâce à la commande :
systemctl restart apache2
Redirection de port
Question 11
Quel est l'objectif d'une redirection de port ?
Rendez vous dans le dossier suivate : /etc/apache2/sites-available/
Créer le fichier monsite.local.conf
Entrez le code suivant dans le fichier que vous venez de créer :
<VirtualHost *:80>
ServerName monsite.local
DocumentRoot var/www/html/
</VirtualHost>
Effectuez ensuite la commande suivante : a2ensite monsite.local.conf
Question 11
Quel est l'objectif de cette commande ?
et enfin la commande suivante
service apache2 reload
Certificat Let's Encrypt
Installer la dépendence certbot sur votre machine linux
Question 12
Donnez la commande pour installer la dépendece précédente
certbot -d *.monsite.local -d *.monsite.local --manual --preferred-challenges dns certonly
Question 13
Expliquez les configuration que vous demande la commande précédente