python - Python MySQLdb 的 CA SSL 参数不起作用,但 key 可以吗?

标签 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}

这会导致“错误 2026:SSL 连接错误”。但是,如果我将 ssl_settings 更改为:

ssl_settings = {'key':'ca.pem'}

数据库连接正常,脚本执行。根据我对 SSL 参数的理解,'cert' 和 'key' 应该只用于客户端对服务器的身份验证,那么后一个 SSL 设置似乎有效的原因是什么?为什么指定 CA 文件不起作用?

Python 2.4.3(旧的,我知道)
MySQL-python 1.2.1

最佳答案

注意:此错误已被修复。根据错误:

Noted in 5.1.66, 5.5.28, 5.6.7, 5.7.0 changelogs.

The argument to the --ssl-key option was not verified to exist and be a valid key. The resulting connection used SSL, but the key was not used.


旧答案

有关比我能给出的更好的描述,请参阅 http://bugs.mysql.com/bug.php?id=62743http://www.chriscalender.com/?p=325 .

根据我(公认的未受过教育的)理解,这是一个 MySQL 错误。只要您指定 一个 key (正如您在有效示例中所做的那样),MySQL 就会设置SSL 连接并且您被授予访问权限。另一个有趣的部分是您可以将键值更改为任何值,因此在您的示例中,您可以:

ssl_settings = {'key': 'randomstuff'}

它应该仍然连接。

关于python - Python MySQLdb 的 CA SSL 参数不起作用,但 key 可以吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7287088/

相关文章:

python - 如何避免循环指定 Pandas Dataframe 过滤的限制?

python - 什么效率更高 : add fields to the message or create a custom header? RabbitMQ

python - Django - 我们可以连接到不同的远程数据库吗

python高级搜索库

python - 在 Pool.map 中使用生成器作为可迭代是否合理

IIS 中的 SSL 和 TLS 协议(protocol)

java - 启用 SSL 的 Spring Boot 阻塞连接池

magento - Nginx Magento SSL ERR_TOO_MANY_REDIRECTS

mysql - 操作错误: (1698, "Access denied for user ' cotequotey'@'localhost'“)

python - 在 MySQLdb 中转义 %