eal*_*njr 5 python ssl mysql-python
我正在尝试连接到需要SSL的MySQL数据库(仅进行服务器身份验证,而不是相互之间).我将服务器的CA保存为我正在运行脚本的同一目录中的.pem.我的连接字符串如下所示:
ssl_settings = {'ca':'ca.pem'}
conn = MySQLdb.connect(host=HOST, user=USER, passwd=PASS, db=DB, ssl=ssl_settings}
Run Code Online (Sandbox Code Playgroud)
这导致"错误2026:SSL连接错误".但是,如果我将ssl_settings更改为:
ssl_settings = {'key':'ca.pem'}
Run Code Online (Sandbox Code Playgroud)
数据库连接正常,脚本执行.根据我对SSL参数的理解,'cert'和'key'应仅用于服务器的客户端身份验证,因此后面的SSL设置似乎有效以及为什么指定CA文件没有原因?
Python 2.4.3(旧的,我知道)
MySQL-python 1.2.1
注意:此错误已被修复。根据错误:
已在 5.1.66、5.5.28、5.6.7、5.7.0 变更日志中注明。
--ssl-key 选项的参数未经验证是否存在且是否为有效密钥。生成的连接使用了 SSL,但未使用密钥。
旧答案
要获得比我能提供的更好的描述,请参阅http://bugs.mysql.com/bug.php?id=62743和http://www.chriscalender.com/?p=325。
根据我(诚然没有受过教育)的理解,这是一个 MySQL 错误。只要您仅指定一个密钥(正如您在有效示例中所做的那样),MySQL 就会设置 SSL 连接并授予您访问权限。另一个有趣的部分是您可以将键值更改为任何值,因此在您的示例中,您可以执行以下操作:
ssl_settings = {'key': 'randomstuff'}
Run Code Online (Sandbox Code Playgroud)
它应该仍然连接。
归档时间: |
|
查看次数: |
3227 次 |
最近记录: |