【问题标题】:Connecting phpMyAdmin to a MySQL server over SSL通过 SSL 将 phpMyAdmin 连接到 MySQL 服务器
【发布时间】:2010-09-24 19:34:33
【问题描述】:

我可能找错了树...但是,我拥有的是一个 MySQL 服务器,它只接受来自具有有效 SSL 证书的客户端的连接(请参阅this link)。这在 Rails 中非常有效。我在一台服务器上有我的数据库,还有一个使用客户端证书连接的 Rails 应用程序。也许不是最快的,但它确实有效。

database.yml 中的配置如下所示:

sslkey: /path/to/client-key.pem
sslcert: /path/to/client-cert.pem
sslca: /path/to/ca-cert.pem

问题是我想将 phpMyAdmin 托管在与 Rails 应用程序相同的服务器上。我认为 phpMyAdmin 的连接选项更受限制,因为我似乎无法找到使用客户端证书进行连接的方法。但我发现奇怪的是,在这个主题上搜索答案并没有出现太多(这让我怀疑我是否采取了错误的方法)。

显然,我可以轻松地将 phpMyAdmin 本身设置为托管在 SSL 证书后面(这将加密客户端浏览器和我的 phpMyAdmin 服务器之间的请求),但我希望 phpMyAdmin db 连接也被加密。

这可能吗?这是一个糟糕的设计选择吗?有没有更好的方法来做到这一点?

谢谢,

【问题讨论】:

    标签: mysql ruby-on-rails ssl phpmyadmin ssl-certificate


    【解决方案1】:

    在您的config.inc.php 中,在适用的服务器内容之后添加此行:

    $cfg['Servers'][$i]['ssl']=true;  
    

    假设你的 php 和它的 mysql 客户端配置了 SSL,这应该可以工作。

    【讨论】:

    • 虽然这似乎启用了 SSL,但它似乎对基于证书的身份验证没有任何作用。
    • 您确定可以通过 PHP 进行 SSL 连接吗?请记住,CL mysql 使用的 my.cnf 可能与 PHP 使用的不同。我建议编写一个带有强制加密的快速测试脚本以确保其正常工作。
    【解决方案2】:

    我同意,答案是不够的。每个人都告诉您将 SSL 证书和指针放在 conf.d virtualhost 块中的地方。但这是针对入站流量的。仅当您的 phpmyadmin 正在从 mysql 服务器的 IP 地址访问时,但此示例并非如此。在这里,我们使用phpmyadmin 从本地机器向远程服务器发出远程请求。

    为了做到这一点,phpmyadmin 必须有一个配置设置以允许指定 cert 文件的位置。否则,我看不出这将如何工作。尽管虚拟主机块也可能适用于传出流量。我想我们可以试试……我的想法是虚拟主机只适用于入站流量。

    【讨论】:

      【解决方案3】:

      我相信完整的答案在 PHPmyadmin 文档中得到了很好的解释: https://docs.phpmyadmin.net/en/latest/config.html#example-google-ssl

      你应该按照它在config.inc.php中配置你的服务器连接记录如下:

      // IP address of your instance
      $cfg['Servers'][$i]['host'] = '8.8.8.8';
      // Use SSL for connection
      $cfg['Servers'][$i]['ssl'] = true;
      // Client secret key
      $cfg['Servers'][$i]['ssl_key'] = '../client-key.pem';
      // Client certificate
      $cfg['Servers'][$i]['ssl_cert'] = '../client-cert.pem';
      // Server certification authority
      $cfg['Servers'][$i]['ssl_ca'] = '../server-ca.pem';
      // Disable SSL verification (see above note)
      $cfg['Servers'][$i]['ssl_verify'] = false;
      

      【讨论】:

      • 如果ssl_certssl_ca 在同一个文件中怎么办?我的意思是 Let's Encrypt 生成一个 fullchain.pem ,其中将它们都包含在一个文件中
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-15
      • 2016-07-12
      • 2011-05-16
      • 1970-01-01
      • 2014-04-05
      相关资源
      最近更新 更多