Mise en place de la lecture de cartes CPx.

Ce tutoriel explique comment développer une solution afin d’authentifier des utilisateurs de cartes CPX.

Introduction

La méthode standard que l’on utilise est l’authentification par certificat en utilisant la cryptolib de l’ASIP.

  • Côté client, il faut installer la cryptolib, un logiciel qui s’occupera de détecter automatiquement le lecteur de cartes branché ainsi que la carte.
    Lorsque le client se connecte sur le site, la cryptolib prendra la main et utilisera les informations de la carte, il n’y a donc pas de développement à faire de ce côté là.
  • Côté serveur, il faut configurer Apache sur une route précise pour qu’il demande une authentification par certificat.

Exemple de fichier Apache

.<VirtualHost *:443>
.        SSLEngine on
.        SSLProxyEngine on
.        #SSLVerifyClient none
.        SSLCACertificateFile /etc/ssl/certs/certificats.cer
.        DocumentRoot /var/www/
.                <Directory />
.                                Options Indexes FollowSymLinks MultiViews
.                                AllowOverride None
.                                Order deny,allow
.                                deny from all
.                </Directory>
.        <Location « /terminal/modules/cps »>
.                SSLVerifyClient optional_no_ca
.                SSLVerifyDepth 5
.                SSLRequireSSL
.                SSLOptions +StdEnvVars +ExportCertData
.                SSLRenegBufferSize 104860000
.        </Location>
.</VirtualHost>

Dans cet exemple de fichier, Apache demandera automatiquement un certificat si on tente de se connecter sur l’url /terminal/modules/cps.

Le certificat doit correspondre à /etc/ssl/certs/certificats.cer, ces certificats sont récupérables sur le site de l’ASIP : https://integrateurs-cps.asipsante.fr/

On peut également décommenter la ligne SSLVerifyClient none qui permet afin de s’assurer que tout est fonctionnel avant l’intégration du certificat.

Côté client, le certificat est contenu dans la carte CPx. Lors de la connexion à la page, la cryptolib s’activera automatiquement et demandera son code PIN à l’utilisateur.

Une fois le code PIN entré et validé par la cryptolib, le certificat est envoyé et valide la connexion.

Authentification à partir des données de la carte CPx

Une fois validé, le client arrive sur /terminal/modules/cps/index.php. Dans ce script, on peut alors récupérer les données de l’utilisateur dans la variable $_SERVER.

Exemple : la variable $_SERVER[‘SSL_CLIENT_S_DN_CN’] contient l’identifiant de la carte CPx qui, côté terminal, fait le lien avec l’utilisateur.

Un var_dump($_SERVER) permettra de voir l’ensemble des données utilisables.

Document de référence de l’ASIP : Télécharger