GNU/Linux >> Tutoriels Linux >  >> Linux

Comment sécuriser une connexion SSL avec Apache sur Ubuntu 18.04

Configurer une connexion SSL (Secure Sockets Layer), vous permet d'ajouter un protocole de cryptage asymétrique supplémentaire au HTTP commun. Le protocole SSL peut être utile pour renforcer soit le système d'authentification d'un site Web, soit l'échange de données entre une application et le serveur. Dans ce guide, vous verrez comment configurer une connexion SSL et activer HTTPS sur Apache avec Ubuntu 18.04.

Tout d'abord, connectez-vous à votre serveur via une connexion SSH. Si vous ne l'avez pas encore fait, il est recommandé de suivre notre guide pour vous connecter en toute sécurité avec le protocole SSH. Dans le cas d'un serveur local, passez à l'étape suivante et ouvrez le terminal de votre serveur.

Obtenir un certificat SSL

Pour établir une connexion sécurisée, Apache aura besoin d'un certificat SSL qui peut être obtenu auprès d'une autorité de certification (CA). Pour plus de commodité, dans cet exemple, nous utiliserons un certificat auto-signé ou auto-signé, utilisé uniquement dans les environnements de test et de développement. Pour obtenir un certificat auto-signé, consultez notre guide Créer un certificat SSL auto-signé.

Si vous souhaitez obtenir un certificat SSL gratuit émis par une autorité de certification, suivez notre guide sur Comment sécuriser Apache avec Let's Encrypt et Ubuntu 18.04.

Remarque importante :

Lors de la création du certificat, saisissez l'adresse IP et/ou le nom de domaine de votre serveur lorsqu'on vous demande le nom commun :

Common Name (e.g. server FQDN or YOUR name) []: domain.com

Après avoir obtenu le certificat, créez le dossier /etc/certificate :

$ sudo mkdir /etc/certificate

Ensuite, enregistrez-y le certificat et la clé privée.

Configuration des paramètres Apache SSL

Poursuivez en définissant les directives pour la connexion sécurisée qu'Apache va créer. Pour cela, créez le fichier ssl-params.conf dans le répertoire Apache conf-available :

$ sudo nano /etc/apache2/conf-available/ssl-params.conf

Collez la configuration de base suivante dans le fichier nouvellement créé :

SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
    
    SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
    
    SSLHonorCipherOrder On
    
    
    Header always set X-Frame-Options DENY
    
    Header always set X-Content-Type-Options nosniff
    
    # Requires Apache >= 2.4
    
    SSLCompression off
    
    SSLUseStapling on
    
    SSLStaplingCache "shmcb:logs/stapling-cache(150000)"
    
    
    # Requires Apache >= 2.4.11
    
    SSLSessionTickets Off

Ensuite, enregistrez et fermez le fichier.

Comment changer l'hôte virtuel

Ensuite, modifiez la configuration SSL du Virtual Host du domaine que vous souhaitez protéger avec une connexion SSL. Dans ce didacticiel, la configuration SSL de l'hôte virtuel Apache par défaut sera utilisée, à titre d'exemple.

Ouvrez la configuration SSL de l'hôte virtuel :

$ sudo nano /etc/apache2/sites-available/default-ssl.conf

Vous trouverez un fichier structuré comme suit :

<IfModule mod_ssl.c>
    
            <VirtualHost _default_:443>
    
                    ServerAdmin [email protected]
                     
    
                    DocumentRoot /var/www/html
                     
    
                    ErrorLog ${APACHE_LOG_DIR}/error.log
    
                    CustomLog ${APACHE_LOG_DIR}/access.log combined
                     
    
                    SSLEngine on
                     
    
                    SSLCertificateFile      /etc/ssl/certs/ssl-cert-snakeoil.pem
    
                    SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
                     
    
                    <FilesMatch "\.(cgi|shtml|phtml|php)$">
    
                                    SSLOptions +StdEnvVars
    
                    </FilesMatch>
    
                    <Directory /usr/lib/cgi-bin>
    
                                    SSLOptions +StdEnvVars
    
                    </Directory>
                     
    
            </VirtualHost>
    
    </IfModule>

Configurez correctement la directive ServerAdmin en saisissant votre email et ajoutez la directive ServerName suivie de votre domaine ou de l'adresse IP de votre serveur.

