Обновление Позволяет шифровать корневой центр сертификации в контейнере docker

#docker #ssl #debian #ssl-certificate #lets-encrypt

Вопрос:

Я запускаю debian 9 в своем контейнере docker, и сегодня мне не удалось обновить корневой сертификат для Lets encrypt внутри контейнера. На хосте Ubuntu 20 все работало без моего вмешательства, но в моем контейнере debian я не смог получить новый корневой сертификат для шифрования, помог только контейнер с нуля. Я пытался update-ca-certificates --fresh , но это не помогло. Есть какие-нибудь идеи?

Из-за этой проблемы запрос из внутреннего контейнера к службам https с сертификатом Lets Encrypt не удался с «Проблемой SSL-сертификата: срок действия сертификата истек», поскольку срок действия корневого сертификата Lets Encrypt истек сегодня (30 сентября 2021 г.)

Комментарии:

1. Можете ли вы поделиться более конкретной информацией ? Как это Dockerfile выглядит ? Как вы обновляете корневой сертификат ? Как и какую команду вы выполняете конкретно ? Вы получаете какие-либо сообщения об ошибках ?

2. Я попытался обновить update-ca-certificates --fresh , кажется, все работало нормально, без ошибок, но все равно подключение к https с помощью lets encrypt не работало

Ответ №1:

Сначала попробуйте удалить старый сертификат из списка в файле /etc/ca-certificates.conf:

 sed -i 's#mozilla/DST_Root_CA_X3.crt#!mozilla/DST_Root_CA_X3.crt#g' /etc/ca-certificates.conf
update-ca-certificates --fresh
 

Комментарии:

1. Я смог воспроизвести эту ошибку на своем хосте и выполнить эти команды, чтобы устранить эту проблему. Я не смог протестировать это внутри docker, потому что я не мог ждать так долго, поэтому обходные пути заключались в том, чтобы перестроить изображения docker с нуля. Если я найду еще один контейнер docker с этой проблемой, я повторно протестирую эти команды изнутри. Но я почти уверен, что это поможет.

Ответ №2:

Вчера я также столкнулся с той же проблемой, но я делюсь информацией о взломе, потому что это производственная программа, поэтому я должен сделать это немедленно, и мои изображения докеров находятся в AWS ECR. Поэтому я решил перестроить образ, который есть у определения задачи.

Просто извлеките изображения docker из ECR, создайте новый файл Docker, используя это изображение

 From <acc.docker-image:tag>
RUN sed -i 's/mozilla/DST_Root_CA_X3.crt/!mozilla/DST_Root_CA_X3.crt/g' /etc/ca-certificates.conf
RUN update-ca-certificates
 

Создайте новый образ docker и переместите его в ECR, создайте новую редакцию из определения задачи и обновите последний образ.

Наконец, я обновил службу ECS новым определением задачи, и моя проблема была решена за 20 минут.

Я не уверен насчет вашего ENV, но этот простой взлом уменьшит боль, и вы потратите время на восстановление базового образа для вашего приложения.