如何使我的C#客户端应用程序接受我的NodeJS服务器证书
我遵循这一点,使PEM证书在NodeJS服务器和NodeJS客户端之间工作 我的情况类似,在服务器端我有一个NodeJS服务器,但在客户端,我有一个C#客户端应用程序(.NETFramework 4.7.2) 作为测试,在C#客户端应用程序中,我们有:如何使我的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",
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; });