转载自:pod install 证书报错
报错信息:
[!] Couldn't determine repo type for URL: https://git.xxxx.com/xxxx/xxxx.git: SSL_connect returned=1 errno=0 peeraddr=121.5.97.97:443 state=error: certificate verify failed (unable to get local issuer certificate)
运行命令brew info openssl
查看到根证书目录之后,一般是/opt/homebrew/etc/openssl@3/certs
进入这个目录, cd /opt/homebrew/etc/openssl@3/certs
然后执行
wget https://www.xxxx.com/xxx/ShunLianRootCA.pem
wget https://www.xxxx.com/xxx/ShunLianRootCA-ECC.pem
刷新根证书
/opt/homebrew/opt/openssl@3/bin/c_rehash
上面的方法对我没有效果,但让我确认了是什么问题:
SSL 证书验证失败的根本原因在于 Ruby/CocoaPods 使用了 macOS 系统自带的旧版 OpenSSL/LibreSSL,无法正确识别 GitHub 的 SSL 证书链,而 Homebrew 安装的新版 OpenSSL 未生效。
以下是DeepSeek给出的解决方案,亲测有效(可能路径有差异,可以使用brew info openssl获取):
✅ 1.强制环境使用 Homebrew 的 OpenSSL
编辑 Shell 配置文件(根据终端类型选择):
# Zsh 用户(macOS Catalina 及以上默认)
echo 'export PATH="/opt/homebrew/opt/openssl@3/bin:$PATH"' >> ~/.zshrc
echo 'export LDFLAGS="-L/opt/homebrew/opt/openssl@3/lib"' >> ~/.zshrc
echo 'export CPPFLAGS="-I/opt/homebrew/opt/openssl@3/include"' >> ~/.zshrc
source ~/.zshrc
# Bash 用户
echo 'export PATH="/opt/homebrew/opt/openssl@3/bin:$PATH"' >> ~/.bash_profile
echo 'export LDFLAGS="-L/opt/homebrew/opt/openssl@3/lib"' >> ~/.bash_profile
echo 'export CPPFLAGS="-I/opt/homebrew/opt/openssl@3/include"' >> ~/.bash_profile
source ~/.bash_profile
作用:确保系统优先使用 Homebrew 的 OpenSSL 3.5.0(而非 macOS 自带的 LibreSSL)17。
✅ 2. 设置 SSL 证书路径
运行以下命令,指向 Homebrew 的证书库:
echo 'export SSL_CERT_FILE=/opt/homebrew/etc/openssl@3/cert.pem' >> ~/.zshrc # 或 ~/.bash_profile
source ~/.zshrc
作用:解决 certificate verify failed 错误,强制 Ruby/CocoaPods 使用新版 OpenSSL 的证书链27。
✅ 3. 重新生成证书哈希
执行 Homebrew 提示的 c_rehash 命令:
/opt/homebrew/opt/openssl@3/bin/c_rehash
作用:更新证书索引,确保系统信任 GitHub 的 SSL 证书27。
✅ 4. 验证 OpenSSL 环境
检查是否生效:
openssl version
# 正确输出应包含 "OpenSSL 3.5.0"(而非 "LibreSSL")
which openssl
# 正确路径:/opt/homebrew/opt/openssl@3/bin/openssl
✅ 5. 重试 CocoaPods 操作
再次执行失败的 Pod 命令:
pod repo update --verbose
# 或
pod install --verbose