【问题标题】:Client Certificate and Key for Azure Database for MySQLAzure Database for MySQL 的客户端证书和密钥
【发布时间】:2021-06-21 13:05:34
【问题描述】:

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

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

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

【问题讨论】:

    标签: mysql azure azure-database-mysql


    【解决方案1】:

    如果您希望对客户端和服务器之间的连接进行加密,那么您发布的链接中的描述就是要走的路。它告诉您的 MySQL 客户端信任用于签署 MySQL 服务器使用的服务器证书的 CA 证书。如果你连接到 MySQL 服务器并捕获包,你会看到 TLS 握手发生,我只是在 Azure 上使用我的 MySQL 实例之一:

    提供 TLS 客户端密钥/证书文件的选项(如您在屏幕截图中所示)将启用 相互身份验证 或者简单地说:您的服务器将能够使用客户端证书和密钥 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 指南创建您自己的密钥 + 证书和 this 描述将 CA 证书复制到您服务器上的正确位置。

    【讨论】:

      【解决方案2】:

      但这是用于服务器证书

      在这种情况下,没有区别。但是,由于您可以提供自己的 CA 证书,因此您可以按照此处所述从提供商处购买证书,或者获取letsencrypt证书(如果您在互联网上有网络服务器或控制DNS域),甚至可以滚动您自己的证书颁发机构.

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-20
        • 2023-03-07
        • 1970-01-01
        • 1970-01-01
        • 2021-02-09
        相关资源
        最近更新 更多