WSL2(Ubuntu)环境下为Ddev Composer配置自定义SSL证书文件的位置咨询
WSL2(Ubuntu)环境下为Ddev Composer配置自定义SSL证书文件的位置咨询
我完全理解你现在的困扰——在WSL2 Ubuntu环境里跟着Ddev的Drupal操作指南走,结果用ddev composer create drupal/recommended-project下载依赖时碰到了SSL证书链错误,好在你已经有了能解决问题的.cer证书,就差找对放置和配置它的位置对吧?
下面给你梳理几个可行的方案,你可以根据需求选择:
方案1:直接给Composer全局配置该证书
这是最直接针对Composer的方法,不管是本地还是Ddev里调用的Composer都会生效:
运行这条命令,把你的证书路径设置为Composer全局信任的CA文件:
composer config -g cafile /home/snrub/mycert-base64.cer
配置完成后,重新运行你的Ddev Composer命令,应该就能绕过证书错误了。
方案2:将证书添加到系统信任列表(全局生效)
如果希望整个WSL2系统(包括Ddev容器内的环境)都信任这个证书,可以按以下步骤操作:
- 先把你的证书文件复制到系统证书目录,注意要把
.cer后缀改成.crt(Ubuntu证书目录要求这个格式):sudo cp /home/snrub/mycert-base64.cer /usr/local/share/ca-certificates/mycert-base64.crt - 然后更新系统的证书缓存:
sudo update-ca-certificates - 最后重启Ddev容器让配置生效:
ddev restart,之后容器内的环境也会继承系统的信任证书,再运行Composer命令就没问题了。
方案3:仅针对单个Ddev项目配置
如果你只想让某个Ddev项目使用这个证书,可以修改项目的Ddev配置文件:
- 把证书放到项目目录下的
.ddev/certs/文件夹里(如果没有这个文件夹就新建一个) - 打开项目根目录下的
.ddev/config.yaml,添加以下配置指定CA文件路径:web_environment: - SSL_CERT_FILE=/var/www/html/.ddev/certs/mycert-base64.cer - 保存后重启Ddev容器:
ddev restart,再执行Composer命令即可。
补充验证
你之前用openssl测试的结果已经证明证书是有效的,配置完成后可以再用ddev exec openssl s_client -connect api.github.com:443测试一下,看是否还会出现证书错误,以此验证配置是否生效。
你的原错误信息和测试命令如下:
执行Composer命令时的错误输出:
➜ my-drupal10-site2 ddev composer create drupal/recommended-project Executing Composer command: [composer create-project drupal/recommended-project --no-install /tmp/hwdqJW] Creating a "drupal/recommended-project" project at "/tmp/hwdqJW" Installing drupal/recommended-project (10.2.4) - Downloading drupal/recommended-project (10.2.4) - Downloading drupal/recommended-project (10.2.4) - Downloading drupal/recommended-project (10.2.4) - Downloading drupal/recommended-project (10.2.4) Failed to download drupal/recommended-project from dist: curl error 60 while downloading https://api.github.com/repos/drupal/recommended-project/zipball/b4d1be6b9682e27a6adc430ad08a14745d0b67ff: SSL certificate problem: self signed certificate in certificate chain Now trying to download from source
你测试证书的有效命令:
openssl s_client -connect api.github.com:443 -CAfile /home/snrub/mycert-base64.cer
未指定证书时的失败命令:
openssl s_client -connect api.github.com:443
备注:内容来源于stack exchange,提问作者MrSnrub
相关产品推荐
相关产品推荐

