公司网络:`ddev composer create` 结果 "ssl certificate error"

Corporate network: `ddev composer create` results in "ssl certificate error"

我是 运行 wsl2 下的 ddev。我在 zscaler 代理后面。我能够将 zscaler 证书复制到 ubuntu“/usr/local/share/ca-certificates”和 运行“sudo update-ca-certificates”。之后我能够安装自制软件和 ddev。 但是,当我创建 drupal 9 站点并使用命令时 "ddev composer create "drupal/recommended-project" --no-install", 它给了我“ubuntu curl: (60) ssl 证书问题:证书链中的自签名证书”。我还尝试将 zscaler 证书复制到 Web 容器中,但仍然遇到同样的问题。我该如何规避这个问题?

这是您和您的 IT 部门必须解决的问题。我想您不仅有代理,而且您正在使用的 VPN 可能会进行深度数据包检查,并且有一个替代 CA 来替代互联网其余部分使用的受信任 CA。

如果您没有 VPN,只有代理,那么您需要为代理正确配置docker,请参阅https://github.com/drud/ddev-contrib/tree/master/recipes/proxy - 但由于您获得的是不受信任的证书,所以在我看来,除了代理之外还有更多的事情要做。

如果您的 IT 部门可以为您提供替换 CA crt,您可以将其放入 .ddev/web-build 并添加一个 .ddev/web-build/Dockerfile,如下所示:

ARG BASE_IMAGE
FROM $BASE_IMAGE
COPY <yourcert>*.crt /usr/local/share/ca-certificates/
RUN update-ca-certificates --fresh
  1. 在我的网络环境中将代理 zscaler 和 certadmin 证书从 Windows 受信任的 CA 导出为 .CER 格式。

  2. 使用 OpenSSl 并将它们从 .CER 格式转换为 .CRT 格式。

    • openssl x509 -inform DER -in zscaler.cer -out zscaler.crt
    • openssl x509 -inform DER -in certadmin.cer -out certadmin.crt
  3. 将这些文件复制到 ubuntu 中的 /usr/local/share/ca-certificates 文件夹。

    sudo cp /mnt/c/certificates/zscaler.crt /mnt/c/certificates/certadmin.crt /usr/local/share/ca-certificates

  4. 运行

    sudo update-ca-certificates

  5. 按照 DDEV 文档站点上的说明安装 Homebrew、gcc、ddev 和 xdg-utils。

  6. 再次按照 DDEV 文档站点上的说明设置 drupal 9 项目。

  7. 在 运行 步骤之前:ddev start,将步骤 #3 中的证书复制到我的 sampleprojectfolder/.ddev/web-build 文件夹。

    cd /home/kevin/my-drupal9-site/.ddev/web-build && sudo cp /mnt/c/certificates/zscaler.crt /mnt/c/certificates/certadmin.crt .
    
  8. cd 进入 web-build 文件夹时,从中复制示例 docker 文件并将其命名为“Dockerfile”。

    cp Dockerfile.example Dockerfile

  9. 如下修改 Dockerfile nano Dockerfile 的内容,这样当 ddev 创建容器时,它也会将证书拉入 Web 容器。

    ARG BASE_IMAGE
    FROM $BASE_IMAGE
    COPY *.crt /usr/local/share/ca-certificates/
    RUN update-ca-certificates --fresh
    
  10. 运行

    ddev start

  11. 按照其余步骤从 DDEV 文档创建 drupal 9 项目。