[C# | WinCE | Solution] 在 WinCE 上访问 SSL 加密后的 WCF SOAP 服务接口出现“未能与远程服务器建立信任关系”
2014-07-04 13:45
821 查看
Scenario: 服务器的 SOAP 使用了 GeoTrust 签名的 EV 证书,WinCE调用时出现“未能与远程服务器建立信任关系”的错误。原因是该 WinCE 设备信任的证书包括 GlobalSign, Thawte 等,但是不包括 GeoTrust.
Cause: 当 WinCE 中没有信任的根证书时,自签名证书,或者即使是经过第三方 CA 签名的证书,均无法通过认证。
Solution: 最好的方法是导入信任的根证书。若无法做到,则需要在程序里令 WinCE 绕过验证机制。
Key tool: 实现证书验证策略的系统静态类 System.Net.ServicePointManager.CertificatePolicy
1. 定义证书策略类,实现证书策略接口
2. 主程序或主窗口加载时,向 System.Net.ServicePointManager.CertificatePolicy(静态类) 注册该策略,例如:
3. 问题解决。但是最好的解决方案是导入信任的根证书。
Cause: 当 WinCE 中没有信任的根证书时,自签名证书,或者即使是经过第三方 CA 签名的证书,均无法通过认证。
Solution: 最好的方法是导入信任的根证书。若无法做到,则需要在程序里令 WinCE 绕过验证机制。
Key tool: 实现证书验证策略的系统静态类 System.Net.ServicePointManager.CertificatePolicy
1. 定义证书策略类,实现证书策略接口
public class TrustCertificatePolicy : ICertificatePolicy { public bool CheckValidationResult(ServicePoint sp, X509Certificate cert, WebRequest req, int problem) { if (/* 此处加入语句,判断 cert 证书是否可以信任*/) return true; else return false; } }
2. 主程序或主窗口加载时,向 System.Net.ServicePointManager.CertificatePolicy(静态类) 注册该策略,例如:
private void frmMain_Load(object sender, EventArgs e) { System.Net.ServicePointManager.CertificatePolicy = new TrustCertificatePolicy(); }
3. 问题解决。但是最好的解决方案是导入信任的根证书。
相关文章推荐
- C#模拟Https请求时出现 基础连接已经关闭 未能为 SSLTLS 安全通道建立信任关系
- C#模拟Http请求时出现 基础连接已经关闭 未能为 SSLTLS 安全通道建立信任关系
- C#模拟Http请求时出现 基础连接已经关闭 未能为 SSLTLS 安全通道建立信任关系
- C#动态调用webService出现 基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系。
- 连接Codeplex的TFS,出现 未能为 SSL/TLS建立信任关系 弱智解决方法
- 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: SQL 网络接口, error: 26 - 定
- https调用出现【基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系】错误
- C# 基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系。
- c# 基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系(转)
- reportservice 部署时提示“..未能为 SSL/TLS 安全通道建立信任关系"
- 基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系。
- 调用Https WebService发布后使用时报“基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系”证书验证失败的解决过程(3)
- 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: SQL
- 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL
- BizTalk 发布服务接口后访问该服务出现错误“Internal SOAP process failed”
- 问题:基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系
- 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL
- 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: 命名管 分类: 错误积累 2012-03-09 09:22 6511人阅读 评论(4) 收藏
- 无法引用webservice 无法与远程服务器建立信任关系
- "基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系"证书验证失败的解决过程(3)