Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
doc:access_distant [2023/11/10 23:04] |
doc:access_distant [2023/11/12 22:22] (Version actuelle) |
||
---|---|---|---|
Ligne 9: | Ligne 9: | ||
Ce document décrit des moyens permettant de fournir un accès distant (entendez par là un accès depuis un autre endroit que le réseau local) à son instance MedShake EHR/EDC hébergée dans le local du professionnel de santé en ajoutant une couche d' | Ce document décrit des moyens permettant de fournir un accès distant (entendez par là un accès depuis un autre endroit que le réseau local) à son instance MedShake EHR/EDC hébergée dans le local du professionnel de santé en ajoutant une couche d' | ||
- | Ce document ne décrit pas comment effectuer le [[wpfr> | + | Ce document ne décrit pas comment effectuer le [[wpfr> |
Ici on part du principe que votre installation est conforme à celle décrite dans [[medshake>/ | Ici on part du principe que votre installation est conforme à celle décrite dans [[medshake>/ | ||
- | * Système d' | + | * Système d' |
- | * Serveur web Apache | + | * Serveur web Apache2 |
Si ce n'est pas le cas, il vous faudra sûrement apporter des adaptations à la procédure selon votre environnement. | Si ce n'est pas le cas, il vous faudra sûrement apporter des adaptations à la procédure selon votre environnement. | ||
Ligne 45: | Ligne 45: | ||
L’objectif est d' | L’objectif est d' | ||
- | Pour cela nous allons nous appuyer sur la mise en place d'une [[wpfr> | + | Pour cela nous allons nous appuyer sur la mise en place d'une [[wpfr> |
<WRAP center round info 60%> | <WRAP center round info 60%> | ||
Ligne 88: | Ligne 88: | ||
* La vérification des certificats des clients directement avec Apache. | * La vérification des certificats des clients directement avec Apache. | ||
- | * La vérification des certificats des clients par ' | + | * La vérification des certificats des clients par ' |
Dans les deux cas, il nous faudra disposer de notre CA. Il faut donc procéder en deux étapes : | Dans les deux cas, il nous faudra disposer de notre CA. Il faut donc procéder en deux étapes : | ||
Ligne 103: | Ligne 103: | ||
Cette méthode est moins " | Cette méthode est moins " | ||
- | Par contre ,la maintenance du système et les audits de sécurité seront plus simples, car nous avons un composant de moins à gérer (le serveur VPN). De plus, la mise en place côté client est aussi plus simple, car nous n' | + | Par contre, la maintenance du système et les audits de sécurité seront plus simples, car nous avons un composant de moins à gérer (le serveur VPN). De plus, la mise en place côté client est aussi plus simple, car nous n' |
Plutôt recommandé si nous avons une base d' | Plutôt recommandé si nous avons une base d' | ||
Ligne 111: | Ligne 111: | ||
Cette méthode est plus " | Cette méthode est plus " | ||
- | En contrepartie, | + | En contrepartie, |
Plutôt recommandé si nous avons une base d' | Plutôt recommandé si nous avons une base d' | ||
Ligne 133: | Ligne 133: | ||
</ | </ | ||
- | Il faut un endroit pour y placer notre CA. Nous allons éviter de la placer quelque part dans le dossier ''/ | + | Il faut un endroit pour y placer notre CA. Nous allons éviter de la placer quelque part dans le dossier ''/ |
<code bash> | <code bash> | ||
Ligne 142: | Ligne 142: | ||
</ | </ | ||
- | On va maintenant créer une configuration pour Easy-RSA spécifique à la CA. La commande '' | + | On va maintenant créer une configuration pour Easy-RSA spécifique à la CA. La commande '' |
<code bash> | <code bash> | ||
Ligne 201: | Ligne 201: | ||
</ | </ | ||
- | Puis on va créer le certificat et la clé privée associée pour la CA. Un mot de passe va être demandé pour protéger la clé privée de la CA, **attention | + | Puis on va créer le certificat et la clé privée associée pour la CA. Un mot de passe va être demandé pour protéger la clé privée de la CA. **Attention |
<code bash> | <code bash> | ||
Ligne 279: | Ligne 279: | ||
</ | </ | ||
- | Puis il ne reste plus qu'à générer le certificat avec '' | + | Puis il ne reste plus qu'à générer le certificat avec '' |
* '' | * '' | ||
- | * '' | + | * '' |
<code bash> | <code bash> | ||
Ligne 371: | Ligne 371: | ||
<WRAP center round important 80%> | <WRAP center round important 80%> | ||
- | Attention : on suppose aussi qu' | + | Attention : on suppose aussi qu' |
</ | </ | ||
Ligne 400: | Ligne 400: | ||
# Certificat et clé créés par la pki pour le serveur. | # 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 certificat ayant été signé par la CA, les clients pourront aussi |
- | # le serveur. | + | # authentifier |
SSLCertificateFile / | SSLCertificateFile / | ||
SSLCertificateKeyFile / | SSLCertificateKeyFile / | ||
- | # Certificat de la CA. Nécessaire pour vérifier l' | + | # Certificat de la CA. Nécessaire pour vérifier l' |
+ | # des clients. | ||
SSLCACertificateFile / | SSLCACertificateFile / | ||
- | # Liste des certificats révoqués, permet de refuser l' | + | # Liste des certificats révoqués, permet de refuser l' |
+ | # déclarés comme compromis. | ||
SSLCARevocationFile / | SSLCARevocationFile / | ||
- | # Active la vérification des certificats clients | + | # Active la vérification des certificats clients |
+ | # du réseau local peuvent se connecter sans certificat | ||
+ | # comme phonecapture) | ||
SSLVerifyClient optional | SSLVerifyClient optional | ||
# Limite la vérification aux certificats du client. | # Limite la vérification aux certificats du client. | ||
# (inutile ici de contrôler toute la chaîne on n'a qu'un niveau) | # (inutile ici de contrôler toute la chaîne on n'a qu'un niveau) | ||
- | SSLCARevocationCheck leaf | ||
SSLVerifyDepth 1 | SSLVerifyDepth 1 | ||
# Sécurité renforcée, nous n' | # Sécurité renforcée, nous n' | ||
- | # (rejette d' | + | # (rejette d' |
SSLProtocol -all +TLSv1.3 | SSLProtocol -all +TLSv1.3 | ||
# Ajoute l' | # Ajoute l' | ||
Ligne 424: | Ligne 427: | ||
DirectoryIndex index.php | DirectoryIndex index.php | ||
- | # Fichier de log dédié avec un format compatible avec le lecteur de log intégré à Medshake | + | # Fichier de log dédié avec un format compatible avec le lecteur de log intégré |
+ | # à Medshake | ||
CookieName apacheLogUserID | CookieName apacheLogUserID | ||
# /!\ le domaine doit être préfixé d'un point | # /!\ le domaine doit être préfixé d'un point | ||
Ligne 434: | Ligne 438: | ||
CustomLog ${MEDSHAKEEHRLOGFILE} usertrack env=!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/ | + | # Des règles de réécriture d'urls sont nécessaires(voir le public_html/ |
# On s' | # On s' | ||
RewriteEngine On | RewriteEngine On | ||
Ligne 448: | Ligne 452: | ||
</ | </ | ||
| | ||
- | # Accès aux url commençant par / | + | # Accès aux url commençant par / |
+ | # clients du réseau local sans présenter ce certificat valide | ||
< | < | ||
# /!\ Replacer l' | # /!\ Replacer l' | ||
Ligne 456: | Ligne 461: | ||
</ | </ | ||
- | # Autorise l' | + | # Autorise l' |
+ | # autorisés pour les clients du réseau local sans présenter ce certificat valide | ||
< | < | ||
# Ces ressources peuvent êtres mise en cache | # Ces ressources peuvent êtres mise en cache | ||
Header setifempty Cache-Control " | Header setifempty Cache-Control " | ||
- | # Fixe un bug présent dans le version de apache utilisé dans Debian 10 (2.4.38) | + | # 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 | + | # qui gènère une entête http Etag mal formé et empêche |
- | # quant la ressource est en cache. | + | # quand la ressource est en cache. |
- | # voire https:// | + | # voir https:// |
RequestHeader edit " | RequestHeader edit " | ||
Require ip 192.168.1.0/ | Require ip 192.168.1.0/ | ||
Ligne 478: | Ligne 484: | ||
<WRAP center round tip 60%> | <WRAP center round tip 60%> | ||
- | Noubliez | + | N' |
<code bash> | <code bash> | ||
Ligne 530: | Ligne 536: | ||
</ | </ | ||
- | Il faut aussi que le service puisse accéder à la CRL pour vérifier la validité des certificats des clients, or la CRL doit être lisible par le service une fois que ce dernier est chrooté. De plus le service ne tournera pas non plus avec les droits //root// il faut donc que la CRL soit lisible par tout le monde. Nous ferons donc ceci : | + | Il faut aussi que le service puisse accéder à la CRL pour vérifier la validité des certificats des clients, or la CRL doit être lisible par le service une fois que ce dernier est chrooté. De plus, le service ne tournera pas non plus avec les droits //root//, il faut donc que la CRL soit lisible par tout le monde. Nous ferons donc ceci : |
<code base> | <code base> | ||
Ligne 541: | Ligne 547: | ||
</ | </ | ||
- | Passons maintenant à la configuration du serveur OpenVPN elle-même. Sous Debian et dérivés on dispose d' | + | Passons maintenant à la configuration du serveur OpenVPN elle-même. Sous Debian et dérivés on dispose d' |
<file openvpn / | <file openvpn / | ||
Ligne 561: | Ligne 567: | ||
#port 1194 | #port 1194 | ||
# Compression lz4. Peut être remplacé par lzo | # Compression lz4. Peut être remplacé par lzo | ||
- | # mais dois être indiqué sur la configuration | + | # mais doit être indiqué sur la configuration |
# cliente | # cliente | ||
compress lz4 | compress lz4 | ||
Ligne 628: | Ligne 634: | ||
</ | </ | ||
- | Pour démarrer le serveur on précise l' | + | Pour démarrer le serveur on précise l' |
<code bash> | <code bash> | ||
Ligne 685: | Ligne 691: | ||
DirectoryIndex index.php | DirectoryIndex index.php | ||
- | # Fichier de log dédié avec un format compatible avec le lecteur de log intégré à Medshake | + | # Fichier de log dédié avec un format compatible avec le lecteur de log intégré |
+ | # à Medshake | ||
CookieName apacheLogUserID | CookieName apacheLogUserID | ||
# /!\ le domaine doit être préfixé d'un point | # /!\ le domaine doit être préfixé d'un point | ||
Ligne 695: | Ligne 702: | ||
CustomLog ${MEDSHAKEEHRLOGFILE} usertrack env=!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/ | + | # Des règles de réécriture d'urls sont nécessaires(voir le public_html/ |
# On s' | # On s' | ||
RewriteEngine On | RewriteEngine On | ||
| | ||
- | # N' | + | # N' |
+ | # dans ce dossier | ||
< | < | ||
SetEnv MEDSHAKEEHRPATH / | SetEnv MEDSHAKEEHRPATH / | ||
Ligne 707: | Ligne 715: | ||
</ | </ | ||
| | ||
- | # Accès aux url commençant par / | + | # Accès aux url commençant par / |
+ | # clients du réseau local (utilisation phone capture et signature des documents) | ||
< | < | ||
# /!\ Replacer l' | # /!\ Replacer l' | ||
Ligne 714: | Ligne 723: | ||
</ | </ | ||
- | # Autorise l' | + | # Autorise l' |
+ | # autorisés aussi pour les clients du réseau local | ||
< | < | ||
# Ces ressources peuvent êtres mises en cache | # Ces ressources peuvent êtres mises en cache | ||
Header setifempty Cache-Control " | Header setifempty Cache-Control " | ||
- | # Fixe un bug présent dans le version de apache utilisé dans Debian 10 (2.4.38) | + | # 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ée et empéche un retour 304 | # qui gènère une entête http Etag mal formée et empéche un retour 304 | ||
# quand la ressource est en cache. | # quand la ressource est en cache. | ||
- | # voire https:// | + | # voir https:// |
RequestHeader edit " | RequestHeader edit " | ||
Require ip 192.168.1.0/ | Require ip 192.168.1.0/ | ||
Ligne 735: | Ligne 745: | ||
<WRAP center round tip 60%> | <WRAP center round tip 60%> | ||
- | Noubliez | + | N' |
<code bash> | <code bash> | ||
Ligne 755: | Ligne 765: | ||
==== Côté client ==== | ==== Côté client ==== | ||
- | Il faut déjà disposer du logiciel OpenVPN sur les postes clients **y compris sur les smartphones si nous voulons accéder à l' | + | Il faut déjà disposer du logiciel OpenVPN sur les postes clients **y compris sur les smartphones si nous voulons accéder à l' |
- | Les clients auront besoin de récupérer leur fichier PKCS12 | + | Les clients auront besoin de récupérer leur fichier PKCS12 |
<WRAP center round important 60%> | <WRAP center round important 60%> | ||
- | Attention au fichier clé pour l' | + | Attention au fichier clé pour l' |
</ | </ | ||
- | Voici un exemple de fichier de configuration client correspondant à la configuration serveur créé précédemment. Il est divisé en deux partis | + | Voici un exemple de fichier de configuration client correspondant à la configuration serveur créé précédemment. Il est divisé en deux parties |
* Une fixe qui ne change pas d'un client à l' | * Une fixe qui ne change pas d'un client à l' |