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

Ubuntu下Dotnet 6项目间调用出现SSL连接错误排查

Ubuntu下Dotnet 6项目间HTTPS调用的UntrustedRoot证书问题解决

根本原因

dotnet dev-certs生成的localhost开发证书默认仅在当前用户的Dotnet私有存储中可信,而Ubuntu系统全局CA存储或Dotnet运行时的信任链未包含该证书。第三方脚本通常仅配置了浏览器的证书信任,未覆盖Dotnet项目间调用的信任需求,导致证书链验证失败。

修复步骤

1. 导出并导入证书到系统CA存储

# 导出开发证书为PEM格式
dotnet dev-certs https --export-path ~/localhost-dev-cert.pem --format PEM --no-password

# 将证书复制到系统CA目录
sudo cp ~/localhost-dev-cert.pem /usr/local/share/ca-certificates/localhost-dev-cert.crt

# 更新系统证书信任
sudo update-ca-certificates

2. 让Dotnet运行时信任该证书

执行命令完成Dotnet侧的证书信任配置:

dotnet dev-certs https --trust

无图形界面环境下,手动导入到Dotnet全局根存储:

sudo mkdir -p /usr/share/dotnet/corefx/cryptography/x509stores/root/
sudo cp ~/localhost-dev-cert.pem /usr/share/dotnet/corefx/cryptography/x509stores/root/localhost-dev-cert.crt

3. 验证与测试

  • 重新运行dotnet dev-certs https --check确认证书状态正常
  • 重启UI和API项目,测试跨项目HTTPS调用

4. 检查运行用户上下文

若UI项目以非当前用户(如www-data)运行,需确保该用户能访问系统CA目录下的证书。导入到全局CA目录后,此问题通常自动解决。

关于代码绕过无效的说明

如果自定义HttpClientHandler未正确注册到DI容器,或项目使用了默认HttpClient实例,会导致绕过SSL校验的代码不生效。但优先修复证书信任的根本问题,比代码绕过更符合开发规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 02:06:52