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

树莓派上.NET 6 API被Blazor WASM调用时出现ERR_CERT_AUTHORITY_INVALID错误

解决Blazor WASM调用.NET 6 API的证书验证错误问题

问题原因

ERR_CERT_AUTHORITY_INVALID错误是因为你的API使用的SSL证书未被浏览器信任。浏览器直接访问时你可能手动确认了"继续访问",但Blazor WASM的HttpClient基于浏览器的Fetch API,会严格执行证书验证,不会自动跳过未信任的证书。

解决方案

1. 开发环境临时方案(不推荐生产使用)

方案A:API改用HTTP协议

修改API的Program.cs,移除HTTPS配置,或者在launchSettings.json里设置HTTP端口,然后Blazor WASM的HttpClient改用HTTP地址调用。

// Program.cs 示例:仅启用HTTP
builder.WebHost.ConfigureKestrel(options =>
{
    options.ListenAnyIP(5001); // HTTP端口
});

方案B:让浏览器信任自签证书

  • 导出API使用的自签证书(如果是用dotnet dev-certs生成的,路径一般在~/.aspnet/https/或%APPDATA%\ASP.NET\Https\)
  • 双击证书,在系统证书管理器中将其安装到受信任的根证书颁发机构(Windows),或在macOS钥匙串中设置为"始终信任"
  • 重启浏览器后,Blazor WASM的HttpClient就能正常调用API了

2. 生产环境正式方案

方案A:使用Let's Encrypt免费可信证书(公网可访问的API)

  1. 在树莓派上安装Certbot:
sudo apt-get update
sudo apt-get install certbot
  1. 生成证书(需域名指向你的树莓派IP):
sudo certbot certonly --standalone -d your-domain.com
  1. 配置.NET 6 API的Kestrel使用该证书:
    在appsettings.json中添加:
"Kestrel": {
  "Endpoints": {
    "Https": {
      "Url": "https://0.0.0.0:7001",
      "Certificate": {
        "Path": "/etc/letsencrypt/live/your-domain.com/fullchain.pem",
        "KeyPath": "/etc/letsencrypt/live/your-domain.com/privkey.pem"
      }
    }
  }
}

方案B:使用自定义CA签发的证书(内网环境)

  1. 生成自定义根CA证书(用OpenSSL):
# 生成根CA私钥
openssl genrsa -out rootCA.key 2048
# 生成根CA证书
openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 3650 -out rootCA.pem
  1. 用根CA签发API的服务器证书:
# 生成服务器私钥
openssl genrsa -out api-server.key 2048
# 生成证书签名请求(CSR)
openssl req -new -key api-server.key -out api-server.csr
# 用根CA签发证书
openssl x509 -req -in api-server.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out api-server.crt -days 365 -sha256
  1. 配置API使用该证书(同上面的Kestrel配置,替换证书路径)
  2. 将根CA证书rootCA.pem安装到所有客户端设备的受信任根证书目录,确保浏览器信任该CA

独立部署API的额外配置

  • 确保API开启了CORS,允许Blazor WASM所在域名的请求:
    在Program.cs中添加:
builder.Services.AddCors(options =>
{
    options.AddPolicy("AllowBlazorApp", policy =>
    {
        policy.WithOrigins("https://your-blazor-app-domain.com") // 替换为你的Blazor应用地址
              .AllowAnyHeader()
              .AllowAnyMethod();
    });
});

app.UseCors("AllowBlazorApp");
  • 检查Kestrel的端口是否对外开放,树莓派的防火墙是否允许7001端口的HTTPS流量

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 14:55:23