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

时间:2016-09-12 07:44:18

标签: c# ssl iot

我正在尝试让我的Raspberry pi在Windows上运行IoT从我在内部服务器上的Web服务获取信息。 为实现这一目标,我在2015年的视觉工作室社区中使用了UWP。

上下文: 我有一个存储信息的SQL数据库,它被收集并由一个可读的  带有APIController的mvc,它将信息分组并发送出去。在我的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"

它发出证书错误,代码返回“证书颁发机构无效或不正确”

有谁知道为什么会这样?它应该一直发送相同的信息。

1 个答案:

答案 0 :(得分:1)

您需要将内部CA证书添加到raspberry pi的受信任根证书颁发机构商店。 (域名加入了PC会自动为你做这个)。

  1. 从服务器(可以位于C:\ windows \ system32 \ certserv \ certenroll \ MyInternalCA.cer)下载证书颁发机构证书到raspberry pi。
  2. SSH进入raspberry pi,将证书导入受信任的根证书存储区,然后重新启动raspberry pi。下面是一个示例:certmgr.exe -add MyInternalCA.cer -s -r localMachine root
  3. 现在,您的raspberry pi将信任内部CA,以便使用TLS与网站进行通信。