Configurer Apache pour utiliser https/ssl et les certificats clients

apache ssl raspberryCeci est la seconde partie du tutoriel permettant de configurer apache avec une authentification forte et un certificat client sur Raspberry. Voir ici les étapes 1 à 3.

Etape 4 – Configurer votre serveur apache pour utiliser SSL / https

J’utilise ici les paramètres et le site par défaut créé lors de l’installation d’Apache. Si vous avez des sites spécifiques vous n’avez qu’à corriger et remplacer /etc/apache2/sites-available/default par votre propre répertoire de site. 

Editez le fichier :  /etc/apache2/sites-available/default, et modifiez le contenue entre les balises <VirtualHost *:443> </VirtualHost> par les informations suivantes :

<VirtualHost *:443>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www
################################################
###  Default directories
################################################
    <Directory />
            Options FollowSymLinks
            AllowOverride All
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
            AllowOverride All
            Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
            Order allow,deny
            Allow from all
    </Directory>
  
  
################################################
###  SSL settings
################################################
ServerName domain
SSLEngine On
SSLCertificateFile /etc/apache2/cert/server.crt
SSLCACertificateFile /etc/apache2/cert/ca.crt
SSLCertificateKeyFile /etc/apache2/cert/server.nopassphrase.key

################################################
###  Mains directory seting
################################################

<Directory /var/www/>
#   From the Internet only HTTPS + Strong-Cipher + Password
#   or the alternative HTTPS + Strong-Cipher + Client-Certificate
#   If HTTPS is used, make sure a strong cipher is used.
#   Additionally allow client certs as alternative to basic auth.
    SSLVerifyClient      optional
    SSLVerifyDepth       1
    SSLOptions           +FakeBasicAuth +StrictRequire
    SSLRequire           %{SSL_CIPHER_USEKEYSIZE} >= 128
    #   Allow Network Access and/or Basic Auth
    Satisfy              all

    #   HTTP Basic Authentication
    AuthType             basic
    AuthName             "Protected Intranet"
    AuthBasicProvider    file
    AuthUserFile         "/path/to/htpasswd/.htpasswd"
    Require              valid-user
</Directory>


# Possible values include: debug, info, notice, warn, error, crit,
LogLevel warn
ErrorLog ${APACHE_LOG_DIR}/rproxy_error.log
CustomLog ${APACHE_LOG_DIR}/rproxy_access.log combined

</VirtualHost>

Vous devez bien entendu modifier le paramètre AuthUserFile avec l’emplacement réel de votre fichier de mot de passe. Si vous n’en avez pas déjà un vous pouvez l’ajouter par exemple dans : /etc/apache2/secure_dir.

Ensuite, le module ssl doit être activé pour apache :

sudo a2enmod ssl

 

Etape 5 : Adapter le fichier AuthUserFile et redémarrer apache

Cette étape est obligatoire si vous ne souhaitez pas avoir à renseigner un mot de passe si vous possédez un certificat client.

Vous devez simplement exécuter le script si dessous et copier/coller les informations affichées dans votre fichier de mot de passe :

cd /etc/apache2/cert
curl -o https://raw.githubusercontent.com/Sirus10/SSL-Raspberry-Apache/master/export_cert_to_AuthUserFile.sh
chmod +x ./export_cert_to_AuthUserFile.sh
./export_cert_to_AuthUserFile.sh

Les lignes affichées lors de l’exécution du scripts doivent être ajouter dans votre fichier de mots de passe (AuthUserFile) tel quel. (voir ici et ici pour les explications)

Maintenant vous pouvez redémarrer apache :

/etc/init.d/apache2 restart

Etape 6 : Installer les certificats dans votre navigateur

En utilisant filezila ou un autre utilitaire de transfer ftp télécharger les 2 fichiers suivant sur votre ordinateur :

  • ca.cert qui est le certificat de votre autorité de certification (Root CA)
  • client.p12 qui est votre certificat client pour l’authentification

Puis double-cliquez sur le fichier ca.cert  et suivez ces instruction :

Intall root CA cert

Install Root CA cert

Sélectionnez « Trusted Root Certificate Authorities »

Cliquez sur suivant et validez. Vous allez voir la notification confirmant que votre nouvel autorité de certification est validée et ajoutée à votre navigateur comme autorité de confiance. A partir de ce moment tout les certificats signés par cette autorité seront reconnus et validés comme des certificat de confiance.

Il vous reste maintenance à installer le certificat client, pour cela cliquez sur client.p12 et suivez les instructions en laissant les informations par défaut. Si vous avez bien suivis l’étape 2 vous n’aurez pas besoin de renseigner de mot de passe.

Ces deux étapes seront à faire sur tout les ordinateurs depuis lequel vous souhaitez vous connecter à votre Raspberry en mode sécurisée.

Une fois que vous en êtes là vous pouvez relancer votre navigateur internet (complètement pas uniquement les onglets)

pgreen padlockuis vous connecter sur la page web de votre Raspberry comme par exemple: https://votre_nom_de_domaine.net votre navigateur vous demandera de choisir un certificat client, cliquez sur ok et vous serez normalement connecté.

C’est fini, si vous avez suivis l’ensemble des point précédent vous pouvez désormais vous connecter à votre raspberry avec une connexion https sécurisé crypté et une authentification forte.

J’espère que vous avez appréciée ce tutoriel, si vous avez des questions ou des problèmes pour configure votre serveur dites moi le ici je tenterai de vous aider au mieux…

Ps 1 : pour l’étape 6, la méthode pour ajouter un certificat à votre navigateur est valide pour chrome et internet explorer uniquement. Pour firefox c’est un peu diferent je tenterais de vous faire un tutoriel prochainement…

Ps 2 : A ce jour, à moins de passer root sur votre téléphone android il n’y a pas de solution pour ajouter un root certificat sur android; (pour iphone je n’en ai aucune idée)

Ps 3 : prochainement je vous expliquerez comment j’ai configurer mon serveur apache en revers-proxy et ainsi permis une connexion sécurise depuis le web à plusieurs de mes services web tel que domoticz ou RPI-monitor ou pourquoi par une camera IP

2 réflexions sur « Configurer Apache pour utiliser https/ssl et les certificats clients »

  1. Touma02

    Bonjour,

    Pourriez vous expliquer comment mettre en place une authentification uniquement avec les certificats ? J’ai l’impression que mon certificat n’est pas reconnu par le serveur car quand je SSLVERIFY à require je n’ai plus accès au site

    Merci

    Répondre
  2. Ping : Script monitoring certificats SSL / HTTPS | Domotic and stupid geek stuff

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

 

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.