Apache2

Certificat SSL

Let's Encrypt est une autorité de certification SSL gérée par l'Internet Security Research Group (ISRG). Elle utilise l'environnement de gestion automatisée des certificats (ACME) pour déployer automatiquement des certificats SSL gratuits auxquels font confiance presque tous les principaux navigateurs.

Intaller Let's Encrypt

sudo apt update && sudo apt upgrade
sudo apt-get install git
sudo git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt
cd /opt/letsencrypt

Créer un certificat SSL

sudo -H ./letsencrypt-auto certonly --standalone -d example.com -d www.example.com

certbot certonly --authenticator webroot -w /home/www/cheminsdetraverse/prod/public -d librairiecheminsdetraverse.com

Vérifier le certificat

sudo ls /etc/letsencrypt/live

./certbot-auto certificates

Renouveler un certificat

./letsencrypt-auto renew

Renouveler tous les certificats

certbot renew  

Supprimer un certificat

certbot delete --cert-name example.com

 

https://www.linode.com/docs/security/ssl/install-lets-encrypt-to-create-ssl-certificates/

https://eff-certbot.readthedocs.io/en/latest/using.html#

Commandes

Demarer le serveur Apache

systemctl start apache2.service

Arrêter le serveur Apache

systemctl stop apache2.service

Redemarer les serveur Apache

systemctl restart apache2.service

Redemarer mysql

sudo service mysql restart

 

Hosts

Le fichier hosts est utilisé sous tous les systèmes d’exploitations lors de l’accès à Internet, ce fichier est consulté avant l’accès au serveur DNS. C’est un simple fichier qui contient sur la même ligne une adresse IP et parfois le nom de domaine.

Ce fichier permet de bloquer l’accès à un site Internet, de le rediriger, de bloquer les pubs et d’améliorer l’accès à des sites en fonction de la configuration de celui-ci. Il peut être utile pour protéger votre ordinateur, empêcher un enfant (par exemple) d’accéder à un site particulier.
Ce fichier peut aussi servir à définir les noms des machines sur un réseau local

/etc/hosts

127.0.0.1	localhost
127.0.1.1	nom_du_pc
127.0.0.1   domaine_local_1 domaine_local_2
0.0.0.0     site_à_bloquer

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

 

Installer un certificat SSL sur Apache 2

Activation des modules d'Apache

