MySQL 的 Azure 数据库的客户端证书和密钥
Client Certificate and Key for Azure Database for MySQL
我想为我在 Azure 中的 MySQL 数据库使用 SSL 连接,但我找不到如何获取客户端证书和密钥。有办法得到这些吗?
我找到了这篇文章,但这是针对服务器证书的,不是我正在寻找的解决方案:
https://docs.microsoft.com/en-us/azure/mysql/howto-configure-ssl
例如,在MySQL Workbench中,我在哪里可以获得这两项所需的文件(见截图):
but this is for a Server Certificate
在这种情况下,没有区别。但是由于您可以提供自己的 CA 证书,您可以按照此处所述从提供商处购买证书,或者获取 letsencrypt 证书(如果您在 Internet 上有网络服务器或控制 DNS 域),甚至可以推出自己的证书颁发机构.
如果您希望加密客户端和服务器之间的连接,您发布的 link 中的描述是可行的方法。它告诉您的 MySQL 客户端信任用于签署 MySQL 服务器使用的服务器证书的 CA 证书。如果您连接到 MySQL 服务器并捕获包,您会看到正在进行的 TLS 握手,我只是用我在 Azure 上的一个 MySQL 实例做到了这一点:
提供 TLS 客户端 key/cert 文件的选项(如您在屏幕截图中显示的那样)将启用 相互身份验证 或简单地说:您的服务器将能够使用客户端证书和密钥 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,例如在 VM 上。然后您可以按照例如 this guide to create your own keys + certificates and this 的说明将 CA 证书复制到您服务器上的正确位置。
我想为我在 Azure 中的 MySQL 数据库使用 SSL 连接,但我找不到如何获取客户端证书和密钥。有办法得到这些吗?
我找到了这篇文章,但这是针对服务器证书的,不是我正在寻找的解决方案: https://docs.microsoft.com/en-us/azure/mysql/howto-configure-ssl
例如,在MySQL Workbench中,我在哪里可以获得这两项所需的文件(见截图):
but this is for a Server Certificate
在这种情况下,没有区别。但是由于您可以提供自己的 CA 证书,您可以按照此处所述从提供商处购买证书,或者获取 letsencrypt 证书(如果您在 Internet 上有网络服务器或控制 DNS 域),甚至可以推出自己的证书颁发机构.
如果您希望加密客户端和服务器之间的连接,您发布的 link 中的描述是可行的方法。它告诉您的 MySQL 客户端信任用于签署 MySQL 服务器使用的服务器证书的 CA 证书。如果您连接到 MySQL 服务器并捕获包,您会看到正在进行的 TLS 握手,我只是用我在 Azure 上的一个 MySQL 实例做到了这一点:
提供 TLS 客户端 key/cert 文件的选项(如您在屏幕截图中显示的那样)将启用 相互身份验证 或简单地说:您的服务器将能够使用客户端证书和密钥 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,例如在 VM 上。然后您可以按照例如 this guide to create your own keys + certificates and this 的说明将 CA 证书复制到您服务器上的正确位置。