# Redirige automatiquement tout le trafic http vers https
# (Ne pas autoriser le trafic en claire)
# Remplacer "mon-medshake.fr" par le domaine utilisé
ServerName mon-medsahke.fr
ServerAdmin admin@mon-medshake.fr
RedirectMatch permanent ^(.*)$ https://mon-medshake.fr$1
# Trafic https
# Remplacer "mon-medshake.fr" par le domaine utilisé
ServerName mon-medshake.fr
ServerAdmin admin@mon-medshake.fr
#
# Configuration SSL
#
# Charge le Module SSL
SSLEngine On
# Certificat et clé créés par la pki pour le serveur.
# Le certificat ayant été signé par la CA, les clients pourront aussi
# authentifier le serveur.
SSLCertificateFile /var/local/easyrsa/medshake/pki/issued/medshake.crt
SSLCertificateKeyFile /var/local/easyrsa/medshake/pki/private/medshake.key
# Certificat de la CA. Nécessaire pour vérifier l'authenticité des certificats
# des clients.
SSLCACertificateFile /var/local/easyrsa/medshake/pki/ca.crt
# Liste des certificats révoqués, permet de refuser l'accès aux certificats
# déclarés comme compromis.
SSLCARevocationFile /var/local/easyrsa/medshake/pki/crl.pem
# Active la vérification des certificats clients optionnels (certains clients
# du réseau local peuvent se connecter sans certificat pour utiliser des fonctionnalités
# comme phonecapture)
SSLVerifyClient optional
# Limite la vérification aux certificats du client.
# (inutile ici de contrôler toute la chaîne on n'a qu'un niveau)
SSLVerifyDepth 1
# Sécurité renforcée, nous n'utiliserons que la version la plus récente de TLS
# (rejette d'office les clients non suffisamment à jour)
SSLProtocol -all +TLSv1.3
# Ajoute l'entête http pour le HSTS
Header always set Strict-Transport-Security "max-age=0; includeSubDomains"
# Emplacement des fichiers html public de l'instance MedShake EHR/EDC
DocumentRoot /var/www/medshake/EHR/public_html/
DirectoryIndex index.php
# Fichier de log dédié avec un format compatible avec le lecteur de log intégré
# à Medshake
CookieName apacheLogUserID
# /!\ le domaine doit être préfixé d'un point
CookieDomain .mon-medshake.fr
Define MEDSHAKEEHRLOGFILE /var/log/apache2/access_medshake.log
SetEnv MEDSHAKEEHRLOGFILE ${MEDSHAKEEHRLOGFILE}
LogFormat "%{%Y-%m-%d %H:%M:%S}t %{c}a %r %{Cookie}n" usertrack
SetEnvIf Request_URI "\.png$|\.gif$|\.jpg$|\.svg$|\.js$|\.css$|\.map$|\.ico$|\.woff2" do_not_log
CustomLog ${MEDSHAKEEHRLOGFILE} usertrack env=!do_not_log
# Des règles de réécriture d'urls sont nécessaires(voir le public_html/.htaccess)
# On s'assure que le module est bien chargé
RewriteEngine On
# Grâce à "Require expr %{SSL_CLIENT_VERIFY} == 'SUCCESS" l'accès au fichier
# de ce dossier n'est permis qu'aux clients disposant
# d'un certificat signé par la CA et en cours de validité
SetEnv MEDSHAKEEHRPATH /var/www/medshake/EHR/
Require expr %{SSL_CLIENT_VERIFY} == 'SUCCESS'
Options FollowSymLinks
AllowOverride all
# Accès aux url commençant par /phonecapture/ et /pubic/ autorisé pour les
# clients du réseau local sans présenter ce certificat valide
# /!\ Replacer l'addresse ci-dessous par celle de votre réseau local
Require ip 192.168.1.0/24
# client de partout avec un certificat valide
Require expr %{SSL_CLIENT_VERIFY} == 'SUCCESS'
# Autorise l'accès aux assets (js, css et images) et pages de maintenance
# autorisés pour les clients du réseau local sans présenter ce certificat valide
# Ces ressources peuvent êtres mise en cache
Header setifempty Cache-Control "must-revalidate"
# Fixe un bug présent dans le version de apache utilisé dans Debian 10(2.4.38)
# qui gènère une entête http Etag mal formé et empêche un retour 304
# quand la ressource est en cache.
# voir https://bz.apache.org/bugzilla/show_bug.cgi?id=45023#c22
RequestHeader edit "If-None-Match" '^"((.*)-gzip)"$' '"$1", "$2"'
Require ip 192.168.1.0/24
# client de partout avec un certificat valide
Require expr %{SSL_CLIENT_VERIFY} == 'SUCCESS'
# Bloque les accès aux fichiers composer (juste c'est plus propre)
Require all denied