Enfin, modifiez le chemin indiqué par les directives SSLCertificateFile et SSLCertificateKeyFile, en saisissant respectivement le chemin de votre certificat et de votre clé privée .

Vous obtiendrez un résultat semblable au suivant :

<IfModule mod_ssl.c>
    
            <VirtualHost _default_:443>
    
                    ServerAdmin [email protected]
    
                    ServerName mydomain.com
                     
    
                    DocumentRoot /var/www/html
                     
    
                    ErrorLog ${APACHE_LOG_DIR}/error.log
    
                    CustomLog ${APACHE_LOG_DIR}/access.log combined
                     
    
                    SSLEngine on
                     
    
                    SSLCertificateFile      /etc/certificate/certificate.crt
    
                    SSLCertificateKeyFile /etc/certificate/private.key
                     
    
                    <FilesMatch "\.(cgi|shtml|phtml|php)$">
    
                                    SSLOptions +StdEnvVars
    
                    </FilesMatch>
    
                    <Directory /usr/lib/cgi-bin>
    
                                    SSLOptions +StdEnvVars
    
                    </Directory>
                     
    
            </VirtualHost>
    
    </IfModule>

Ensuite, enregistrez et fermez le fichier.

Comment configurer le pare-feu

En cas de pare-feu sur votre système, configurez-le pour autoriser le trafic HTTP et le trafic HTTPS sur votre machine.

Lorsque vous utilisez le pare-feu UFW, certains profils préinstallés pour Apache sont disponibles. Voyons donc comment les activer.

Pour vérifier les profils disponibles installés dans le pare-feu UFW, exécutez cette commande :

$ sudo ufw app list

Une liste semblable à la suivante s'affichera à l'écran :

Available applications:
    
      Apache
    
      Apache Full
    
      Apache Secure
    
      OpenSSH

Pour autoriser le trafic HTTP (Port 80) et HTTPS (Port 443), utilisez le profil "Apache Full".

Vérifiez les informations de profil comme suit :

$ sudo ufw app info "Apache Full"

La description du profil d'écran s'affichera :

Profile: Apache Full
    
    Title: Web Server (HTTP,HTTPS)
    Description: Apache v2 is the next generation of the omnipresent Apache web
    server.
    
    Ports:
    80,443/tcp

Après avoir vérifié le profil, activez-le :

$ sudo ufw allow in "Apache Full"

Comment configurer Apache

À ce stade, des modifications peuvent être apportées à la configuration d'Apache.

Activez les modules mod_ssl et mod_headers :

$ sudo a2enmod ssl
    
    $ sudo a2enmod headers

Activer la lecture de la configuration SSL créée précédemment :

$ sudo a2enconf ssl-params

Activer l'hôte virtuel SSL par défaut :

$ sudo a2ensite default-ssl

Vérifiez que vous n'avez pas fait d'erreurs de syntaxe dans les fichiers de configuration d'Apache :

$ sudo apache2ctl configtest

Si le message "Syntaxe OK" apparaît à l'écran, procédez au redémarrage d'Apache :

$ sudo systemctl restart apache2

Comment vérifier la connexion sécurisée

Ouvrez votre navigateur en vous connectant au domaine ou à l'adresse IP du Virtual Host que vous avez configuré, en veillant à utiliser le protocole https

https://mydomain.com

Linux
  1. Comment sécuriser Nginx avec Letsencrypt sur Ubuntu 20.04

  2. Comment sécuriser vsFTPd avec SSL/TLS

  3. Comment activer le protocole HTTPS avec Apache 2 sur Ubuntu 20.04

  4. Comment installer PHP-FPM avec Apache sur Ubuntu 22.04

  5. Comment installer Elasticsearch sur Ubuntu 22.04 avec SSL

Comment installer Drupal sur un serveur Ubuntu 20.04 avec Apache

Comment installer Apache sur Ubuntu 20.04

Comment configurer l'authentification par mot de passe avec Apache sur Ubuntu 18.04

Comment activer HTTP/2 avec Apache dans Ubuntu

Comment installer Apache Tomcat 10 sur Ubuntu 20.04 avec Nginx

Comment sécuriser Apache avec Let's Encrypt sur Ubuntu 20.04