- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试修复现有的 .Net 2.0 服务/应用程序。
这是一个接受 SSL/TLS 连接的 TCP 服务器。正如预期的那样,在端口 443 上运行。它用于响应 Yealink 配置请求。您可以在手机中弹出 url,它会获取设置等(反正不重要。)
问题是,当旧手机请求此服务时,它可以正常工作,但现在,自从新版本的手机以来,它就不起作用了。
这是最后的代码:
using (SslStream sslStream = new SslStream(tcpClient.GetStream(), false, new RemoteCertificateValidationCallback(AcceptAllCertifications)))
{
X509Certificate c = new X509Certificate2("cert.pfx", "XXXX");
sslStream.AuthenticateAsServer(c, false, SslProtocols.Tls, false);
// Process request etc
}
这是“AcceptAllCertifications”
private bool AcceptAllCertifications(object sender, X509Certificate certification, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
return true;
}
新手机导致应用在 sslStream.AuthenticateAsServer(...) 上产生错误;
System.componentmodel.win32exception: the certificate chain was issued by an authority that is not trusted.
他们在这里提到的“证书”是我的证书(一个在服务器上)还是他们的证书(一个从手机发送的)?
我不知道(也永远不会知道)用户手机发送的证书类型。
证书“cert.pfx”(我的证书)是从 DigiCert 购买的(它是一个通配符证书)。它是用密码导出的,哦,是的,我有没有提到这在所有常规浏览器和旧手机上都可以正常工作……只是 Yealink 的新手机不行。
我如何才能跳过整个身份验证过程,我只想让它工作,而不是公共(public)系统?对于新手机,“RemoteCertificateValidationCallback(AcceptAllCertifications)”永远不会被调用,我已经用调试器跟踪了它,它完全被跳过了。
最佳答案
我刚刚阅读了中间证书(我的内存在上面的早期评论中失败了)并且我想我知道问题是什么:您的手机已经信任信任链顶部的 DigiCert 根证书,但您的服务器和您的手机对证书实用程序显示的中间证书一无所知。除了拥有私钥的服务器证书之外,您还需要在服务器上安装中间证书的公钥。这是一个有用的链接,更详细地解释了中间证书的功能:SSL Installing Intermediate Certificates
我引用:
The intermediate certificate, or certificates, completes the chain to a root certificate trusted by the browser. During SSL negotiation, the server sends the trust chain to the client to assist the client in building and verifying the trust chain.
该页面还包含有关如何测试必要的中间证书是否正确安装在您的网络服务器上的说明。
关于c# - sslStream.AuthenticateAsServer 忽略 RemoteCertificateValidationCallback,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32358002/
我和这里有同样的问题:How to disable "Security Alert" window in Webbrowser control 我喜欢这个答案,但我要将 ServicePointMan
我有以下代码尝试根据私有(private) PKI 中的 CA 验证服务器证书。它与 ServicePointManager 和 RemoteCertificateValidationCallback
我的 Windows 服务正在尝试连接到由证书 C 签名的网站。C 由 Symantec Class 3 Secure Server CA - G4(中间 CA)签名,Symantec Class 3
我正在尝试修复现有的 .Net 2.0 服务/应用程序。 这是一个接受 SSL/TLS 连接的 TCP 服务器。正如预期的那样,在端口 443 上运行。它用于响应 Yealink 配置请求。您可以在手
X509Certificate2 certificate = new X509Certificate2(); FileStream fileStream = File.Open(@"C:\op
如下所示,RemoteCertificateValidationCallback 委托(delegate)用于验证远程安全套接字层 (SSL) 证书。 certificate参数是远程服务器返回的终端
H 所有, SMPT 通信不适用于启用的 SSL 配置。 我正在通过 SMTP 发送电子邮件,它运行良好。但是,当我启用 SSL 后,它无法正常工作,并在 RemoteCertificateValid
我是一名优秀的程序员,十分优秀!