#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, но этот простой взлом уменьшит боль, и вы потратите время на восстановление базового образа для вашего приложения.