15

当我尝试从未启用 SSL 的应用程序/客户端连接到 Azure 中的 MySQL 服务器时,连接失败。错误信息如下:

需要 SSL 连接。请指定 SSL 选项并重试。

连接到 Azure 中的 MySQL 服务器时是否必须使用 SSL?有没有办法可以规避这个要求?

4

3 回答 3

16

默认情况下,Azure Database for MySQL 在服务器和客户端应用程序之间强制实施 SSL 连接,以防止 MITM(中间人)攻击。这样做是为了尽可能安全地连接到您的服务器。

虽然不推荐,但如果您的客户端应用程序不支持 SSL 连接,您可以选择禁用要求 SSL 连接到您的服务器。请查看如何在 Azure 中为您的 MySQL 服务器配置 SSL 连接以获取更多详细信息。您可以从门户或使用 CLI 禁用要求 SSL 连接。请注意,Azure 不建议在连接到服务器时禁用要求 SSL 连接。

于 2017-05-17T22:12:09.223 回答
10

选项 1 在 Azure 门户中的“Azure Database for MySQL 服务器”下 1) 选择 MySql 服务器 2) 转到定价层 -> 强制 SSL 连接并选择 DISABLED 选项 -> 保存

选项 2 1) 从https://www.digicert.com/CACerts/BaltimoreCyber ​​TrustRoot.crt.pem 下载证书 2) 使用这些证书连接到 MySql 服务器

mysql -h mydemoserver.mysql.database.azure.com -u Username@mydemoserver -p --ssl-ca=/opt/ssl/BaltimoreCyberTrustRoot.crt.pem
于 2018-07-25T11:58:18.120 回答
0

通过 SSL 从 Docker 容器到 Azure MYSQL 连接:

我的情况略有不同,但我在这里写它是因为 azure 文档https://docs.microsoft.com/en-us/azure/mysql/howto-configure-ssl并没有详细说明应用程序如何与来自 docker 容器的 MYSQL。

在我的例子中,我使用 docker 容器连接到 Azure MYSQL。我在我的 MYSQL 服务器上启用了 SSL 设置,并使用 sql workbench 验证了连接,我能够使用BaltimoreCyberTrustRoot.crt.pemSSL 从本地连接它。但我的应用程序抛出错误消息 -

需要 SSL 连接。请指定 SSL 选项并重试。

DATABASE_SSL_CERT: /etc/ssl/certs/BaltimoreCyberTrustRoot.crt.pem我在我的 docker compose yml 文件中传递了。

我知道\npem 文件中有时会在 docker 环境变量中被解释为其他内容。\n如果您在记事本++中打开,则可以在每一行中看到

在此处输入图像描述

我做了什么来解决这个问题,我将 pem 文件转换为 base64 并在 yml 文件中进行了更新。就像是 -

DATABASE_SSL_CA: LS0tLS1CRUdJTiBDRVJUSUZ...=

在某些情况下,它还 DATABASE_SSL_ENABLE: "true"需要强制 SSL 连接到 MYSQL。

我的新 yml 看起来像 -

version: "2.2"
services:
  redis:
    image: redis:3.2.6

  ckeditor-cs:
    image: docker.cke-cs.com/cs:3.9.1
    depends_on:
      - redis
    ports:
      - "8000:8000"
    restart: always
    init: true
    environment:
      DATABASE_DRIVER: mysql
      DATABASE_HOST: efg.mysql.database.azure.com
      DATABASE_USER: user@db
      DATABASE_PASSWORD: PASS
      DATABASE_PORT: 3306
      DATABASE_SSL_CA: LS0tLS1CRUdJTiB............S0=
      DATABASE_SSL_ENABLE: "true"
      REDIS_HOST: redis
      ENVIRONMENTS_MANAGEMENT_SECRET_KEY: ABC
      LICENSE_KEY: XYZ
    volumes:
      - ~/ckeditor-cloudservice/easyimage_files:/var/cs/easyimage

现在一切都按预期工作。

于 2021-12-10T15:49:23.870 回答