# 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