Certificats SSL¶
Toutes les connexions utilisateurs passent par un service Traefik. L’infrastructure utilise des certificats SSL pour l’exposition du Portail à travers Traefik ainsi que pour les communications internes de la plateforme des différents services.
Important
Il est conseillé d’utiliser une PKI différente pour les communications internes de celle utilisée pour Traefik.
Traefik¶
Trois modes sont disponibles :
Certificat par défaut¶
Par défaut, un certificat autosigné est généré automatiquement lors de la création du conteneur Traefik. Ce mode est adapté pour des environnements de test, mais il n’est pas recommandé en production.
Certificat local¶
Vous pouvez fournir un certificat et une clé stockés sur la machine Ansible. Le rôle reemo-infra se charge de déployer ces fichiers sur les serveurs hébergeant Traefik.
Exemple d’inventaire :
TRAEFIK_SSL_CERTS:
- cert_file: "/localpath/to/cert.crt"
key_file: "/localpath/to/key.key"
Certificat déjà présent sur le serveur¶
Si les certificats sont déjà installés sur les serveurs cibles, vous pouvez indiquer leurs chemins locaux. Ils seront ensuite montés directement dans le conteneur Traefik.
Exemple d’inventaire :
TRAEFIK_SSL_CERTS_REMOTE:
- cert_file_remotepath: "/remotepath/to/cert.crt"
key_file_remotepath: "/remotepath/to/key.key"
Communication internes¶
PKI par défaut¶
Le rôle Ansible reemo-infra embarque une PKI dédiée complète et prête à l’emploi. Elle permet un déploiement simple avec des communications internes chiffrées et authentifiées.
CA générée automatiquement¶
Il est possible d’utiliser une autorité de certification (CA) générée automatiquement lors de l’exécution du rôle reemo-infra.
Étapes à suivre :
Créer un répertoire local sur la machine Ansible, accessible en écriture par l’utilisateur exécutant Ansible.
Ajouter dans le fichier d’inventaire les options nécessaires pour activer cette fonctionnalité.
all:
vars:
LOCAL_PATH: "/opt/reemo/ssl"
INITCA_ENABLE: "true"
infra_manager:
hosts:
infra_manager1:
ansible_host: "10.0.0.1"
infra_manager2:
ansible_host: "10.0.0.2"
infra_manager3:
ansible_host: "10.0.0.3"
Lors du lancement du rôle, une CA sera créée automatiquement dans ce répertoire. Les clés et certificats associés seront ensuite exportés vers le cluster Docker Swarm sous forme de Secrets et montés dans les différents conteneurs qui en ont besoin.
Configuration manuelle¶
Il est aussi possible de générer soi-même les certificats SSL pour les URLs :
reemo_portalreemo_portaladminreemo_apireemo_proapireemo_signalreemo_provisionreemo_prorelayapireemo_procloudapireemo_relayws
Il faut ensuite renseigner dans l’inventaire Ansible les chemins locaux des clés et certificats. Ils seront copiés automatiquement vers le cluster Docker Swarm par le rôle reemo-infra.
Exemple :
all:
vars:
API_LICENSE: "ewogICAg ... Uw5NXhGVDF0NFU2TkxOdjQvZU53PT0iCiAgICC9Cn0="
...
infra_manager:
hosts:
infra_manager1:
ansible_host: "10.0.0.1"
infra_manager2:
ansible_host: "10.0.0.2"
infra_manager3:
ansible_host: "10.0.0.3"
vars:
CA_SSL_CRT_LOCALPATH: "/local/path/ca.crt"
API_SSL_CRT_LOCALPATH: "/local/path/reemo_api.crt"
API_SSL_KEY_LOCALPATH: "/local/path/reemo_api.key"
PROAPI_SSL_CRT_LOCALPATH: "/local/path/reemo_proapi.crt"
PROAPI_SSL_KEY_LOCALPATH: "/local/path/reemo_proapi.key"
PRORELAYAPI_SSL_CRT_LOCALPATH: "/local/path/reemo_prorelayapi.crt"
PRORELAYAPI_SSL_KEY_LOCALPATH: "/local/path/reemo_prorelayapi.key"
SIGNAL_SSL_CRT_LOCALPATH: "/local/path/reemo_signal.crt"
SIGNAL_SSL_KEY_LOCALPATH: "/local/path/reemo_signal.key"
PORTAL_SSL_CRT_LOCALPATH: "/local/path/reemo_portal.crt"
PORTAL_SSL_KEY_LOCALPATH: "/local/path/reemo_portal.key"
TRAEFIK_SSL_CERTS:
- cert_file: "/local/path/domain.crt"
key_file: "/local/path/domain.key"