收藏本页 | 设为主页 | RSS
LOGO

我就上乐乐吧

项目采用NET,数据库是MySQL,驱动使用MySQLConnector/NET,但是在运行过程中,却发现应用日志时有报错。分析下,发现了一个奇怪的现象,那就是MySQLConnecto...

您当前的位置:首页 » 技术杂萃
全站公告
重要提示!

本站收集各类美图,以无LOGO原汁原味图为主!欢迎大家交流。
怕失联,请认准如下地址:
微博:传送门
土豆:传送门
电报:传送门
微信:superimagelove
花瓣:传送门
Q群1:231151757
Q群2:583138281
文件解压密码:593668.com
热心赞助

站内搜索
 
相关文章
热门文章
热搜词组
文章归档
友情链接
MySQL Connector/NET报错:SSL Authentication Error

发布日期:2020-01-17  关键词: MySQL NET

项目采用NET,数据库是MySQL,驱动使用MySQL Connector/NET,但是在运行过程中,却发现应用日志时有报错。分析下,发现了一个奇怪的现象,那就是MySQL Connector/NET连接数据,有时正常,有时又会突发报错:SSL Authentication Error。

网上查找中文资料也没有更多的说明,有人说是MySQL的SSL证书默认开启导致的。

在仔细分析过后,发现有如下问题存在:

a.不是所有服务器都会发生这个异常问题。
b.IIS也好,NTService也好,甚至就是Console应用程序都有这个问题。
c.每个进程/应用池第一次连接数据库必发生异常,之后就不会发生同样的问题。
d.这个异常在第一次连接尝试后15秒后抛出,就象是一个超时问题。
e.开发模式下不会出现这个异常。
f.MySQL Workbench可以看到一个无用户名的连接,然后15秒钟后消息。
g.服务器出现这个异常的时候,基本上是无法连接外网。

原因分析,Windows的PKI API在接到SSL连接请求后,会去校验一次。而MySQL提供的是自签名证书,并不在可信任证书列表[CTL]当中,这样Windows就会在如果CTL版本太老的时候,或者到了某个给定时间,就会连接外网来升级CTL,如果网络有异常的话,这个校验就会时不时出现问题。

这样就会报SSL Authentication Error。另外,在分析Connector/NET的源码,也可以知道,不使用SSL,就不会引发这个问题。如果SSL验证不通过,就抛出异常的行,可自行去察看

在知道这个引发的根本原因后,相应的处理方式也简单了。

1)如果不需要SSL
那么可以考虑修改下数据库连接词,加上一段:

"SslMode=None"

2)如果SSL是必需的
服务器时不时会自动更新CTL,所以必须要停止这种行为。

按Win+R打开运行,输入"gpedit.msc" 打开组策略。选择计算机配置=》管理模板=》系统=》Internet通信管理=》Internet通信设置。

双击关闭自动根证书更新,点击已启用,再点选应用。

这样就可以不重启就关闭相应的根证书更新。
猜您喜欢:
Q群: 231151757微信:superimagelove 官网:www.593668.com