AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1073493
Accepted
UncleBob
UncleBob
Asked: 2021-08-05 01:42:04 +0800 CST2021-08-05 01:42:04 +0800 CST 2021-08-05 01:42:04 +0800 CST

无法使用 TLSv1.2 连接到 Amazon RDS

  • 772

我用 Ubuntu 20 设置了一台新机器,发现我无法再连接到我的 RDS 数据库。

应该连接到开发环境的 spring-boot 应用程序抛出以下异常:
javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)

所以我挖出了 mySql 工作台并尝试了它。这导致了这个错误:
ssl_choose_client_version:unsupported protocol

寻找那个告诉我 Ubuntu 20 将 TLSv1.2 设置为最低 TLS 版本,如果您的 MySQL 服务器不支持它,则会发生此错误(来自这里:https ://askubuntu.com/questions/1193629/why -mysql-workbench-8-x-errors-out-with-an-ssl-connection-error-choose-client-v)。我尝试关闭 SSL 的工作台,果然它可以建立连接。

显而易见的问题是,这是 Amazon RDS ... TLS 1.2 是唯一无法禁用的版本,因为它是内部使用的版本,如下所示:https ://docs.aws.amazon.com /AmazonRDS/latest/UserGuide/SQLServer.Ciphers.html

所以说真的,应该没有问题。我开始怀疑 TLS 版本是否真的是问题所在。但由于我没有任何其他线索,我按照这里的答案中的食谱重新配置我的本地 openssl 以允许最低 TLS 版本 1 并降级安全级别:https ://askubuntu.com/questions/1233186/ubuntu- 20-04-how-to-set-lower-ssl-security-level

您不知道吗,Workbench 现在连接的 SSL 设置为必需。Spring-Boot 仍然没有,我想我必须在其他地方配置它才能获得备忘录。但与其浪费时间,我宁愿解决真正的问题,即我无法通过 TLSv1.2 进行连接,而据我所知,我确实应该能够连接。这比降低我的安全性要好得多。我尝试更新数据库证书以防万一出现问题,但管理控制台发现证书没有任何问题,如果我不需要,显然不会让我更换它。所以我有点不知道下一步该尝试什么。

ssl amazon-rds
  • 1 1 个回答
  • 2438 Views

1 个回答

  • Voted
  1. Best Answer
    UncleBob
    2021-08-05T06:53:13+08:002021-08-05T06:53:13+08:00

    原来 TLS 支持取决于您在 RDS 上使用的确切数据库引擎版本。Aurora mySQL 5.6 仅支持 TLSv1.0,直到版本 1.23.1,此时 TLSv1.1 和 1.2 可用。我们的版本是 1.22.something,所以我不得不升级引擎。

    即使那样它也不会起作用,因为 Ubuntu 20 还强制要求 2048 位的最小密钥长度,而 Aurora mysql 5.6 只是没有提供,而且我只能说这无法更改。您将找到可用于更改 Diffie-Hellman 密钥长度的数据库参数的文档,但事实证明这些仅适用于 SqlServer,而不适用于 MySQL。因此,您仍然必须按照此处接受的答案所述对您的 openssl.cnf 进行更改:https ://askubuntu.com/questions/1233186/ubuntu-20-04-how-to-set-lower-ssl -security-level 这会将您的 SECLEVEL 更改为 1,因此 openssl 将接受较短的 DHE 密钥。

    即使那样,我的 spring-boot 应用程序也无法连接,尽管 workbench 现在可以连接。这是因为 JDBC 没有告诉服务器它可以执行 TLSv1.2,尽管它完全可以(奇怪的决定,那个),所以即使可以,服务器也永远不会尝试发送 1.2 握手。

    为了告诉 JDBC 实际使用 TLSv1.2,您必须将其附加到连接字符串:

    jdbc:myslq://<host>/<db>?enabledTLSProtocols=TLSv1.2
    

    现在一切都连接起来了。

    我本来希望 aurora 提供更长的密钥,而不是降低 Ubuntu 的安全性,但似乎没有办法。如果有人知道,请告诉我。

    • 3

相关问题

  • 如何使用 Tomcat 5.5 更新 SSL 证书

  • 为 IIS6 自行生成 SSL 证书?

  • plesk 上的域和子域 ssl 访问

  • 如何设置 SSL 邮件服务器?

  • 如何通过 SVN 命令行接受 SSL 证书?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve