macOS 12下git HTTPS访问报错bad key length如何解决
macOS 12 Monterey 访问HTTPS仓库报bad key length解决方案
问题表现
- 升级macOS 12后,git、curl访问公司Bitbucket HTTPS仓库时报错
error:06FFF089:digital envelope routines:CRYPTO_internal:bad key length - Safari、Firefox浏览器可正常访问对应地址
- 此前macOS 11版本下所有操作均正常
根因说明
macOS 12自带的LibreSSL版本提升了安全校验标准,默认要求DH密钥交换的密钥长度不低于3072位,而你公司Bitbucket服务端使用的是2048位DH参数,触发了校验拦截。浏览器因为使用自带的TLS栈而非系统LibreSSL,所以不受影响。
解决方案
方案1:仅配置git生效(影响范围最小,推荐)
执行以下命令全局配置git禁用DH加密套件,避开密钥长度校验:
git config --global http.sslCipherList 'DEFAULT:!DH'
如果仅需要针对单个仓库生效,进入对应仓库目录后去掉--global参数执行即可。
方案2:全局生效(适配所有依赖系统LibreSSL的工具)
如果你需要让curl等其他命令行工具也正常访问对应服务,可修改shell配置文件添加环境变量:
- 如果你使用zsh(macOS默认shell),编辑
~/.zshrc文件,添加如下内容:
export CIPHERS='DEFAULT:!DH'
- 执行以下命令让配置立即生效:
source ~/.zshrc
如果你使用bash,对应修改~/.bash_profile文件即可。
服务端永久修复方案
建议同步公司运维人员升级Bitbucket服务端TLS配置:将DH参数长度升级到3072位及以上,或者优先启用ECDHE类加密套件,无需修改客户端配置即可兼容所有系统版本。
内容的提问来源于stack exchange,提问作者nd.
相关产品推荐
相关产品推荐

