Docker sur Windows (Boot2Docker) – certificate signé par une erreur d’autorité inconnue

J’utilise Docker sous Windows (boot2docker + Oracle Virtual Box). Dans mon environnement d’entreprise, ils modifient les certificates afin que les autorités de certificateion soient les autorités de certificateion auto-signées de l’entreprise. Ainsi, la chaîne se termine comme ceci:

Company's CA |__ Company's Intermediate CA |__ Docker Certificate 

Lorsque j’essaie d’exécuter une commande, telle que:

 docker run hello-world 

Je reçois cette erreur:

 Get https://index.docker.io/v1/repositories/library/hello-world/images: x509: certificatee signed by unknown authority 

J’ai trouvé plusieurs réponses à ce problème mais toujours pour les environnements Linux. Comment puis-je contourner ce problème sous Windows?

    Cette question générale me préoccupe depuis quelques mois. Je l’ai tout d’abord remarqué en essayant d’obtenir une machine virtuelle locale pour récupérer les paquets Python, alors j’avais déjà une idée que les certificates poseraient problème. Je l’ai résolu pour mes VM, mais jusqu’à ce jour, je n’arrivais pas à trouver une solution pour Docker. L’astuce consiste à append les certificates au magasin de certificates de Docker et à les faire persister. Ceci est accompli en utilisant un script bootlocal.sh qui s’exécute chaque fois que la machine démarre.

    Je suppose que si vous avez déjà trouvé les réponses pour Linux, vous connaissez déjà les premières étapes. Je vais les documenter ici pour être minutieux, car les autres n’ont peut-être pas été aussi loin. Commencez par # 3 ci-dessous si vous avez déjà fait # 1 et # 2 par les tentatives précédentes.

    1. Obtenez l’ensemble des certificates racine de l’entreprise, qui doivent être installés dans votre navigateur configuré en entreprise. Dans Chrome, vous pouvez accéder à Paramètres, cliquer sur Afficher les parameters avancés et faire défiler vers HTTPS / SSL, où vous pouvez choisir Gérer les certificates. Mon organisation les a mis dans des autorités de certificateion de la racine des racines et les a nommées après l’organisation. Exportez chacun d’eux (j’en ai deux), un à la fois, en veillant à choisir le format DER.

    2. Une fois que vous les avez enregistrés dans un emplacement connu, vous souhaiterez les convertir au format PEM. La façon la plus simple de procéder consiste à exécuter la commande openssl.exe [1] depuis le terminal Docker Quickstart.

       openssl x509 -inform der -in certificatee.cer -out certificatee.pem 
    3. Une fois que vous avez les fichiers .pem, vous voudrez les copier dans un emplacement auquel votre machine Docker a access. J’ai créé un répertoire dans c: \ Users \ my.username \ certs et les ai copié là.

    4. Cette étape n’est peut-être pas ssortingctement nécessaire, mais c’est ce que j’ai fait et cela fonctionne. Vous voudrez copier ces certificates dans votre partition boot2docker, qui est persistante. Je me connecte à ma machine par défaut, ce que vous devez faire pour l’étape 5.

       MINGW64:$ docker-machine ssh default docker@default:~$ sudo -s root@default:/home/docker# mkdir /var/lib/boot2docker/certs root@default:/home/docker# cp /c/Users/my.username/certs/*.pem /var/lib/boot2docker/certs/ 
    5. Il est maintenant temps d’écrire un script bootlocal.sh, qui copiera les certificates à l’emplacement approprié à chaque démarrage du système. [2] Si vous ne l’avez pas déjà fait, ouvrez une connexion SSH à la machine, conformément à l’étape 4.

       touch /var/lib/boot2docker/bootlocal.sh && chmod +x /var/lib/boot2docker/bootlocal.sh vi /var/lib/boot2docker/bootlocal.sh 

      Insérez le fichier suivant et enregistrez le fichier:

       #!/bin/sh mkdir -p /etc/docker/certs.d && cp certs/certificatee.pem /etc/docker/certs.d 
    6. Redémarrez la machine en utilisant la commande reboot depuis la machine ou en utilisant la commande docker-machine depuis le terminal Docker:

       docker-machine restart default 

    Maintenant, vous devriez être capable de lancer “hello-world” et d’autres. J’espère que ça aide.


    Sources

    [1] https://serverfault.com/questions/254627/how-to-convert-a-cer-file-in-pem

    [2] https://github.com/boot2docker/boot2docker/issues/347#issuecomment-189112043

    Un moyen de le faire Avec Firefox, accédez à l’URL suivante: https://auth.docker.io/token?scope=repository%3Alibrary%2Fhello-world%3Apull&service=registry.docker.io , cliquez sur afficher les détails du certificate et extraire comme crt.

    Copiez le fichier sur la VM où le système stocke le fichier crt:

    CentOS

     etc/pki/ca-trust/source/anchors/ # Then run update-ca-trust force-enable update-ca-trust extract 

    Ubuntu

     /usr/share/ca-certificatees #Then run sudo dpkg-reconfigure ca-certificatees 

    Redémarrez docker, et cela devrait fonctionner