Certificat CA dans Docker

Pour connecter des services utilisant un certificat TLS auto-signé ou interne à l’entreprise, l’autorité de certification racine ou intermédiaire correspondante doit être ajoutée au magasin de confiance du conteneur Relution afin que la connexion soit considérée comme fiable. Selon la version de Relution, différentes méthodes s’appliquent.


Ajout de certificats via l’interface utilisateur

Nouveau dans 26.4

À partir de la version 26.4, l’image Docker de Relution est basée sur Ubuntu et non plus sur AlmaLinux. Le chemin /etc/pki/ca-trust/source/anchors/ n’existe donc plus dans le conteneur, ce qui fait échouer un script de copie basé sur ce chemin. À partir de Relution 26.4, les certificats CA sont donc ajoutés via l’interface utilisateur — ce qui permet également d’ajuster la configuration pendant le fonctionnement du système.

Les étapes nécessaires sont les suivantes :

  • Un script de démarrage existant (variable d’environnement RELUTION_PRERUN_SCRIPT dans docker-compose.yml) est retiré de la configuration, puis le conteneur Relution est redémarré.
  • La connexion s’effectue dans l’organisation globale.
  • Sous ParamètresCertificats, les certificats CA souhaités sont téléchargés (voir Gestion des certificats →).
  • Sous ParamètresConfiguration de confiance TLSCertificats de confiance, les certificats CA téléchargés sont sélectionnés dans la bibliothèque de certificats via Ajouter un certificat.

Intégration par script (avant Relution 26.4)

Afficher les instructions

De plus, un futur passage à un conteneur rootless supprimera de manière générale la possibilité d’installer des certificats via la CLI après coup.

Sur les versions de Relution antérieures à 26.4 — avec une image Docker basée sur AlmaLinux —, un certificat peut être chargé dans le conteneur via un script de démarrage comme décrit ci-dessous. Dans l’exemple ci-dessous, un sous-répertoire selfsigned a été créé dans le répertoire où docker-compose.yml a été placé, contenant le certificat et le script associé. Un fichier avec le contenu suivant doit être créé dans ce répertoire. Dans l’exemple, le fichier est nommé trust_selfsigned.sh. Le certificat à copier porte le nom de fichier CAcert.pem.

L’exécution du script sur une image Docker à partir de Relution 26.4 produit l’erreur suivante :

INFO: Source pre-run script from /opt/relution/selfsigned/trust_selfsigned.sh
cp: cannot create regular file '/etc/pki/ca-trust/source/anchors/': No such file or directory

Script

# !/bin/bash

cp /opt/selfsigned/CAcert.pem /etc/pki/ca-trust/source/anchors/
update-ca-trust
echo "Self-signed CA certificate has been added to OS trust store" (Le certificat auto-signé de l'autorité de certification a été ajouté au magasin de confiance du système d'exploitation)

Ensuite, dans docker-compose.yml, le script et le certificat doivent être montés.

Monter le script et le certificat

services :
  relution :
    environnement :
      ...
      - RELUTION_PRERUN_SCRIPT=/opt/selfsigned/trust_selfsigned.sh
    ...
    volumes :
      - './application.yml:/opt/relution/application.yml'
      - './selfsigned:/opt/selfsigned'

Sortie de la commande curl

La fonction peut être testée avec un CURL.

[root@d4b846425890 relution]# curl -I https://selfsigned.server.relution.io
HTTP/1.1 302 Found
Date : Tue, 21 Sep 2021 12:37:10 GMT
Serveur : Apache/2.4.38 (Univention)
Emplacement : https://selfsigned.server.relution.io/portal/
Content-Type : text/html ; charset=iso-8859-1
Top