Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使我的C#客户端应用程序接受我的NodeJS服务器证书_C#_Node.js_Certificate_Tls1.2 - Fatal编程技术网

如何使我的C#客户端应用程序接受我的NodeJS服务器证书

如何使我的C#客户端应用程序接受我的NodeJS服务器证书,c#,node.js,certificate,tls1.2,C#,Node.js,Certificate,Tls1.2,我遵循这一点,使PEM证书在NodeJS服务器和NodeJS客户端之间工作 我的情况类似,在服务器端我有一个NodeJS服务器,但在客户端,我有一个C#客户端应用程序(.NETFramework 4.7.2) 作为测试,在C#客户端应用程序中,我们有: bool pingSuccess = false; using (var wb = new WebClient()) { string response = wb.UploadString(nodeJSURL, "POST",

我遵循这一点,使PEM证书在NodeJS服务器和NodeJS客户端之间工作

我的情况类似,在服务器端我有一个NodeJS服务器,但在客户端,我有一个C#客户端应用程序(.NETFramework 4.7.2)

作为测试,在C#客户端应用程序中,我们有:

bool pingSuccess = false;
using (var wb = new WebClient())
{
         string response = wb.UploadString(nodeJSURL, "POST", "{\"message\":\"ping\"}");
         if (response == "success") pingSuccess = true;
}
if (!pingSuccess) throw new HttpListenerException(503, "Il server NodeJS risulta non raggiungibile dall'indirizzo " + nodeJSURL);
但是(显然)我得到了这个预期的错误:

Web客户端异常:基础连接已关闭:无法为SSL/TLS安全通道建立信任关系

我试图做的是尝试将Anders Brownworth在其NodeJS客户端中使用的过程应用于C#:

但是我在C#中是一个新手,我如何将这段代码重写成等价的代码并在C#中使用它呢

换句话说,我需要的是让我的C#客户端代码接受NodeJS服务器提供的证书。我寻找了其他的解决方案,但我发现它们太复杂了,有没有一种精干干净的方法呢

我尝试了一种变通方法,在HTTP请求之前添加了以下行:

ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(delegate { return true; });
工作正常,但这不是我需要的,因为我只想信任NodeJS服务器提供的证书。不过,多亏了这个变通方法,我才能够验证应用程序的其余部分是否正常工作


旁注:我按照上面提到的方法创建了我的PEM证书,但使用了Windows 10,它运行得非常好。

我注意到这可能会帮助我解决问题,但我不清楚如何使用它,有人能帮我吗?
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(delegate { return true; });