macOS下执行dotnet restore遇SSL远程证书无效问题求解决方法
可行解决步骤
第一步:确认问题根因
先执行临时禁用证书校验的还原命令,确认问题仅由证书不信任导致:
dotnet restore /p:DisableNuGetCertificateValidation=true
如果执行成功,说明确实是证书信任问题,继续后续操作。
第二步:修正钥匙串证书信任配置
之前导入钥匙串的证书需要手动开启全局信任:
- 打开「钥匙串访问」App,找到你导入的
ca.crt对应的证书条目,双击打开详情页 - 展开「信任」下拉菜单,将「使用此证书时」选择为「始终信任」,「安全套接字层(SSL)」选项也明确设置为「始终信任」
- 保存设置,输入系统密码确认修改
第三步:适配dotnet证书识别规则
Mac上dotnet部分版本会优先读取OpenSSL配置,可按需执行以下操作:
- 如果你使用M系列ARM架构Mac:你之前操作的
/usr/local路径是Intel芯片的brew默认路径,正确路径为/opt/homebrew/etc/openssl@3/certs,把ca.crt放到该目录后执行/opt/homebrew/opt/openssl@3/bin/c_rehash即可 - 新增环境变量指定信任证书路径:打开你当前shell的配置文件(
~/.zshrc或~/.bash_profile),添加以下内容:
保存后执行export SSL_CERT_FILE=替换为你的ca.crt文件的绝对路径source ~/.zshrc(zsh环境)或source ~/.bash_profile(bash环境)使配置生效
第四步:同步证书到dotnet信任存储
执行dotnet自带工具同步系统信任证书:
dotnet dev-certs https --clean dotnet dev-certs https --trust
执行完成后重启终端,再执行dotnet restore测试即可。
备用方案
如果以上操作均不生效,可直接在项目nuget.config中添加自定义CA信任规则,在<configuration>节点下新增以下内容:
<config> <add key="trustedSigners" value="true" /> </config> <trustedSigners> <certificate name="CompanyCA" fingerprint="替换为你的CA证书的SHA256指纹" fingerprintAlgorithm="SHA256" /> </trustedSigners>
CA证书的SHA256指纹可通过以下命令获取,输出结果去掉冒号后填入即可:
openssl x509 -in ca.crt -noout -fingerprint -sha256
内容的提问来源于stack exchange,提问作者Ronaldo Lanhellas
相关产品推荐
相关产品推荐

