MySQL 中的加密客户端连接

问题描述 投票:0回答:1

我有一个 MySQL 服务器。从技术上讲,它是与 MySQL 兼容的 Amazon Aurora,我可以从多个客户端连接到它,然后执行:

SELECT *
FROM performance_schema.session_status
WHERE VARIABLE_NAME IN ('Ssl_version','Ssl_cipher');

每次我收到以下回复:

VARIABLE_NAME,VARIABLE_VALUE
'Ssl_cipher','ECDHE-ECDSA-AES128-GCM-SHA256'
'Ssl_version','TLSv1.2'

所以连接是加密的,但我不清楚如何加密。例如,在 MySQL Workbench 中,我已在连接属性中将“使用 SSL”设置为“要求”,但我没有提供以下任何内容:

  • SSL CA 文件
  • SSL 证书文件
  • SSL 密钥文件

如果我将“使用 SSL”设置为“需要并验证 CA”或“需要并验证身份”,则连接会失败,表面上是因为我没有提供上述 SSL 文件。如果没有在连接字符串中指定任何证书,我也可以从不同的客户端主机(Web 服务器、Lambda 函数、MySQL CLI 等)建立加密连接,但我不清楚这些连接是如何加密的,因为有连接字符串中未指定证书。我对在生产中运行某些东西感到不舒服,这似乎是偶然的,并且希望有人可以帮助巩固我对所观察到的内容的理解。

mysql-workbench amazon-aurora
1个回答
0
投票

TLS 不需要发送客户端证书和密钥。

如果使用

REQUIRE X509, ISSUER or SUBJECT
定义用户,则仅需要客户端证书和相应密钥。

如果您不提供 CA,服务器证书将根据系统 CA 进行检查,如果您有自签名证书,验证将失败。

如果需要使用受信任的安全连接,只有两种验证方式:要么服务器证书由受信任的机构签名,要么客户端知道并检查证书的指纹。据我所知,后一种仅在 MariaDB 中受支持。

© www.soinside.com 2019 - 2024. All rights reserved.