mysql - Azure Database for MySQL 的客户端证书和 key

标签 mysql azure azure-database-mysql

我想对 Azure 中的 MySQL 数据库使用 SSL 连接,但我不知道如何获取客户端证书和 key 。有办法获得这些吗?

我找到了这篇文章,但这是针对服务器证书的,不是我正在寻找的解决方案: https://learn.microsoft.com/en-us/azure/mysql/howto-configure-ssl

例如,在 MySQL Workbench 中,我可以在哪里获取这两项所需的文件(参见屏幕截图):

enter image description here

最佳答案

如果您希望对客户端和服务器之间的连接进行加密,则可以使用您发布的链接中的描述。它告诉您的 MySQL 客户端信任用于签署 MySQL 服务器使用的服务器证书的 CA 证书。如果您连接到 MySQL 服务器并捕获包,您会看到正在发生 TLS 握手,我刚刚在 Azure 上的一个 MySQL 实例上执行了此操作:

enter image description here

提供 TLS 客户端 key /证书文件(如屏幕截图中所示)的选项将启用相互身份验证,或者简单地说:您的服务器将能够使用客户端证书和 key to authenticate the user (例如代替密码)。为此,您必须在 MySQL 服务器上存储用于签署客户端证书的 CA 证书 - 使用托管的 Azure MySQL 实例时这是不可能的。最接近的是查看 CA 证书存储在服务器上的位置,但无法上传您自己的 CA 或服务器证书。

mysql> show variables like '%ssl%';
+----------------------+------------------+
| Variable_name        | Value            |
+----------------------+------------------+
| azure_ssl_early_init | OFF              |
| have_openssl         | YES              |
| have_ssl             | YES              |
| ssl_ca               | c:\work\ca.pem   |
| ssl_capath           |                  |
| ssl_cert             | c:\work\cert.pem |
| ssl_cipher           |                  |
| ssl_crl              |                  |
| ssl_crlpath          |                  |
| ssl_key              | c:\work\key.pem  |
+----------------------+------------------+

如果您想要这样做,您必须自己托管 MySQL,例如在虚拟机上。然后你可以按照例如this创建您自己的 key +证书和 this 的指南说明将 CA 证书复制到服务器上的正确位置。

关于mysql - Azure Database for MySQL 的客户端证书和 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66787515/

相关文章:

c# - 使用 linq 删除代码时出现错误

Azure函数代理正则表达式匹配条件路由

azure - AKS 连接到 Azure Database for MySQL 服务器时出现问题

PHP 时间函数显示错误值

PHP 连接 MySQL 数据库时出错

sql - SQL 中的 JOIN 是什么(用于)?

azure - Xamarin.Mac Azure 通知中心

linux - 使用自定义 DNS 运行 `git clone`?

迁移到 Azure 应用服务和 Azure Database for MySQL 灵活服务器后,Wordpress 网站速度极慢

Azure Database for MySQL 的 API