首页 文章

Nginx与PhpMyAdmin(通过ssl担保)

提问于
浏览
2

我已经使用Nginx配置了一个网络服务器 . 现在,我有一个运行PhpMyAdmin作为管理gui的MariaDB实例 . 它正在考虑的全部工作 . 自从我去年开始以来,我仍在学习Nginx和所有与网络服务器相关的东西 .

我确实拥有使用SSL证书保护的每个应用程序,每次访问应用程序所在的URL时,PHPMyAdmin与https的连接也是如此 .

server {
      listen 80;
      listen [::]:80;
      server_name sub.example.com;

      location / {
        rewrite ^ https://$host$request_uri? permanent;
      }
    }

    server {
      listen 443 ssl http2;
      listen [::]:443 ssl;
      server_name sub.example.com;

      gzip off;
      server_tokens off;

      ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
      ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

      ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384;

      ssl_ecdh_curve secp384r1;
      ssl_session_tickets off;
      ssl_dhparam /etc/ssl/certs/dhparam-4096.pem;

      # OCSP stapling
      ssl_stapling on;
      ssl_stapling_verify on;
      resolver 8.8.8.8;

      # SSL sessions
      ssl_session_cache shared:SSL:10m;
      ssl_session_timeout 10m;

      add_header X-Frame-Options DENY;
      add_header X-Content-Type-Options nosniff;
      add_header X-XSS-Protection "1; mode=block";
      add_header Strict-Transport-Security "max-age=0; includeSubDomains";

      location / {
        proxy_pass ip:port;
      }
    }

我认为仍然可以改进,但这是我的问题:就像我说的那样,PhpMyAdmin正在运行Nginx的https . 但PhpMyAdmin本身正在显示一条消息,表明存在不匹配:

This message is readable on the login

登录后,我看到了:warning under database

我看了上面的文档警告from PhpMyAdmin itself

我将连接提供给config.user.inc.php文件,并尝试在其中包含ssl行 . 我在过去几天做了很多研究来解决这个问题 . 使用我所描述的设置,PhpMyAdmin是受保护的,还是仅受服务器保护?我从某个帖子开始,只能通过nginx引导加密 .

如何确保PhpMyAdmin运行安全?除此之外,上面提到的文档对于rencent PhpMyAdmin版本是否已被弃用,或者我可以使用该文档 . 那么关于cert文件,我在Nginx conf文件中写下了两个到certficate文件的路径 . 我需要在PMA的ssl配置行填写哪些文件?我的意思是,因为需要更多而不同的文件吗?示例is this post

$cfg['Servers'][$i]['ssl'] = true;
$cfg['Servers'][$i]['ssl_cert'] = '/etc/mysql/client-cert.pem';
$cfg['Servers'][$i]['ssl_ca'] = '/etc/mysql/ca-cert.pem';
$cfg['Servers'][$i]['ssl_key'] = '/etc/mysql/client-key.pem';

编辑:我只有these cert files

如果我可以通过将其添加到pma配置来找出它,哪些文件匹配哪一行?

2 回答

  • 0

    我想你可能误解了pma配置中的ssl选项 .

    这不会加密您的Web浏览器和phpmyadmin之间的流量,而是加密phpmyadmin和您的mysql服务器之间的连接,它必须在您的mysql服务器上设置 .

    如果您的mysql服务器只在localhost上侦听,而您的phpmyadmin和mysql服务器在同一台机器上,则不需要设置它 .

  • 1

    通过TCP / IP而不是Socket(localhost)连接 . 这样可以验证连接形式,并让您使用和不使用SSL进行测试 .

    从单独的物理机器进行测试可能是合适的,但我不知道这是否会实际执行与同一台机器TCP / IP连接不同的任何操作 .

相关问题