Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.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# 无效的数字证书_C#_.net_Ssl_Digital Certificate - Fatal编程技术网

C# 无效的数字证书

C# 无效的数字证书,c#,.net,ssl,digital-certificate,C#,.net,Ssl,Digital Certificate,我正在尝试向服务器添加SSL,以便将客户详细信息发送到客户端 它似乎正在服务器端工作,数字证书(.pfx)已成功加载 当我尝试与客户机连接时,问题就出现了。引发AuthenticationException,指出远程证书无效。该证书是自签名测试证书-这可能是问题所在吗 如果不是,我就没有主意了 编辑:证书位于MMC两侧的受信任根证书文件夹中(服务器和客户端在同一台机器上运行,用于开发)。这肯定是问题所在。您是否尝试将该web服务器添加到客户端上的受信任根证书中? 如果客户端不信任证书提供程序(您

我正在尝试向服务器添加SSL,以便将客户详细信息发送到客户端

它似乎正在服务器端工作,数字证书(.pfx)已成功加载

当我尝试与客户机连接时,问题就出现了。引发AuthenticationException,指出远程证书无效。该证书是自签名测试证书-这可能是问题所在吗

如果不是,我就没有主意了


编辑:证书位于MMC两侧的受信任根证书文件夹中(服务器和客户端在同一台机器上运行,用于开发)。

这肯定是问题所在。您是否尝试将该web服务器添加到客户端上的受信任根证书中?
如果客户端不信任证书提供程序(您的web服务器,因为是自签名的),它将在尝试验证证书时引发异常。

这肯定是问题所在。您是否尝试将该web服务器添加到客户端上的受信任根证书中?
如果客户端不信任证书提供程序(自自自签名以来,您的web服务器),它将在尝试验证证书时引发异常。

您是如何生成证书的

  • 默认情况下,makecert.exe将生成不适合使用ssl身份验证的证书

  • 使用“-sky exunge”选项生成一个合适的

makecert-n“CN=Client”-pe-ss My-sr CurrentUser-sky exchange Client.cer
makecert-n“CN=Host”-pe-ss My-sr LocalMachine-sky exchange Host.cer是如何生成证书的

  • 默认情况下,makecert.exe将生成不适合使用ssl身份验证的证书

  • 使用“-sky exunge”选项生成一个合适的

makecert-n“CN=Client”-pe-ss My-sr CurrentUser-sky exchange Client.cer
makecert-n“CN=Host”-pe-ss My-sr LocalMachine-sky exchange Host.cer我必须重写验证方法:

public static bool RemoteCertificateValidationCallback(Object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
    return true;
}

显然,这将接受传递给它的每个证书,因此我需要使用证书的散列或类似内容进行检查。然而,现在是假期

我不得不覆盖验证方法:

public static bool RemoteCertificateValidationCallback(Object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
    return true;
}

显然,这将接受传递给它的每个证书,因此我需要使用证书的散列或类似内容进行检查。然而,现在是假期

我在开发机器上的任何地方都找不到makecert.exe,所以我不得不使用开源证书生成器。不过它看起来很管用!您可以通过Visual Studio命令(VS的开发人员命令提示符)为我调用makecert。它(当前)在C:\Program Files(x86)\Windows Kits\8.1\bin\x86\makecert.exe上可用。我在我的开发计算机上找不到makecert.exe,因此我不得不使用开源证书生成器。不过它看起来很管用!您可以通过Visual Studio命令(VS的开发人员命令提示符)调用makecert。它(当前)位于C:\Program Files(x86)\Windows Kits\8.1\bin\x86\makecert.exe