# 9. Intégration d’une application externe dans Vitam

## 9.1. Prérequis

L’application externe devra être en mesure de requêter les composants VITAM `ingest-external` et `access-external` sur leurs ports de service respectifs par le protocole HTTPS.

Il faut donc prévoir une ouverture de flux réseau pour le protocole TCP (selon l’infrastructure en place) sur les ports de service des composants VITAM `ingest-external` et `access-external`.

La sécurisation des connexions HTTP avec les applications externes est déléguée aux composants VITAM `ingest-external` et `access-external` (ou bien éventuellement à un reverse-proxy, selon l’infrastructure de déploiement VITAM retenue).

La création d’un certificat TLS client pour l’application externe est requise afin de permettre l’habilitation et l’authentification applicative des requêtes émises depuis l’application externe vers les composants VITAM ingest-external et access-external.

## 9.2. Intégration de certificats clients de VITAM

Note

Cette section décrit l’ajout de certificats SIA ou personnels (Personae) dans le cadre des procédures d’exploitation de la solution logicielle VITAM. L’intégration de certificats clients de VITAM au déploiement est décrite dans le document d’installation (DIN).

### 9.2.1. Authentification applicative SIA

Le certificat client de l’application externe doit être ajouté dans la base de données du composant `security-internal`, afin de permettre la gestion des habilitations et l’authentification applicative de l’application externe.

L’exemple suivant permet d’ajouter un certificat présent sous `/path/to/certificate` et associé au contexte applicatif portant l’identifiant `contexte_identifier`.

#### 9.2.1.1. Ajout d’un certificat pour l’authentification applicative SIA

    curl -XPOST -H "Content-Type:application/json" 'http://<ip admin security-internal>:<port admin security-internal>/v1/api/identity' -d "
    {
        \"contextId\":\"contexte_identifier\",
        \"certificate\":\"$(base64 /path/to/certificate)\"
    }"

Note

Se repporter à la documentation sur la gestion des habilitations pour ce qui concerne l’ajout de contextes applicatifs.

Avertissement

Lorsque l’authentification du client, par le protocole TLS, est réalisée, la CA du certificat client doit être déployée dans le truststore des composants VITAM `ingest-external` et `access-external`. Dans ce cas de figure, suivre la procédure de la section Mise à jour des certificats, en ayant pris soin au préalable de déposer les certificats de la chaîne de certification client dans le répertoire environments/certs/client-external/ca. Si le certificat client est passé dans le header http (cas de l’authentification applicative par header http X-SSL-CLIENT-CERT), le certificat client n’est alors pas utilisé dans la négociation TLS et il n’est donc pas nécéssaire d’inclure la CA associée dans le truststore des composants VITAM `ingest-external` et `access-external`.

### 9.2.2. Authentification Personae

Le certificat personnel (Personae) doit être ajouté dans la base de données du composant `security-internal`, afin de permettre l’authentification renforcée de l’utilisateur.

Les exemples suivants permettent d’ajouter ou supprimer un certificat présent sous `/path/to/certificate`.

#### 9.2.2.1. Ajout d’un certificat pour l’authentification Personae

    curl -XPOST -H "Content-type: application/octet-stream" --data-binary @/path/to/certificate 'http://<ip admin security-internal>:<port admin security-internal>/v1/api/personalCertificate'

#### 9.2.2.2. Suppression d’un certificat pour l’authentification Personae

    curl -XDELETE -H "Content-type: application/octet-stream" --data-binary @/path/to/certificate 'http://<ip admin security-internal>:<port admin security-internal>/v1/api/personalCertificate'

## 9.3. Révocation de certificats clients de VITAM

La release « R8 » introduit une nouvelle fonctionnalité permettant la révocation des certificats SIA et Personae afin d’empecher des accès non autorisés aux API de la solution logicielle VITAM (vérification dans la couche https des CRL).

Le fonctionnement de la validation des certifcats de la solution logicielle VITAM SIA et Personae par CRL est le suivant :

- L’administrateur transmet à la solution logicielle VITAM le CRL d’un CA qui a émis le certificat présent dans la solution logicielle VITAM, via le point d’API suivant

      http://{{ hosts_security_internal }}:{{vitam.security_internal.port_admin}}/v1/api/crl

Prudence

La CRL fournie doit être obligatoirement au format DER (cf. http://www.ietf.org/rfc/rfc3280.txt »>RFC 3280: Internet X.509 Public Key Infrastructure Certificate and CRL Profile)

Exemple:

    curl -v -X POST -u {{ admin_basic_auth_user }}:{{ admin_basic_auth_password }}  http://{{ hosts_security_internal }}:{{vitam.security_internal.port_admin}}/v1/api/crl -H 'Content-Type: application/octet-stream' --data-binary @/path/to/crl/my.crl

Le paramètre `adminUser` correspond à la valeur `admin_basic_auth_user` déclarée dans le fichier `vitam_security.yml`

Le paramètre `adminPassword` correspond à la valeur `admin_basic_auth_password` déclarée dans le fichier `vault-vitam.yml`

- Le système va contrôler tous les certificats (collections `identity.Certificate` et `identity.PersonalCertificate`) émis par le IssuerDN correspondant à la CRL, en vérifiant si ces derniers sont révoqués ou non. Si c’est le cas, alors la solution logicielle VITAM positionne le statut du certificat révoqué à REVOKED. Cela a pour conséquence le rejet de tout accès aux API VITAM avec utilisation du certificat révoqué (les filtres de sécurité émettront des exceptions dans les journaux de log).
- Une alerte de sécurité est émise dans les journaux en cas de révocation.

## 9.4. Déploiement des keystores

### 9.4.1. Vitam n’est pas encore déployé

Déployer Vitam en suivant la procédure indiquée dans le DIN.

### 9.4.2. Vitam est déjà déployé

Suivre la procédure de la section Mise à jour des certificats.