Utilisation de Docker avec Zscaler
Dans de nombreux environnements d'entreprise, le trafic réseau est intercepté et surveillé à l'aide de proxys HTTPS, tels que Zscaler. Bien que Zscaler garantisse la conformité en matière de sécurité et le contrôle du réseau, il peut causer des problèmes aux développeurs utilisant Docker, en particulier lors des processus de construction, où des erreurs de validation de certificat SSL peuvent se produire. Ce guide explique comment configurer les conteneurs et les constructions Docker pour gérer correctement les certificats personnalisés de Zscaler, garantissant un fonctionnement fluide dans les environnements surveillés.
Le rôle des certificats dans Docker
Lorsque Docker construit ou exécute des conteneurs, il doit souvent récupérer des ressources sur Internet, que ce soit pour extraire une image de base d'un registre, télécharger des dépendances ou communiquer avec des services externes. Dans un environnement proxy, Zscaler intercepte le trafic HTTPS et remplace le certificat du serveur distant par le sien. Cependant, Docker ne fait pas confiance à ce certificat Zscaler par défaut, ce qui entraîne des erreurs SSL.
x509: certificate signed by unknown authority
Ces erreurs se produisent car Docker ne peut pas vérifier la validité du certificat présenté par Zscaler. Pour éviter cela, vous devez configurer Docker pour qu'il fasse confiance au certificat de Zscaler.
Configurer le proxy Zscaler pour Docker Desktop
Selon la manière dont Zscaler est déployé, vous devrez peut-être configurer manuellement les paramètres de proxy de Docker Desktop pour utiliser le proxy Zscaler.
Si vous utilisez Zscaler comme proxy au niveau du système via le Zscaler Client Connector, tout le trafic sur l'appareil est automatiquement acheminé via Zscaler, donc Docker Desktop utilise automatiquement le proxy Zscaler sans aucune configuration supplémentaire nécessaire.
Si vous n'utilisez pas Zscaler comme proxy au niveau du système, configurez manuellement les paramètres de proxy dans Docker Desktop. Configurez les paramètres de proxy pour tous les clients de l'organisation en utilisant la Gestion des paramètres, ou modifiez la configuration du proxy dans l'interface graphique de Docker Desktop sous Paramètres > Ressources > Proxys.
Installer les certificats racine dans les images Docker
Pour permettre aux conteneurs d'utiliser et de faire confiance au proxy Zscaler, intégrez le certificat dans l'image et configurez le magasin de confiance de l'image. L'installation des certificats au moment de la construction de l'image est l'approche privilégiée, car elle supprime le besoin de configuration au démarrage et fournit un environnement auditable et cohérent.
Obtention du certificat racine
Le moyen le plus simple d'obtenir le certificat racine est de l'exporter depuis une machine où un administrateur l'a déjà installé. Vous pouvez utiliser un navigateur web ou le service de gestion des certificats du système (par exemple, le magasin de certificats Windows).
Exemple : Exportation du certificat à l'aide de Google Chrome
- Dans Google Chrome, accédez à
chrome://certificate-manager/
. - Sous Certificats locaux, sélectionnez Afficher les certificats importés.
- Recherchez le certificat racine Zscaler, souvent étiqueté Zscaler Root CA.
- Ouvrez les détails du certificat et sélectionnez Exporter.
- Enregistrez le certificat au format ASCII PEM.
- Ouvrez le fichier exporté dans un éditeur de texte pour confirmer qu'il inclut
-----BEGIN CERTIFICATE-----
et-----END CERTIFICATE-----
.
Lorsque vous avez obtenu le certificat, stockez-le dans un dépôt accessible, tel que JFrog Artifactory ou un dépôt Git. Alternativement, utilisez un stockage générique comme AWS S3.
Construire avec le certificat
Pour installer ces certificats lors de la construction d'images, copiez le certificat dans le conteneur de construction et mettez à jour le magasin de confiance. Un exemple de Dockerfile ressemble à ceci :
FROM debian:bookworm
COPY zscaler-root-ca.crt /usr/local/share/ca-certificates/zscaler-root-ca.crt
RUN apt-get update && \
apt-get install -y ca-certificates && \
update-ca-certificates
Ici, zscaler-root-ca.crt
est le certificat racine, situé à la racine du contexte
de construction (souvent dans le dépôt Git de l'application).
Si vous utilisez un dépôt d'artefacts, vous pouvez récupérer le certificat directement en utilisant
l'instruction ADD
. Vous pouvez également utiliser l'indicateur --checksum
pour vérifier que
le condensé du contenu du certificat est correct.
FROM debian:bookworm
ADD --checksum=sha256:24454f830cdb571e2c4ad15481119c43b3cafd48dd869a9b2945d1036d1dc68d \
https://artifacts.example/certs/zscaler-root-ca.crt /usr/local/share/ca-certificates/zscaler-root-ca.crt
RUN apt-get update && \
apt-get install -y ca-certificates && \
update-ca-certificates
Utilisation des constructions multi-étapes
Pour les constructions multi-étapes où les certificats sont nécessaires dans l'image d'exécution finale, assurez-vous que l'installation du certificat a lieu dans la dernière étape.
FROM debian:bookworm AS build
WORKDIR /build
RUN apt-get update && apt-get install -y \
build-essential \
cmake \
curl \
git
RUN --mount=target=. cmake -B output/
FROM debian:bookworm-slim AS final
ADD --checksum=sha256:24454f830cdb571e2c4ad15481119c43b3cafd48dd869a9b2945d1036d1dc68d \
https://artifacts.example/certs/zscaler-root-ca.crt /usr/local/share/ca-certificates/zscaler-root-ca.crt
RUN apt-get update && \
apt-get install -y ca-certificates && \
update-ca-certificates
WORKDIR /app
COPY --from=build /build/output/bin .
ENTRYPOINT ["/app/bin"]
Conclusion
L'intégration du certificat racine Zscaler directement dans vos images Docker garantit que les conteneurs s'exécutent sans problème dans les environnements proxy Zscaler. En utilisant cette approche, vous réduisez les erreurs d'exécution potentielles et créez une configuration cohérente et auditable qui permet des opérations Docker fluides au sein d'un réseau surveillé.