Linux cours
Sommaire
Mise à jour de Debian
Mise à jour des sources des paquets
sudo apt update
Si des mises à jours sont disponible appliquer ces mises à jours
sudo apt upgrade
Redémarrer la machine
sudo reboot now
Installation de LAMP (Linux Apache2 MariaDB PHP)
sudo apt install apache2 php libapache2-mod-php mariadb-server php-mysql
Installation des modules php utilisés couramment par les CMS
sudo apt install php-curl php-gd php-intl php-json php-mbstring php-xml php-zip
Activer le démarrage auto du service apache2
sudo systemctl enable --now apache2
Activer le démarrage auto du service mariadb
sudo systemctl enable --now mariadb
Configurer MariaDB
sudo mysql_secure_installation
Il va vous afficher plusieurs questions
Premièrement il demande le mot de passe actuel, vu que l'on vient d'installer MariaDB il y en a pas donc il faut juste appuyer sur Entrée
Enter current password for root (enter for none):
Ensuite il faut créer un nouveau mot de passe il faut d'abord appuyer sur Y
et ensuite il faut rentrer 2 fois le nouveau mot de passe
OK, successfully used password, moving on...
Set root password? [Y/n] Y
New password:
Re-enter new password:
Ensuite il demande plusieurs questions il faut entrer Y
pour toutes
Password updated successfully!
Reloading privilege tables..
... Success!
Remove anonymous users? [Y/n]
... Success!
Disallow root login remotely? [Y/n]
... Success!
Remove test database and access to it? [Y/n]
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reload privilege tables now? [Y/n]
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
Finalement il faut autoriser le port 80 dans le firewall
sudo ufw allow 80
Il faut maintenant vérifier que le site fonctionne bien en allant sur l'ip du serveur dans un navigateur web
Installation de phpMyAdmin
Installer le paquet
sudo apt install phpmyadmin
Il va poser plusieurs questions pendant l'installation
- Premièrement il faut choisir le serveur web que l'on va utiliser pour phpMyAdmin dans notre cas
apache2
. Pour le sélectionner il faut se déplacer dessus avec les flèches et appuyer sur ESPACE pour qu'une étoile apparaisse. Ensuite il faut utiliser TAB pour aller sur le bouton ok et faire ENTER
- Ensuite il demande s'il faut configurer la base de donnée de phpMyAdmin il faut faire
Ok
- Après il faut répondre
Oui
- Finalement il faut créer un mot de passe pour que phpMyAdmin puisse se connecter à la base de donnée, si on laisse le champs vide un mots de passe aléatoire sera généré. On peut donc juste cliquer sur
Entrée
On peut ensuite accéder à phpmyadmin en allant sur http://ipduserveur/phpmyadmin
Le login est root
et le mot de passe est celui de MariaDB
Installation de Wordpress
Il faut commencer par se déplacer dans le bon répertoire
cd /var/www/html
Il faut ensuite renommé la page index de base pour la désactiver
sudo mv index.html index.html.bak
Après il faut installer unzip pour décompresser l'archive de wordpress que nous allons télécharger ultérieurement
sudo apt install unzip
Ensuite il faut télécharger Wordpress
sudo wget https://wordpress.org/latest.zip
On décompresse le fichier
sudo unzip latest.zip
On se rend dans le dossier de wordpress
cd wordpress
On déplace les fichiers extraits
sudo mv ./* ../
On retourne en arrière
cd ..
On supprime le dossier wordpress vide
sudo rm -R wordpress
On supprime l'archive de wordpress
sudo rm latest.zip
On retourne en arrière
cd ..
On change les permissions pour que Wordpress puisse modifier des fichiers
sudo chown -R www-data:www-data ./html
Après on crée une base de données dans phpMyAdmin
Il faut choisir le type d'encodage utf8mb4_general_ci
Il faut ensuite se connecter au serveur via un navigateur web http://ipduserveur/wp-admin/install.php
On commence par choisir sa langue
Après on clic sur C'est parti !
Ensuite il faut configuer Wordpress
Premièrement il faut entrer le nom de la base de donnée crée précédement
Ensuite il faut entrer les identifiants de connection à MariaDB (
root
et le mot de passe crée précédement)Et il ne faut pas changer l'adresse de la base de données et le préfixe des tables
On clic sur Envoyer
Puis on clic sur Lancer l'installation
Il faut ensuite renseigner les informations du site
Le titre du site
Le nom d'utilisateur de Wordpress (par exemple: Mathias)
Le mot de passe de cet utilisateur
L'email
On peut aussi choisir si le site doit appaitre sur les moteurs de recherche
Finalement il faut juste cliquer sur Installer WordPress
Il redonne une dernière fois les infos
Et il n'y a plus qu'a cliquer sur Se connecter
Voila Wordpress est installé !
Installation d'un thème Wordpress
Il faut se rendre dans le panel d'administration http://ipduserveur/wp-admin
Aller dans Apparence
Et cliquer sur le bouton ajouter en haut
Ensuite il faut choisir un thème et cliquer sur Installer
Après il faut l'activer
Si le thème demande des extensions suplémentaire il faut les installer
Il faut cocher toutes les extensions, changer le menu déroullant sur Installer
et cliquer sur Appliquer
Après Wordpress peut demander d'activer ces extensions
Il faut cliquer sur lancer l'activation des extensions
Ensuite il faut cocher toutes les extensions, changer le menu déroullant sur Activer
et cliquer sur Appliquer
Voila le site possède maintenant un jolie thème !
Mise en place de la sauvegarde sur Wordpress
Il faut se rendre dans les extensions dans le panel d'administration et cliquer sur Ajouter
Ensuite il faut chercher BackWpup
et cliquer sur Installer maintenant
Il faut ensuite cliquer sur Activer
Ensuite on se rend dans Ajouter une tâche
et change le nom de la tache
Il faut aussi cocher Dans le dossier local
Finalement on clique sur Enregistrer les modifications
Après on peut se rendre dans le panneau Tâches
et cliquer sur Lancer maintenant
Voila la sauvegarde a été faite !
Supprimer Wordpress
ATTENTION : AVANT DE SUPPRIMER WORDPRESS RECUPERER LA SAUVEGARDE SUR LE SERVEUR VIA L'ONGLET SAUVEGARDE DE BackWPup EN ALLANT SUR UNE SAUVEGARDE ET EN CLIQUANT SUR TELECHARGER. UNE FOIS LE ZIP TELECHARGER VOUS POUVEZ SUIVRE LES INSTRUCTIONS CI-DESSOUS.
Pour supprimer toute trace de Wordpress pour par exemple le réinstaller dans un vhosts on commence par ce rendre dans le dossier où on l'a installer
cd /var/www/html
Une fois dans le dossier on vérifier que l'on a bien les fichiers de Wordpress
ls
Si on est bien au bon endroit on peut passer à la suppresion des fichiers
sudo rm -R ./*
Voila les fichiers de Wordpress on bien été supprimer. Il ne nous reste maintenant plus qu'a supprimer la base de données
Pour ça il faut aller sur phpMyAdmin, se rendre sur la base de données aller dans l'onglet Opérations
et cliquer sur Supprimer la base de données (DROP)
Création d'un vhost
Il faut commencer par créer le dossier qui sera utilisé pour stocker les fichiers (changer example.com
par le nom du site web)
cd /var/www
sudo mkdir example.com
On va ensuite créer un fichier d'exemple pour vérifer que le vhost fonctionne
On commence par ce rendre dans le dossier
cd example.com
On créer un fichier index.php
et on l'édite
sudo nano index.php
On entre un script php simple pour afficher sa version
<? phpinfo(); ?>
On sauvegarde avec CTRL + S et on quitte avec CTRL + X
Ensuite il faut ce rendre dans le dossier de configuration d'apache
cd /etc/apache2/sites-available
Il faut ensuite créer un fichier et l'éditer
sudo nano example.com.conf
Il faut coller ce texte et modifier certaines informations
<VirtualHost *:80>
ServerAdmin webmaster@example.com
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
ServerAdmin entrer l'adresse mail du webmaster
ServerName entrer l'url du vhost (pour trouver le nom de la machine sur le réseau utilisé nslookup sur la machine Windows en tapant nslookup et l'adress ip de la machine Linux)
ServerAlias entrer la même url avec
www.
devantDocumentRoot entrer le dossier que l'on a crée précédement
ErrorLog et CustomLog ne sont pas à modifier
On peut maintenant enregistrer le fichier avec CTRL + S et quitter avec CTRL + X
Il faut ensuite activer le vhost
sudo a2ensite example.com.conf
On peut ensuite redémarrrer le service d'apache
sudo systemctl restart apache2
Réinstallation de Wordpress dans le vhost
Il faut ouvrir Filezilla sur Windows et entrez les informations nécessaire à la connexion
Hôte : L'adresse IP de la machine Linux
Nom d'utilisateur : le login de la machine Linux
Mot de passe : le mot de passe de la machine Linux
Port : 22 en général
Une fois la connexion effectué on va copier l'archive de sauvegarde dans le dossier de notre utilisateur car c'est le seul endroit où l'on possède les droits de le coller
Le chemin est donc /home/NotreNomDutilisataeur/
Une fois cela effectué on peut fermer Filezilla et retourner sur le terminal
Ensuite on se rend sur le dossier de l'utilisateur
cd /home/NotreNomDutilisateur
Ensuite on va copier l'archive dans le dossier du vhost précédement crée
On cherche d'abord le nom du ficher
ls
Une fois qu'on a trouvé le nom
sudo cp 2022-11-02_15-09-41_AYK3D3O501.zip /var/www/example.com/
On se rend ensuite dans le dossier du vhost
cd /var/www/example.com
Ensuite en décompresse l'archive
sudo unzip 2022-11-02_15-09-41_AYK3D3O501.zip
On peut ensuite supprimer l'archive
sudo rm 2022-11-02_15-09-41_AYK3D3O501.zip
Après on retourne en arrière
cd ..
On change les droits du dossier
sudo chown -R www-data:www-data example.com
Il ne nous reste plus maintenant qu'a importer la base de données
Il faut donc commencer par décompresser le zip sur Windows
Récuperer le fichier sql par exemple wordpress.sql
Ensuite il faut se rendre sur phpMyAdmin et créer une base de données
Ensuite il faut se rendre sur la base de données et dans l'onglet importer.
Choisir le fichier.
Cliquer tout en bas sur executer.
Normalement tout devrait fonctionner.
Si jamais ce n'est pas le cas il est possible qu'il faille expliquer à Wordpress où sont ses fichiers
Pour cela il suffit de modifier le fichier wp-config.php
sudo nano wp-config.php
Après il faut changer l'adresse de Wordpress pour le mettre sur le vhost
define( 'WP_SITEURL', 'http://example.com' );
Ensuite il faut juste remettre les droits sur le fichier
sudo chown www-data:www-data wp-config.php
Voila la sauvegarde à été remis sur le serveur !
Installation d'un serveur Samba
Il faut commencer par installer samba
sudo apt install samba
On créer un dossier pour le partage dans le dossier de l'utilisateur changer nomdutilisateur
par son nom d'utilisateur utilisé pour la connexion en terminal
mkdir /home/nomdutilisateur/sambashare/
Modifier le fichier de configuration de samba
sudo nano /etc/samba/smb.conf
On va à la fin du fichier et on ajoute
[sambashare]
comment = Samba on Ubuntu
path = /home/username/sambashare
read only = no
browsable = yes
[sambashare]
est le nom du partage
comment
est la description du partage
path
est le chemin crée précédement
Il faut ensuite sauvegarder les changements avec CTRL + S et quitter avec CTRL + X
Après il faut redémarrer le service de samba
sudo service smbd restart
Et il faut autoriser le port de samba dans le pare-feu
sudo ufw allow samba
Il faut créer un mot de passe pour l'utilisateur
sudo smbpasswd -a $USER
Après on peut se connecter sur la machine Windows depuis l'explorateur de fichier dans la barre en haut, en utilisant le nom d'utilisateur de la machine Linux et le mot de passe crée précédement
\\adressip\sambashare
Installation d'un serveur RDP / Bureau à distance
Il faut commencer par installer xrdp
sudo apt install xrdp
Ensuite si on veut un environnement de bureau (interface graphique) il faut en installer un par exemple xfce4
sudo apt install xfce4
Il faut ensuite redémarrer
sudo reboot now
Il faut aussi ouvrir le port dans le pare-feu
sudo ufw allow 3389
Il faut après ouvrir Bureau à distance sur Windows et entrer l'adresse IP du serveur et accepté le message d'alerte
Ensuite il faut se connecter avec les identifiants de la machine Linux
Installation d'un serveur d'envoi de mail SMTP
Il faut d'abord installer postfix
sudo apt install mailutils postfix
On commencer par appuyer sur Ok
Il faut choisir l'option Site Internet
Il faut ensuite appuyer sur Ok
Il faut ensuite entrer le nom de la machine
Après il faut modifier la config de postfix
sudo nano /etc/postfix/main.cf
Il faut chercher ces lignes (avec CTRL + W) le plus simple est de rechercher mailbox_size
. . .
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
. . .
Il faut changer la valeur de inet_interfaces
en loopback-only
. . .
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = loopback-only
. . .
On enregistre en faisant CTRL + S et on quitte avec CTRL + X
Il faut ensuite redémarrer le service de postfix
sudo systemctl restart postfix
Il faut ouvrir les ports de SMTP
sudo ufw allow 25
sudo ufw allow 465
sudo ufw allow 587
sudo ufw allow 2525
Ensuite on peut tester la configuration en envoyant un mail
echo "Contenu du mail" | mail -s "Sujet du mail" mail@uha.fr
Le fichier htaccess
Le fichier htaccess permet l'accès à un vhost, par exemple en ajoutant un nom d'utilisateur et un mot de passe.
On commence par se rendre dans le dossier des fichiers de configuration des vhosts :
cd /etc/apache2/sites-available
On modifie le fichier de configuration du vhost que l'on souhaite sécuriser :
sudo nano example.com.conf
On ajoute la balise Directory
à la fin de la balise VirtualHost
:
<VirtualHost *:80>
ServerAdmin webmaster@example.com
ServerName vhost.test
ServerAlias www.vhost.test
DocumentRoot /var/www/example.com
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /var/www/example.com>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>-
Il faut modifier le chemin dans la première balise Directory
pour pointer sur le chemin précédemment mis dans DocumentRoot
plus haut dans le fichier.
On sauvegarde le fichier avec CTRL+S et on quitte avec CTRL+X.
On peut ensuite redémarrer le service d'apache :
sudo systemctl restart apache2
On va maintenant créer un utilisateur et un mot de passe pour la connexion au site web :
sudo htpasswd -c /etc/apache2/.htpasswd mathias
On peut changer l'utilisateur en changer le nom à la fin (dans ce cas mathias
)
La commande va demander 2 fois le même mot de passe
New password:
Re-type new password:
On va ensuite dans le dossier du vhost que l'on veut sécuriser :
cd /var/www/example.com
Il faut ensuite créer un fichier et l'éditer :
sudo nano .htaccess
On colle ce texte dans le fichier
AuthType Basic
AuthName "Restricted Content"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
On peut changer ce que le navigateur va afficher à l'utilisateur en modifier le AuthName
ici "Restricted Content"
.
On peut ensuite redémarrer le service d'apache :
sudo systemctl restart apache2
Maintenant si on se connecte sur son vhost on a un message nous demandant le login et le mot de passe crée précédemment.
La gestion des utilisateurs et des groupes
Sur un système UNIX comme Linux, un administrateur peut créer des utilisateurs et des groupes et les gérer.
Création d'un utilisateur
Pour faire cela nous allons commencer par créer un utilisateur :
sudo adduser nomdutilisateur
On peut ajouter plusieurs paramètres à cette commande :
le nom d'utilisateur (nomdutilisateur dans l'exemple plus haut)
--disabled-login pour désactiver la connexion tant qu'il n'y a pas de mot de passe de crée.
--no-create-home pour ne pas créer de dossier personnel pour l'utilisateur (pratique si cet utilisateur ne sert que pour un partage samba par exemple).
Pour appliquer ces options il suffit de les ajouter dans la commande comme ceci :
sudo adduser nomdutilisateur --no-create-home
Une fois le mot de passe de l'utilisateur défini, le système va nous demander plusieurs informations :
Nouveau mot de passe :
Retapez le nouveau mot de passe :
passwd: password updated successfully
Changing the user information for testusr
Enter the new value, or press ENTER for the default
Full Name []: Test USR
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Cette information est-elle correcte ? [O/n]
La seule information importante dans cette liste est Full Name, c'est le nom qui s'affiche quand il faut un "joli" nom c'est à dire un nom qui puisse contenir des espaces et des majuscules. Les autres paramètres ne servent généralement à rien.
Création d'un groupe
Pour faire cela nous allons commencer par créer un groupe :
sudo addgroup nomgroupe
On peut changer le nom du groupe ici nomgroupe
On peut ensuite assigner un utilisateur à ce groupe :
sudo adduser nomdutilisateur nomgroupe
Gestion des droits
L'intérêt de créer des utilisateurs et des groupes est de restreindre les droits à un utilisateur ou au membre d'un groupe.
Prenons comme exemple un dossier data
à la racine de la machine (/data
)
De base les dossiers à la racine appartiennent à l'utilisateur et au groupe root, ce qui fait que l'utilisateur root est la seule personne qui puisse avoir tous les droits sur ce dossier, on peut voir cela avec la commande ls -al
Il y a aussi un autre facteur à prendre en compte les droits sur le dossier en lui même.
Dans la capture d'écran plus haut on voit qu'au début il y est écrit drwxr-xr-x
ce n'est pas un language alien mais bien des droits, c'est assez simple à comprendre, si on le découpe :
Premièrement d
: c'est pour dire que c'est un dossier (directory) s'il n'est pas présent c'est que c'est un fichier
Ensuite il faut découper la suite en 3 blocs de 3 caractères (en comptant les tirets). Le premier bloc ici rwx
correspond au droit que l'utilisateur qui possède le dossier a.
Le second bloc ici r-x
lui correspond au droit du groupe qui possède le dossier a.
Finalement le troisème bloc ici r-x
correspond au droit qu'on tous les utilisateurs de la machine sur ce dossier
Je vais maintenant rapidement parler de la signification de r, w et x
r : correspond à read c'est à dire le droit de lecture sur le dossier ou fichier si une personne possède ce droit elle peut voir ce dossier/fichier
w : correspond à write c'est à dire le droite pour une personne créer/modifier un dossier/fichier
x : correspond au droit d'éxécution, c'est à dire le droit de lancer un fichier executable comme une application (ATTENTION : par exemple dans le cas d'un fichier php apache à généralement besoin du droit d'éxécution pour que le script php fonctionne)
Evidemment comme toujours sous Linux ça ne s'arrête pas la chaque droit à une valeur en lettre, r par exemple et une valeur en chiffre 4 par exemple :
r = 4
w = 2
x = 1
On peut additionner ces chiffres pour créer les droits pour un bloc (utilisateurs, groupes ou tous le monde)
Par exemple si je veux que l'utilisateur qui possède le dossier /data
ai tous les droits, que le groupe ne puisse que lire, et que le reste des utilisateurs ne puissent rien faire je fais :
Pour l'utilisateur qui possède le dossier : rwx donc 4 + 2 + 1 = 7
Pour le groupe qui possède le dossier : r-- donc 4 + 0 + 0 = 4
Pour les autre utilisateurs : --- 0 + 0 + 0 = 0
Donc les droits sur ce dossier en chiffres seront de 740
.
ATTENTION : il ne faut jamais donner tous les droit à tous le monde, c'est dire rwxrwxrwx ou 777 en chiffre, car cela veut dire que tous le monde peut tout faire, c'est donc une faille de sécurité MAJEURE (donc pitié arrêtez les chmod 777 (la personne se reconnaitera))
Maintenant que je suis revenu sur les bases des droits, on va les appliquer.
Donc je rappelle que notre dossier est /data
.
Maintenant on veut que l'utilisateur michel
soit le propriétaire de ce dossier
Et que le groupe de ce dossier soit le groupe dupont
On commence par changer le propriétaire et le groupe du dossier :
sudo chown -R michel:dupont /data
Donc chown permet de changer cela.
L'option -R
permet de rendre l'action récursive, c'est à dire que tous les dossiers et fichiers que contient ce dossier aurons les mêmes changements
L'utilisateur propriétaire de dossier et le groupe de ce dossier sont séparés par :
Ensuite imaginons maintenant que l'on veut que l'utilsateur possèdant le dossier ainsi que le groupe de ce dossier ai tous les droits (lecture, écriture et exécution) mais que les autres personnes n'ont que le droit de lecture.
On commence par réfléchir en "lettre" :
Ce qui donne rwx
pour l'utilisateur et aussi rwx
pour le groupe et r--
pour les autres.
Maintenant il ne reste plus qu'à convertir cela en chiffres pour chaque partie :
rwx = 4 + 2 + 1 = 7
rwx = 4 + 2 + 1 = 7
r-- = 4 + 0 + 0 = 4
Cela donne donc en chiffre 774
.
On peut donc appliquer les nouvelles permissions de façon récursive sur le dossier /data
:
sudo chmod -R 774 /data
On peut vérifier que cela a bien fonctionné :
ls -al /
On voit bien qu'on l'on a les permissions que l'on souhaitait ainsi que les bons propriétaires et groupe sur le dossier /data
Faire un script bash pour sauvegarder un dossier
On peut vouloir créer un script pour sauvegarder un répertoire de son serveur.
Pour créer un script bash on commence par faire un fichier .sh
Mais avant de faire ça on se rend dans son répertoire home :
cd /home/mathias
On peut ensuite créer le fichier du script :
nano backup.sh
Sachant que backup est le nom du fichier.
Ensuite une fois dans l'éditeur de texte on commence toujours un script bash avec :
#!/bin/bash
On commence par définir la date du jour dans une variable pour différencier les fichiers les uns des autres :
day=$(date +%F)
On va ensuite compresser les fichiers du dossier que l'on veut sauvegarder, par exemple /www/var
qui contient tous les sites web hébergé sur ce serveur. Et on va directement le mettre dans le répertoire de sauvegarde :
tar czf "/home/mathias/backup/$day.tgz" /var/www
ATTENTION : Il faut bien sur avoir préalablement créer le dossier backup
On peut maintenant sauvegarder CTRL+S et fermer l'éditeur de texte CTRL+X
Pour exécuter le script il faut d'abord lui donner le droit d'exécution :
sudo chmod +x backup.sh
On peut maintenant l'exécuter pour voir si ça fonctionne
./backup.sh
Utilisation d'une tâche cron
Une tâche cron permet d'automatiser une commande ou un script.
On commence par modifier le ficher de configuration de la tache cron :
sudo crontab -e
Si un choix pour l'éditeur est proposé on choisit nano
Ensuite on va à la fin du fichier
On peut ensuite créer une nouvelle tâche cron via la structure suivante :
mm hh jj MMM JJJ [user] tâche > log
- mm : minutes (00-59).
- hh : heures (00-23) .
- jj : jour du mois (01-31).
- MMM : mois (01-12 ou abréviation anglaise sur trois lettres : jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec).
- JJJ : jour de la semaine (1-7 ou abréviation anglaise sur trois lettres : mon, tue, wed, thu, fri, sat, sun).
- user (facultatif) : nom d'utilisateur avec lequel exécuter la tâche.
- tâche : commande à exécuter.
- > log (facultatif) : redirection de la sortie vers un fichier de log. Si un fichier de log n'est pas spécifié, un mail sera envoyé à l'utilisateur local.
On va donc créer une tâche pour exécuter notre script crée précédement :
00 01 * * * /home/mathias/backup.sh >> backup.log
Cette tache va s'exécuter tous les jours à 01h00 et va mettre le résultat de son exécution dans backup.log
Source : Merci à Linuxtricks pour les informations sur crontab : Cron et crontab : le planificateur de tâches ! - Wiki - Wiki
Mise en place d'un certificat SSL auto-signé
Il faut commencer par ajouter le port 443 dans le firewall :
sudo ufw allow 443
Il faut ensuite activer le mod_ssl d'apache :
sudo a2enmod ssl
On redémarre le service d'apache :
sudo systemctl restart apache2
On peut ensuite créer le certificat SSL :
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt
Il va ensuite nous demander certaines informations pour créer le certificat :
Country Name (2 letter code) [AU]:FR
State or Province Name (full name) [Some-State]:France
Locality Name (eg, city) []:Mulhouse
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Mathias Corp
Organizational Unit Name (eg, section) []:MC
Common Name (e.g. server FQDN or YOUR name) []:Mathias
Email Address []:test@test.fr
On va ensuite se rendre dans le dossier des vhosts :
cd /etc/apache2/sites-available/
Et on va modifier le fichier de configuration du vhost que l'on veut sécuriser :
sudo nano example.com.conf
On commence par modifier le port du vhost :
<VirtualHost *:443>
Et on ajoute après CustomLog :
SSLEngine on
SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt
SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key
On enregistre avec CTRL+S et on ferme avec CTRL+X
On vérifie ensuite que la syntaxe du fichier est ok :
sudo apache2ctl configtest
On ajoute le ssl via a2ensite :
sudo a2ensite default-ssl
On peut ensuite redémarrer le service d'apache :
sudo systemctl restart apache2
On se retrouve ensuite sur une page qui nous indique qu'il y a un risque de sécurité, ce qui n'est pas le cas c'est juste que le certificat n'est pas signé :
On clique sur avancé puis accepter le risque et poursuivre