使用带有 SSL 的 ODBC (5.1) 的 MySQL 连接

标签 mysql ssl odbc ssl-certificate mysql-management

我们有一个客户端应用程序,它通过 ODBC 连接器(服务器是托管*专用网络服务器)连接到我们的在线 MySQL 数据库 (5.1.44-community-log)。这很好用。但是我无法使用 SSL 让它工作。这是我到目前为止所做的:

<强>1。 MySQL服务器

我已经让服务器管理器* 使用 SSL 设置 MySQL,这是“证明”:

mysql> SHOW VARIABLES LIKE '%ssl%';

这个响应的结果是:

+---------------+---------------------------------+
| Variable_name | Value                           |
+---------------+---------------------------------+
| have_openssl  | YES                             |
| have_ssl      | YES                             |
| ssl_ca        | /***/mysql-cert/ca-cert.pem     |
| ssl_capath    |                                 |
| ssl_cert      | /***/mysql-cert/server-cert.pem |
| ssl_cipher    |                                 |
| ssl_key       | /***/mysql-cert/server-key.pem  |
+---------------+---------------------------------+

问题:服务器是否配置正确?我猜是...

<强>2。证书

我已经购买了真正的证书(通过我的服务器管理器)。这些都在上面显示的目录中。我还从该目录下载了 client-cert.pem、client-key.pem 和 ca-cert.pem。

<强>3。具有 REQUIRE [SSL|X509]

的 MySQL 用户

我创建了一个新用户,然后使用 SSL 授予它从任何位置(用于测试)的访问权限:

GRANT USAGE ON *.* TO 'somevaliduser'@'%' IDENTIFIED BY PASSWORD 'somevalidpass' REQUIRE X509 

<强>4。 ODBC 客户端

我已经(刚刚下载并)安装了:mysql-connector-odbc-5.1.8-winx64.msi (64 位)因为我的机器是 64 位 Windows 7 机器(所以这不是问题所在)。

并且我创建了一个用户 DSN 并像这样配置它(选项卡上没有设置选项),这表明它成功连接到服务器(但是没有使用 - 也没有请求这样做 - SSL)(使用一些有效的用户)不需要 SSL):

Connection to MySQL server without using SSL

因此可以建立连接,现在尝试使用 SSL。

这是这样配置的,就像我在 MySQL.com 上读到的一样。所以我不是 100% 确定选项集是正确的。

Connection to MySQL server using SSL

如您所见,它会导致错误 HY000。打开跟踪(在 ODBC 配置中)也显示此错误。

任何人都可以给我一些提示,告诉我如何进行这项工作吗?即使您只知道解决方案的一部分?

最佳答案

我解决了这个问题。因为我一次尝试了几件事,所以我不知道是什么把戏:

  1. 我已让服务器管理员重新创建证书:我买了一些证书,但我发现这些证书不能用于对连接进行 SSL 加密。所以现在我正在使用 OpenSSL 证书。我让他们用 重新创建证书 4) 创建您的客户端 .... 服务器。它们必须是唯一的。 ( as mentioned here) 请牢记。
  2. 我想“验证 SSL 证书”复选框仅在您购买证书时适用,第三方服务应检查证书的有效性。取消选中该框!
  3. 仅填写以下字段:
    • “SSL key ”(c:\path_to\client-key.pem)
    • 'SSL 证书' (c:\path_to\client-cert.pem)
    • “SSL 证书颁发机构”(c:\path_to\ca-cert.pem)

请注意:

  1. 端口仍然相同(对我而言)。
  2. 日志 - 正如 Michal Niklas 所建议的那样 - 没有显示任何有用的信息。
  3. 我已切换到“使用压缩”,据说可以提高性能。

关于使用带有 SSL 的 ODBC (5.1) 的 MySQL 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5880503/

相关文章:

mysql - 只保留实体 id 而不是 Set<Entity> 来减少连接操作是个好主意吗

php - 使用 PDO MySQL 插入 2 个表

ssl - 另一个 nginx 反向代理问题

PowerShell - 为什么某些请求类型不起作用?

c# - 非法尝试使用文本/字节主机变量 - 插入文本列

php - 在 php 中插入多个查询的多个条件

python - 使用 python(2.7) 请求的 SSL 错误

java - 从 Java 访问 NexusDB

c++ - 未声明的标识符 SQL_SS_TABLE

php - 有没有办法知道一行是否更新?