Vous devez préalablement activer le module SSL Apache et éventuellement le module Headers (optionnel : Il permet d'activer le HSTS) :

# Activer le module SSL Apache
a2enmod ssl

# Activer le module Headers
a2enmod headers

# Redémarrer le service pour prendre en compte l'activation des modules
service apache2 restart

Sauvegarde du certificat SSL et de sa clé privée sur le serveur

Nous vous conseillons de créer un répertoire dans "/etc/ssl" et d'y placer l'ensemble des certificats ".cer" ainsi que votre clée privée ".key".

1. S'assurer qu'Apache écoute le port 443 (protocole https) :

Commençons par vérifier si Apache écoute le port 443 (port utilisé par le protocole https). Exécutez la commande ci-dessous, qui doit vous retourner un résultat :

netstat -tanpu | grep "LISTEN" | grep "443" 

En l'absence de résultat, le serveur Web n'écoute pas le port 443. La directive "Listen 443" ne doit pas être présente dans la configuration. Vérifions :

grep -R "Listen" /etc/apache2 

Si aucun résultat n'est retourné par cette commande, vous devez éditer la configuration d'Apache (/etc/apache2/ports.conf) afin d'ajouter :

<IfModule mod_ssl.c>
    Listen 443
</IfModule> 

Il ne vous reste plus qu'à redémarrer Apache pour que cette configuration soit prise en compte. Vérifiez à nouveau si le port 443 est écouté :

# Redémarrez Apache :
service apache2 restart

# Vérifiez qu'Apache écoute bien le port 443 (https) :
netstat -tanpu | grep "LISTEN" | grep "443" 

2. Trouver et copier le Virtual Host actuellement utilisé par Apache en HTTP :

Pour obtenir une configuration identique en HTTP ainsi qu'en HTTPS, nous vous conseillons de dupliquer la configuration déjà utilisée sur le protocole HTTP.

Si votre serveur héberge plusieurs sites web, il doit utiliser la directive ServerName. Vous allez donc pouvoir trouver le VirtualHost à dupliquer via la commande ci-dessous :

# Commencez par vous déplacer dans le répertoire "sites-available"
cd /etc/apache2/sites-available

# Recherchez la configuration d'Apache (généralement présente dans "sites-available")
grep -R "site-a-securiser.fr" /etc/apache2 

Si vous n'obtenez aucun résultat, la directive ServerName ne doit pas être utilisée. Vérifiez si un fichier de configuration est présent dans le répertoire "sites-available".
Si vous n'arrivez pas à trouver le VirtualHost, la configuration chargée par Apache est surement présente dans "/etc/apache2/apache2.conf".

Une fois le VirtualHost trouvé, dupliquez le pour conserver une base de configuration identique sur les deux protocoles (HTTP et HTTPS) ou éditez le "/etc/apache2/apache2.conf"

cp nom-du-vhost.conf nom-du-vhost-ssl.conf 

3. Configuration du VirtualHost Apache pour le protocole HTTPS (port 443) :

Remplacez le port 80 par le port 443 dans la configuration du Virtual Host : <VirtualHost *:443> puis ajoutez la configuration ci-dessous :

# Activation du SSL
SSLEngine On

# Activation de tous les protocoles sécurisés (TLS v1.3 et TLS v1.2) tout en désactivant les protocoles obsolètes (TLS v1.0 et 1.1) et ceux non sécurisés (SSL v2, SSL v3)
SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1

# On active les méthodes de chiffrement, et on désactive les méthodes de chiffrement non sécurisés (par la présence d'un !)
SSLCipherSuite HIGH:!aNULL:!MD5:!ADH:!RC4:!DH:!RSA

# Le navigateur devra choisir une méthode de chiffrement en respectant l'ordre indiquée dans SSLCipherSuite
SSLHonorCipherOrder on

# Chemin vers le certificat SSL de votre nom de domaine
SSLCertificateFile "/etc/ssl/www-nom-domaine-fr/www-nom-domaine-fr.cer"

# Chemin vers la clée privée du certificat SSL de votre nom de domaine
SSLCertificateKeyFile "/etc/ssl/www-nom-domaine-fr/www-nom-domaine-fr.key"

# Chemin vers le certificat SSL racine, puis vers le certificat SSL intermédiaire. Attention : L'ordre est important.
SSLCACertificateFile "/etc/ssl/www-nom-domaine-fr/certificat-racine.cer"
SSLCACertificateFile "/etc/ssl/www-nom-domaine-fr/certificat-intermediaire.cer" 

Si toutes les pages de votre site doivent être sécurisées, ajoutez la directive ci-dessous, qui va activer le HSTS (HTTP Strict Transport Security).

Header always set Strict-Transport-Security "max-age=15768000" 

4. Activer la configuration Apache et tester le bon fonctionnement du SSL :

# Activer le VirtualHost présent dans "sites-available"
a2ensite nom-du-vhost-ssl

# Si toutefois vous devez désactiver ce VirtualHost, exécutez : a2dissite nom-du-vhost-ssl

# Redémarrer Apache pour la prise en compte de ce nouveau VirutalHost
service apache2 restart 

https://www.wistee.fr/installer-ssl/apache2-mod-ssl.html

Virtual host

/etc/apache2/sites-available/nom_de_domaine.conf

<VirtualHost *:80 >
    ServerName template
    DocumentRoot /home/patrick/Sites/template
    <Directory "/home/patrick/Sites/template">
        Require all granted
        AllowOverride all
        Options +Indexes
    </Directory>
</VirtualHost>
Require all denied

 

<VirtualHost *:80>

On accepte les connexions sur n'importe quelle IP du serveur (*) sur le port 80.
ServerName example.comCet hôte virtuel sera seulement appelé pour le nom de domaine example.com…
ServerAlias www.example.com…ainsi que pour le sous-domaine www.example.com. On peut spécifier ici d'autres noms de domaine en les séparant par un espace. On peut aussi utiliser *.example.com pour inclure tous les sous-domaines.
DocumentRoot "/var/www/example"On placera les fichiers du site dans le répertoire /var/www/example.
<Directory "/var/www/example">On spécifie dans cette section des règles pour le répertoire /var/www/example sous cet hôte virtuel.
Options +FollowSymLinksApache suivra les liens symboliques qu'il trouvera dans ce répertoire (et ses descendants).
AllowOverride allOn pourra inclure une configuration personnalisée via un fichier .htaccess.
Require all grantedTous les visiteurs pourront accéder au contenu de ce répertoire. Voir la documentation officielle pour modifier ce comportement. Pour des raisons de sécurité ou de privacité on peut par exemple limiter l'accès au serveur à seulement une ou certaines adresses IP avec une directive du type Require ip 192.168.1.10.
ErrorLog /var/log/apache2/error.example.com.log CustomLog /var/log/apache2/access.example.com.log combinedIl est pratique d'avoir des logs séparés pour chaque hôte virtuel, afin de ne pas mélanger toutes les informations.

 

  • Require all granted => Tout accepter
  • Require host example.org => Accepter example.org
  • Require ip 1.2.3.4 => Accepter 1.2.3.4
  • Require not ip 1.2.3.4 => Refuser 1.2.3.4

Activation des sites

sudo a2ensite template.conf

Tester la configuration

apachectl -t

Rechargement du fichier config apache

sudo service apache2 reload

https://doc.ubuntu-fr.org/apache2