当前位置: 首页 > 知识库问答 >
问题:

带有PhpMyAdmin的Nginx(通过ssl进行安全保护)

桂嘉年
2023-03-14

我已经用Nginx配置了一个web服务器。现在,我有一个MariaDB的实例,它以PhpMyAdmin作为管理gui运行。这一切都在起作用。从去年开始,我还在学习Nginx和所有与web服务器相关的东西。

我确实让我运行的每个应用程序都受到SSL证书的保护,每次访问应用程序所在的url时,通过https连接PHPMyAdmin也是如此。


    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本身显示了一个信息,即存在不匹配:

此消息在登录时可读

登录后,我在数据库下看到:警告

我看了上面的文件,从PhpMyAdmin本身发出警告

我使连接可用于配置。使用者股份有限公司.php文件,并尝试在其中包含ssl行。为了解决这个问题,我在过去几天做了很多研究。对于我的设置(如所述),PhpMyAdmin是受保护的,还是仅受服务器端保护?我从某个地方的一篇帖子上读到,仅凭nginx就足以领导加密。

如何确保PhpMyAdmin运行安全?除此之外,上面提到的文档是否已被弃用于rencent PhpMyAdmin版本,或者我是否可以使用该说明。那么证书文件呢,我在Nginx conf文件中写下了两条指向证书文件的路径。我需要在PMA的ssl配置行中填写哪些文件?我的意思是,这些不同的文件是因为需要更多吗?这篇帖子就是一个例子

$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';

编辑:我只有这些证书文件

如果我可以通过将其添加到pma配置中来解决这个问题,那么哪些文件与哪一行匹配?

共有2个答案

惠翰藻
2023-03-14

通过TCP/IP而不是套接字(本地主机)进行连接。这将允许您验证这种连接形式,并允许您在使用和不使用SSL的情况下进行测试。

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

齐承泽
2023-03-14

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

这不会加密web浏览器和phpmyadmin之间的通信,而是加密phpmyadmin和mysql服务器之间的连接,并且必须在mysql服务器上进行设置。

如果您的mysql服务器只在localhost上侦听,而您的phpmyadmin和mysql服务器在同一台机器上,则无需进行设置。

 类似资料:
  • 我已经通过创建一个安全领域在JBoss EAP 7.2上启用了SSL 我已经更新了远程子系统,使用默认的connector-ref作为https 当我试图从一个独立的Java类访问< code > http-remoting://127 . 0 . 0 . 1:8443 时,我在获取连接工厂时得到以下错误 请帮助解决。我是否缺少任何配置。

  • HTTP端口:8080 SSL端口:4443 我学习了Apache教程,它使用XAMPP版本的Openssl为SSL创建必要的证书。 https://community.apachefriends.org/viewtopic.php?f=16&t=77006&sid=E0291BC38DD9B562CD74E5F72153C1F7# 主机文件:添加“127.0.0.1www.site.local”

  • 我加载的证书对“每个人”都有完全的特权。我已经尝试了我在互联网上看到的每一个解决方案,但仍然得到错误。 下面是我创建请求的代码: 获取证书的代码(我也尝试过使用pfx): 第二个编辑:我可以让它在SoapUI中工作,但不能在。NET应用程序中工作,只需从SOAP UI中的文件系统中加载SSL证书即可。

  • 我有一个JavaSpring Boot Application,我已经将服务器配置为在SSL上运行,这是强制性的。 我已经为我的域创建了一个证书从LetsEncrypt证书,并通过运行为keystore创建了一个p12文件 我想用Ingress Nginx控制器在Kubernetes上公开它,所以我创建了一个秘密 我已经部署了应用程序,可以看到部署文件,当我将本地8443端口转发到其服务的8443

  • 我一直试图使我的本地基于XAMPP的网站在我们的本地intranet系统中正确地使用SSL。 Windows版本:Windows Server 2016 Standard XAMPP Version 7.4.1 PHP Version 7.4.1 HTTP端口:8080 SSL端口:4443 以下步骤可以启动并运行未加密版本: 主机文件:添加“127.0.0.1www.site.local” ht

  • 问题内容: 我知道这并不是一件容易的事,但是很遗憾,自昨天以来我一直被困在这里并与之抗争。我遵循了Android互助身份验证教程,将密钥库放置在资源中并尝试通过SSL连接到我的服务器,但是得到以下异常 java.lang.RuntimeException:org.spongycastle.jcajce.provider.asymmetric.x509.CertificateFactory $ Ex