我已经使用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 回答
我想你可能误解了pma配置中的ssl选项 .
这不会加密您的Web浏览器和phpmyadmin之间的流量,而是加密phpmyadmin和您的mysql服务器之间的连接,它必须在您的mysql服务器上设置 .
如果您的mysql服务器只在localhost上侦听,而您的phpmyadmin和mysql服务器在同一台机器上,则不需要设置它 .
通过TCP / IP而不是Socket(localhost)连接 . 这样可以验证连接形式,并让您使用和不使用SSL进行测试 .
从单独的物理机器进行测试可能是合适的,但我不知道这是否会实际执行与同一台机器TCP / IP连接不同的任何操作 .