Xamarin Android使用VimeoDotNet遇SSL证书验证失败问题求助
Xamarin Android调用Vimeo API出现SSL证书验证失败的解决办法
问题重现
仅Android端调用VimeoDotNet包时抛出以下错误,iOS端正常:
VimeoDotNet.Exceptions.VimeoApiException: Error retrieving information from Vimeo API. ---> System.Net.Http.HttpRequestException: The SSL connection could not be established, see inner exception. ---> System.Security.Authentication.AuthenticationException: Authentication failed, see inner exception. ---> Mono.Btls.MonoBtlsException: Ssl error:1000007d:SSL routines:OPENSSL_internal:CERTIFICATE_VERIFY_FAILED
解决方案
1. 添加Android网络安全配置(推荐)
通过配置指定信任Vimeo域名的证书链,这是最安全的生产环境方案:
- 在项目的
Resources/xml目录下创建network_security_config.xml文件:
<?xml version="1.0" encoding="utf-8"?> <network-security-config> <domain-config> <domain includeSubdomains="true">vimeo.com</domain> <domain includeSubdomains="true">api.vimeo.com</domain> <trust-anchors> <!-- 信任系统默认根证书 --> <certificates src="system" /> <!-- 若系统根证书未覆盖Vimeo的根证书,可将证书文件放入Resources/raw,取消下方注释 --> <!-- <certificates src="@raw/vimeo_root_cert" /> --> </trust-anchors> </domain-config> </network-security-config>
- 在
AndroidManifest.xml的<application>标签中引用该配置:
<application android:label="YourAppName" android:networkSecurityConfig="@xml/network_security_config">
2. 更新依赖与组件
- 升级VimeoDotNet到最新版本,修复可能存在的API交互或证书处理bug
- 更新Xamarin.Android SDK及相关NuGet包,确保Mono的BTLS实现为最新版本
3. 强制指定SSL协议版本
在应用启动阶段(如MainActivity的OnCreate方法)添加代码,强制使用TLS 1.2/1.3协议,避免旧协议兼容性问题:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls13;
4. 临时测试方案(禁止生产环境使用)
若需快速验证问题根源,可临时跳过证书检查(仅用于测试):
ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true;
5. 检查设备系统根证书
部分旧版本Android设备的系统根证书库未包含Vimeo使用的根证书,可在设备「设置-安全-加密与凭据-信任的凭据」中检查对应根证书,若缺失可尝试手动安装官方根证书。
内容的提问来源于stack exchange,提问作者AbbyK
相关产品推荐
相关产品推荐

