Cas 2: Configuration production =============================== Procédure générale ------------------ La procédure suivante s'applique lorsqu'une :term:`PKI` est déjà disponible pour fournir les certificats nécessaires. Les étapes d'intégration des certificats à la solution :term:`Vitam` sont les suivantes : * Générer les certificats avec les bons `key usage` par type de certificat * Déposer les certificats et les autorités de certifications correspondantes dans les bons répertoires. * Renseigner les mots de passe des clés privées des certificats dans le vault ansible ``environments/certs/vault-certs.yml`` * Utiliser le script VITAM permettant de générer les différents *keystores*. .. note:: Rappel pré-requis : vous devez disposer d'une ou plusieurs :term:`PKI` pour tout déploiement en production de la solution logicielle :term:`VITAM`. Génération des certificats -------------------------- En conformité avec le document RGSV2 de l'ANSSI, il est recommandé de générer des certificats avec les caractéristiques suivantes: Certificats serveurs ^^^^^^^^^^^^^^^^^^^^ * Key Usage * digitalSignature, keyEncipherment * Extended Key Usage * TLS Web Server Authentication Les certificats serveurs générés doivent prendre en compte des alias "web" ( ``subjectAltName`` ). Le *subjectAltName* des certificats serveurs ( ``deployment/environments/certs/server/hosts/*`` ) doit contenir le nom DNS du service sur consul associé. Exemple avec un cas standard: .service.. Ce qui donne pour le certificat serveur de access-external par exemple: .. code-block:: text X509v3 Subject Alternative Name: DNS:access-external.service.consul, DNS:localhost Il faudra alors mettre le même nom de domaine pour la configuration de Consul (fichier ``deployment/environments/group_vars/all/advanced/vitam_vars.yml``, variable ``consul_domain`` ) Cas particulier pour ihm-demo et ihm-recette: il faut ajouter le nom :term:`DNS` qui sera utilisé pour requêter ces deux applications, si celles-ci sont appelées directement en frontal https. Certificat clients ^^^^^^^^^^^^^^^^^^ * Key Usage * digitalSignature * Extended Key Usage * TLS Web Client Authentication Certificats d'horodatage ^^^^^^^^^^^^^^^^^^^^^^^^ Ces certificats sont à générer pour les composants ``logbook`` et ``storage``. * Key Usage * digitalSignature, nonRepudiation * Extended Key Usage * Time Stamping Intégration de certificats existants ------------------------------------ Une fois les certificats et :term:`CA` mis à disposition par votre :term:`PKI`, il convient de les positionner sous ``environments/certs/....`` en respectant la structure indiquée ci-dessous. .. only:: html .. figure:: ../../annexes/images/arborescence_certs.svg :align: center Vue détaillée de l'arborescence des certificats .. only:: latex .. figure:: ../../annexes/images/arborescence_certs.png :align: center Vue détaillée de l'arborescence des certificats .. tip:: Dans le doute, n'hésitez pas à utiliser la :term:`PKI` de test (étapes de génération de :term:`CA` et de certificats) pour générer les fichiers requis au bon endroit et ainsi observer la structure exacte attendue ; il vous suffira ensuite de remplacer ces certificats "placeholders" par les certificats définitifs avant de lancer le déploiement. Ne pas oublier de renseigner le vault contenant les *passphrases* des clés des certificats: ``environments/certs/vault-certs.yml`` Pour modifier/créer un vault ansible, se référer à la documentation Ansible sur `cette url `_. .. caution:: Durant l'installation de VITAM, il est nécessaire de créer un certificat "vitam-admin-int" (à placer sous ``deployment/environments/certs/client-external/clients/vitam-admin-int``). .. caution:: Durant l'installation des extra de VITAM, il est nécessaire de créer un certificat "gatling" (à placer sous ``deployment/environments/certs/client-external/clients/gatling``). Intégration de certificats clients de :term:`VITAM` --------------------------------------------------- .. _external_sia_certs_integration: Intégration d'une application externe (cliente) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Dans le cas d'ajout de certificats :term:`SIA` externes au déploiement de la solution logicielle :term:`VITAM` : * Déposer le certificat (``.crt``) de l'application client dans ``environments/certs/client-external/clients/external/`` * Déposer les :term:`CA` du certificat de l'application (``.crt``) dans ``environments/certs/client-external/ca/`` * Editer le fichier ``environments/group_vars/all/advanced/vitam_security.yml`` et ajouter le(s) entrée(s) supplémentaire(s) (sous forme répertoire/fichier.crt, exemple: ``external/mon_sia.crt``) dans la directive ``admin_context_certs`` pour que celles-ci soient associés aux contextes de sécurité durant le déploiement de la solution logicielle :term:`VITAM`. .. note:: Les certificats :term:`SIA` externes ajoutés par le mécanisme de déploiement sont, par défaut, rattachés au contexte applicatif d'administration ``admin_context_name`` lui même associé au profil de sécurité ``admin_security_profile`` et à la liste de tenants ``vitam_tenant_ids`` (voir le fichier ``environments/group_vars/all/advanced/vitam_security.yml``). Pour l'ajout de certificats applicatifs associés à des contextes applicatifs autres, se référer à la procédure du document d'exploitation (:term:`DEX`) décrivant l'intégration d’une application externe dans Vitam. .. _personal_certs_integration: Intégration d'un certificat personnel (*personae*) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Dans le cas d'ajout de certificats personnels au déploiement de la solution logicielle :term:`VITAM` : * Déposer le certificat personnel (``.crt``) dans ``environments/certs/client-external/clients/external/`` * Editer le fichier ``environments/group_vars/all/advanced/vitam_security.yml`` et ajouter le(s) entrée(s) supplémentaire(s) (sous forme répertoire/fichier.crt, exemple: ``external/mon_personae.crt``) dans la directive ``admin_personal_certs`` pour que ceux-ci soient ajoutés à la base de donées du composant `security-internal` durant le déploiement de la solution logicielle :term:`VITAM`. Cas des offres objet ----------------------- Placer le ``.crt`` de la :term:`CA` dans ``deployment/environments/certs/server/ca``. Absence d'usage d'un *reverse* --------------------------------- Dans ce cas, il convient de : - supprimer le répertoire ``deployment/environments/certs/client-external/clients/reverse`` - supprimer les entrées **reverse** dans le fichier ``vault_keystore.yml``