无法通过SSL连接Visual Basic应用至AWS RDS实例求助
解决MySql.Data 6.7.4.0连接RDS MySQL 8.0 SSL的SSPI错误
核心问题
你遇到的A call to SSPI failed异常,本质是旧版驱动与MySQL 8.0/RDS的TLS协议不兼容,加上连接字符串参数命名错误导致的。MySql.Data 6.7.4.0是适配MySQL 5.x的老版本,默认不支持MySQL 8.0要求的TLS 1.2+协议,且SSL参数命名与新版不同。
解决方案
1. 修正连接字符串参数
旧版驱动使用驼峰命名的SSL参数,替换你的连接字符串为:
myConnStr = "Server=database.server.123b234.ap-southeast-2.rds.amazonaws.com;" _ & "uid=user;" _ & "pwd=password;" _ & "Port=3306;" _ & "Allow Zero Datetime=true;" _ & "CharSet=utf8;" _ & "SslMode=Required;" _ & "SslCa=C:\your-path\rds-combined-ca-bundle.pem" '替换为证书实际路径 conn.ConnectionString = myConnStr conn.Open()
注意:
- 用
SslMode(驼峰格式)替代SSL Mode - 用
SslCa替代ssl-ca/sslca,这是旧版驱动唯一支持的CA证书参数名
2. 强制启用TLS 1.2
MySQL 8.0和AWS RDS已禁用TLS 1.0/1.1,而MySql.Data 6.7.4.0默认不会启用TLS 1.2,需手动强制:
- 若项目基于.NET Framework 4.5+,在代码初始化阶段添加:
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12
- 若项目基于.NET Framework 4.0,需安装微软官方的TLS 1.2支持补丁,或升级项目到.NET Framework 4.5+(Visual Studio 2010支持此升级)
3. 证书信任优化(可选)
如果指定SslCa后仍报错,可将rds-combined-ca-bundle.pem导入Windows系统的受信任根证书颁发机构:
- 双击PEM文件,点击「安装证书」
- 选择「本地计算机」,下一步
- 选择「将所有证书放入下列存储」,点击「浏览」,选择「受信任的根证书颁发机构」
- 完成导入后,连接字符串可省略
SslCa参数,驱动会自动信任RDS证书
验证
- 确认RDS实例的
require_secure_transport参数已设为ON - 按上述修改后重新运行代码,若仍有异常,检查:
- .NET Framework版本是否支持TLS 1.2
- 证书路径是否正确,或是否已成功导入系统证书存储
内容的提问来源于stack exchange,提问作者jabroni
相关产品推荐
相关产品推荐

