Я создал веб-приложение Fastapi, основанное на библиотеке exchangelib. Я работаю во внутренней сети, где Windows IIS подписал корневой сертификат почтового сервера. Цепочка сертификатов состоит всего из 2 уровней: сертификат почтового сервера и сертификат корневого сервера.
На сервере Ubuntu 20.04 я добавил два сертификата под /usr/local/share/ca-certificates
и обновил список через sudo update-ca-certificates
. Пока здесь работает без проблем.
Когда я использую докер для сборки и запуска контейнера, я получаю сообщение об ошибке
exchangelib.errors.TransportError: HTTPSConnectionPool(host='**********', port=443): Max retries exceeded with url: /EWS/Exchange.asmx (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1124)')))
Вот докерфайл
FROM python:3.8.6-slim
WORKDIR .
COPY . .
RUN pip install -r requirements.txt
EXPOSE 8000
COPY ./ssl/CA.crt /usr/local/share/ca-certificates/CA.crt
RUN chmod 644 /usr/local/share/ca-certificates/CA.crt
RUN update-ca-certificates
COPY ./ssl/server.crt /usr/local/share/ca-certificates/server.crt
RUN chmod 644 /usr/local/share/ca-certificates/server.crt
RUN update-ca-certificates
CMD [ "uvicorn", "app:app", "--host", "0.0.0.0"]
Я изменил разрешения сертификата, так как думал, что это поможет, но безрезультатно. Кроме того, я запускаю каждый новый добавленный сертификат. Но сертификаты добавляются, когда 1 added
печатается на терминале при запуске команды RUN update-ca-certificates
.
Я не уверен, что это проблема с докером или с библиотекой. Те же сертификаты работают на чистом сервере, но не на докере.
Кто-нибудь может помочь? Спасибо
я не понимаю