我正在尝试将 SSL 添加到我的服务器,以便将客户详细信息发送给客户端。
它似乎在服务器端工作,数字证书 (.pfx) 已成功加载。
当我尝试与客户端连接时,问题就来了。抛出 AuthenticationException 说明远程证书无效。该证书是自签名测试证书 - 这可能是问题吗?
如果没有,我没有想法!
编辑:证书位于双方 MMC 中受信任的根证书文件夹中(服务器和客户端出于开发目的在同一台机器上运行)。
我正在尝试将 SSL 添加到我的服务器,以便将客户详细信息发送给客户端。
它似乎在服务器端工作,数字证书 (.pfx) 已成功加载。
当我尝试与客户端连接时,问题就来了。抛出 AuthenticationException 说明远程证书无效。该证书是自签名测试证书 - 这可能是问题吗?
如果没有,我没有想法!
编辑:证书位于双方 MMC 中受信任的根证书文件夹中(服务器和客户端出于开发目的在同一台机器上运行)。
我不得不重写验证方法:
public static bool RemoteCertificateValidationCallback(Object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
return true;
}
显然,这将接受传递给它的每个证书,因此我需要使用证书的哈希或类似的东西进行检查。然而,现在是假期!
这绝对是问题所在。您是否尝试过将该 Web 服务器添加到客户端上的受信任根证书中?如果客户端不信任证书提供者(您的 Web 服务器,因为是自签名的),它会在尝试对证书进行身份验证时抛出异常。
你是如何生成证书的?
默认情况下,makecert.exe 会生成一个不适合使用 ssl 身份验证的证书。
使用“-sky exhange”选项生成一个合适的。
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