如何在Ubuntu12.04VPS上使用PhpMyAdmin设置SSL证书

来自菜鸟教程
跳转至:导航、​搜索


状态: 已弃用

本文介绍了不再受支持的 Ubuntu 版本。 如果您当前正在运行运行 Ubuntu 12.04 的服务器,我们强烈建议您升级或迁移到受支持的 Ubuntu 版本:

原因: Ubuntu 12.04 已于 2017 年 4 月 28 日终止生命周期 (EOL) and no longer receives security patches or updates. This guide is no longer maintained.

请参阅:
本指南可能仍可用作参考,但可能不适用于其他 Ubuntu 版本。 如果可用,我们强烈建议使用为您正在使用的 Ubuntu 版本编写的指南。 您可以使用页面顶部的搜索功能来查找更新的版本。


介绍

PhpMyAdmin 是一个基于 Web 的前端,用于以视觉友好的方式轻松管理 MySQL 数据库。 您可以设置此软件以远程管理您的 VPS 上的数据,而无需 shell 访问。

虽然 phpMyAdmin 很有用,但如果配置不正确,它也可能不安全。 本指南将介绍如何使用 SSL 和访问限制在 Ubuntu 12.04 机器上的 LAMP(Linux、Apache、MySQL 和 PHP5)堆栈上安装 phpMyAdmin。

初始设置

本指南假定您对 Ubuntu 12.04 服务器具有 root 访问权限,并且您已经配置了 LAMP。 如果您还没有' 设置,请按照本指南在 Ubuntu 12.04 安装 Apache、MySQL 和 PHP。

登录到您的服务器并在准备好后继续。

如何在 Ubuntu 上设置 PhpMyAdmin

Ubuntu 12.04 在其默认存储库中包含 phpMyAdmin。 使用以下命令安装:

sudo apt-get install phpmyadmin

选择“Apache2”作为安装期间要配置的服务器。 选择“是”以允许自动配置 phpMyAdmin 数据库。

输入您在安装过程中为 root MySQL 用户设置的密码,然后为 phpMyAdmin 进程分配一个密码以用于登录。

配置 Apache 以加载 PhpMyAdmin

告诉 Apache 获取 phpMyAdmin 配置以允许访问应用程序。

使用 root 权限编辑主 Apache 配置文件:

sudo nano /etc/apache2/apache2.conf

滚动到文件底部并键入以下指令以使 Apache 读取 phpMyAdmin 特定的配置文件:

Include /etc/phpmyadmin/apache.conf

重新启动服务器以使更改生效:

sudo service apache2 restart

您可能会收到一条消息,内容如下:

[warn] The Alias directive in /etc/phpmyadmin/apache.conf at line 3 will probably never match because it overlaps an earlier Alias.
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName

这些只是警告,可以安全地忽略。

如何为 PhpMyAdmin 设置 .htaccess

保护 phpMyAdmin 的第一步是设置 .htaccess 限制。 这将需要密码登录才能访问 phpMyAdmin 界面。

首先,配置 phpMyAdmin apache 配置以允许使用 .htaccess 文件。 以 root 权限打开 phpMyAdmin apache 配置文件:

sudo nano /etc/phpmyadmin/apache.conf

在“DirectoryIndex index.php”行下,插入一行“AllowOverride All”:

<Directory /usr/share/phpmyadmin>
    Options FollowSymLinks
    DirectoryIndex index.php
    AllowOverride All
    . . .

保存并关闭文件。

现在,创建一个 phpMyAdmin 特定的 .htaccess 文件:

sudo nano /usr/share/phpmyadmin/.htaccess

在文件中插入以下文本:

AuthType Basic
AuthName "Restricted Files"
AuthUserFile /etc/phpmyadmin/.htpasswd
Require valid-user

保存并关闭文件。

此更改使我们的站点在“/etc/phpmyadmin/.htpasswd”中查找有效登录凭据的列表。

我们可以使用以下命令创建该文件和登录帐户。 替换您要使用的用户名:

sudo htpasswd -c /etc/phpmyadmin/.htpasswd user_name

您将被要求为新用户选择一个密码。

现在,重新启动 Apache 以启用访问限制:

sudo service apache2 restart

如何使用 PhpMyAdmin 设置 SSL

我们将在 Web 界面和服务器之间传递敏感数据,因此我们需要设置 SSL 以确保我们的数据不会以纯文本形式发送。

首先,使用以下命令告诉 Apache 启用 SSL 支持并重新启动服务器以实现更改:

sudo a2enmod ssl
sudo service apache2 restart

创建一个目录来存储我们的 SSL 证书,然后使用以下命令创建一个密钥和证书:

sudo mkdir /etc/apache2/ssl
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt

这将创建一个有效期为 365 天的证书。 你会被问到一些问题。 尽可能地填写它们。

必须 正确回答的问题是“通用名称”。 在此字段中使用您的域名或服务器 IP 地址。

You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:New York
Locality Name (eg, city) []:NYC
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Awesome Inc
Organizational Unit Name (eg, section) []:Dept of Merriment
Common Name (e.g. server FQDN or YOUR name) []:example.com                  
Email Address []:webmaster@awesomeinc.com

配置 Apache 以使用 SSL 证书

Now that you have created an SSL certificate, you need to tell Apache to use SSL.  Open the default virtual host config file with root privileges:
sudo nano /etc/apache2/sites-available/default

首先更改“ “声明到” ",这是默认的 SSL 端口。

更改后,在 VirtualHost 定义中添加一个“ServerName”部分,指定您在创建 SSL 证书时使用的域名或 IP 地址,后跟“:443”:

<VirtualHost *:443>
    ServerAdmin webmaster@localhost
    ServerName example.com:443
    . . .

在关闭文件之前,在 " " 结束标签:

SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key

保存并关闭文件。

在 PhpMyAdmin 中强制 SSL

我们现在必须告诉 phpMyAdmin,无论何时建立连接都必须使用 SSL。

我们将在 phpMyAdmin 配置文件中执行此操作。 使用 root 权限打开文件进行编辑:

sudo nano /etc/phpmyadmin/config.inc.php

滚动到文件底部并添加以下行:

$cfg['ForceSSL'] = true;

这是 phpMyAdmin 需要 SSL 的唯一行。

保存并关闭文件。

启用 SSL 更改

如果尚未启用,请使用以下命令启用该站点:

sudo a2ensite default

重新启动 Apache 服务以实现更改:

sudo service apache2 restart

查看结果

要访问 phpMyAdmin 界面,请使用浏览器导航到您的域名或服务器 IP 地址,然后是“/phpmyadmin”:

example.com/phpmyadmin

系统将要求您提供使用 .htaccess 文件设置的用户名和密码。

然后,您可能会看到一个屏幕抱怨 SSL 证书不受信任。

这是意料之中的,因为我们自己创建了 SSL 证书,并且没有通过 SSL 证书颁发机构。 这对我们的目的来说很好。

单击“继续”或“继续”继续。 由于我们现在正尝试通过 SSL 访问该站点,因此将再次要求您输入 .htaccess 密码。

您现在将看到 phpMyAdmin 登录页面,您可以在其中输入您在安装期间设置的凭据。

Username: root
Password: your_phpmyadmin_password

您现在将进入主 phpMyConfig 管理页面:

贾斯汀·艾林伍德