Raspberry pi 2(IoT) httpclient错误:证书颁发机构无效或不正确c#

本文关键字:机构 无效 不正确 证书 pi IoT 错误 httpclient Raspberry | 更新日期: 2023-09-27 18:06:40

我正试图使我的树莓派在windows IoT上运行,从我在内部服务器上的web服务获取信息。为了实现这个目标,我在visual studio社区2015中使用了UWP。

背景:我有一个存储信息的sql数据库,它是由一个使用APIController将信息打包并发送出去。在我的UWP中,我使用system.net HttpClient获取信息

问题:使用这段代码:

// httpClientHandler sends in my user arguments since the server is passwordprotected
using (var client = new HttpClient(httpClientHandler))
            {
                client.BaseAddress = new Uri("https://my.servers.dns");
                var task = client.GetAsync("/pathTo/api/packet");
                HttpResponseMessage response = task.Result;
                var task2 = response.Content.ReadAsAsync<PacketInformation[]>();
                data = task2.Result;
            }

当我在连接到域的笔记本电脑上编译并运行我的程序时,它工作正常

当我在未连接到域的IOT上编译和运行我的程序时,我使用

将ip添加到hosts文件中
add-content C:'Windows'System32'drivers'etc'hosts "192.168.abc.def internal.server.DNSName"

它发送一个证书错误,代码返回"证书颁发机构无效或不正确"

有人知道为什么会这样吗?它应该始终发送相同的信息

Raspberry pi 2(IoT) httpclient错误:证书颁发机构无效或不正确c#

您需要将内部CA证书添加到树莓派的受信任根证书颁发机构存储中。(域名加入的电脑会自动为你做这个)。

  1. 从服务器下载证书颁发机构证书(可位于C:'windows'system32'certserv'certenroll'MyInternalCA.cer)到树莓派。
  2. SSH到树莓派,将证书导入受信任的根证书存储库,然后重新启动树莓派。下面是一个示例:certmgr.exe -add MyInternalCA。cer -s -r localMachine root

现在您的树莓派将信任内部CA使用TLS与网站通信。