You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rebar3代理环境下无法下载包:CA证书缺失/未知问题求助

解决rebar3/mix在自定义CA代理环境下的TLS证书错误

当在使用自定义CA证书的企业代理环境中,执行rebar3或mix deps.compile时出现以下TLS握手报错:

TLS client: In state certify at ssl_handshake.erl:2015 generated CLIENT ALERT: Fatal - Unknown CA

本质原因是Erlang OTP的默认信任证书池中未包含企业自定义CA证书,以下是具体解决方案:

全局Erlang环境配置(适用于所有基于Erlang的工具)

  • 找到你的企业自定义CA证书文件(通常为.crt或.pem格式),将其复制到Erlang SSL模块的信任证书目录:
    • Linux系统:/usr/lib/erlang/lib/ssl-*/priv/cacerts/
    • macOS(Homebrew安装Erlang):/usr/local/Cellar/erlang/*/lib/erlang/lib/ssl-*/priv/cacerts/
    • Windows系统:C:\Program Files\erl*\lib\ssl-*\priv\cacerts\
  • 执行Erlang自带的c_rehash工具生成证书哈希链接,确保OTP可识别该CA:
    c_rehash /path/to/erlang/cacerts/
    

rebar3项目单独配置(不修改全局环境)

  • 在项目根目录的rebar.config中添加SSL配置,指定自定义CA证书路径:
    {ssl_opts, [{cacertfile, "/绝对路径/到/自定义CA证书.crt"}]}.
    
  • 临时生效方式(无需修改配置文件):
    export REBAR_SSL_OPTS="{cacertfile, \"/绝对路径/到/自定义CA证书.crt\"}"
    rebar3 get-deps
    

mix项目单独配置(不修改全局环境)

  • 在项目根目录的config/config.exs中添加SSL全局配置:
    config :ssl, :cacertfile, "/绝对路径/到/自定义CA证书.crt"
    
  • 临时生效方式(无需修改配置文件):
    export ERL_SSL_CACERTFILE="/绝对路径/到/自定义CA证书.crt"
    mix deps.compile
    

额外注意事项

  • 若使用HTTP/HTTPS代理,需提前配置对应环境变量:
    export HTTP_PROXY=http://你的代理地址:端口
    export HTTPS_PROXY=http://你的代理地址:端口
    
  • 确保自定义CA证书文件权限为可读(Linux/macOS下可执行chmod 644 /path/to/ca.crt)

内容的提问来源于stack exchange,提问作者Ondrej Valenta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 12:52:08