gpt4 book ai didi

docker - 将证书安装到 Jupyter 笔记本 docker 镜像中

转载 作者:行者123 更新时间:2023-12-04 22:39:53 24 4
gpt4 key购买 nike

在工作中,我们有一堆使用自签名证书的内部服务器。我正在尝试将这些证书安装到 Jupyter 笔记本镜像中,以便它可以访问服务器,但由于某种原因找不到它们。这是一个最小的 Dockerfile:

FROM jupyter/datascience-notebook:notebook-6.4.2

USER root

RUN echo 'Acquire::http::proxy "http://proxy.internal.server";' >> /etc/apt/apt.conf.d/99proxy
ENV http_proxy http://proxy.internal.server
ENV https_proxy http://proxy.internal.server
ENV NO_PROXY internal.server

COPY certificates/* /usr/local/share/ca-certificates/
RUN update-ca-certificates
完成此操作后,当我尝试复制文件时,例如使用 curl -O https://internal.server/file ,它会失败并显示证书无效的消息。我必须添加 -k标志关闭 SSL 验证以使其成功。
如果我遵循相同的程序,但从一个普通的 Ubuntu 镜像开始,那么就没有问题。 (我必须安装 ca-certificates 和 curl。)
Jupyter 图像是否与证书存储区有关?安装证书的正确程序是什么?

最佳答案

原因是 Jupyter 图像使用 conda conda 附带 openssl 和它自己的 CA 证书,通过 ca-certificates 包裹。
你可以在图片中看到它

python -c "import ssl; print(ssl.get_default_verify_paths())"
# DefaultVerifyPaths(cafile='/opt/conda/ssl/cert.pem', capath=None,
# openssl_cafile_env='SSL_CERT_FILE',
# openssl_cafile='/opt/conda/ssl/cert.pem',
# openssl_capath_env='SSL_CERT_DIR',
# openssl_capath='/opt/conda/ssl/certs')
我没有使用自定义 CA 证书的理想解决方案。您可以尝试使用各种环境变量。
export SSL_CERT_DIR=/etc/ssl/certs
export SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt
作为最后的手段,你可以尝试
  • 将证书添加到 conda ca 文件

  • openssl x509 -in /path/to/custom/ca.crt -outform PEM >> $CONDA_PREFIX/ssl/cacert.pem
  • 使用指向系统位置的符号链接(symbolic link)覆盖 conda CA 文件。

  • 但是,如果 ca-certificate包已更新。

    关于docker - 将证书安装到 Jupyter 笔记本 docker 镜像中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69733411/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com