web-dev-qa-db-fra.com

impossible d'ajouter des certificats au conteneur Alpine Linux

J'ai une petite application python à l'intérieur d'un conteneur Alpine Linux, voici le dockerfile:

FROM Alpine

# basic flask environment
RUN apk add --no-cache bash git nginx uwsgi uwsgi-python py2-pip \
    && pip2 install --upgrade pip \
    && pip2 install flask

# application folder
ENV APP_DIR /app
ENV FLASK_APP app.py

# app dir
RUN mkdir ${APP_DIR} \
    && chown -R nginx:nginx ${APP_DIR} \
    && chmod 777 /run/ -R \
    && chmod 777 /root/ -R
VOLUME [${APP_DIR}]
WORKDIR ${APP_DIR}

# copy config files into filesystem
COPY nginx.conf /etc/nginx/nginx.conf
COPY app.ini /app.ini
COPY entrypoint.sh /entrypoint.sh

RUN apk update && apk add ca-certificates && rm -rf /var/cache/apk/*
COPY ./cert.pem /usr/local/share/ca-certificates/mycert.pem
COPY ./key.pem /usr/local/share/ca-certificates/mykey.pem
COPY ./ssl_password_file.pass /etc/keys/global.pass
RUN update-ca-certificates

COPY . /app
WORKDIR /app
RUN pip install -r requirements.txt
EXPOSE 5000
ENTRYPOINT ["/entrypoint.sh"]

Cela a bien fonctionné il y a 2 semaines, mais lorsque j'ai essayé de le reconstruire récemment, j'ai eu cette erreur:

WARNING: ca-certificates.crt does not contain exactly one certificate or CRL: skipping
WARNING: ca-cert-mykey.pem.pem does not contain exactly one certificate or CRL: skipping

j'ai donc vérifié ces fichiers et j'ai constaté que pour une raison quelconque, le fichier ca-certificats.crt a maintenant une chaîne de certificats. J'ai trouvé this lors du débordement de pile:

/etc/ssl/certs/ca-certificates.crt ajoute en fait chaque certificat individuel à partir de/usr/local/share/ca-certificats.

mais qu'est-ce qui a changé? pourquoi est-ce maintenant un problème? J'ai donc essayé de revenir à une ancienne version d'Alpine Linux - même problème. J'ai essayé de recréer les certificats, j'ai essayé de supprimer tout un tas de certificats du conteneur, j'ai vérifié les fichiers pem avant la mise à jour pour m'assurer qu'ils ne sont qu'un seul certificat, et apparemment directement après l'exécution

RUN update-ca-certificates

de nombreux certificats apparaissent. Aidez-moi ?

4
Gil Zellner

Je pense que ci-dessous a fonctionné pour moi (j'ajoutais un certificat racine sur l'image blackfire/blackfire qui s'étend d'Alpine):

RUN apk update && apk add ca-certificates && rm -rf /var/cache/apk/* \
  mkdir /usr/local/share/ca-certificates/extra
COPY .docker/other/cert_Intertrials-CA.crt /usr/local/share/ca-certificates/extra
RUN update-ca-certificates

Je me suis ensuite connecté à ce VM et je vois qu'il l'a ajouté au fichier de certificat fusionné, /etc/ssl/certs/ca-certificates.crt (je crois avoir entendu dire qu'il prend chaque fichier de certificat de dans/usr/local/share/ca-certificats et fusionne dans le fichier /etc/ssl/certs/ca-certificates.crt).

Maintenant, vous obtiendrez cette erreur "ne contient pas exactement un certificat ou CRL: sauter" probablement, mais j'ai entendu que c'était bien.

https://github.com/gliderlabs/docker-Alpine/issues/ mentionne: "que ce n'est qu'un avertissement et ne devrait rien affecter."

https://github.com/gliderlabs/docker-Alpine/issues/52 mentionne: "L'AVERTISSEMENT: ca-certificats.crt ne contient pas exactement un certificat ou CRL: sauter est juste ce qu'il dit c'est un avertissement. Il dit que ca-certificats.crt ne contient pas un seul certificat (car c'est la concaténation de tous les certificats), donc il est ignoré et n'est pas inclus dans ca-certificats.crt (car il ne peut pas s’inclure). "
"L'avertissement affiché est normal."

3
armyofda12mnkeys