Установка SSL-сертификатов при помощи PhpMyAdmin на сервер Ubuntu 12.04
PHP, Ubuntu, VPS | Комментировать запись
PhpMyAdmin – это простой в использовании веб-интерфейс для управления базами данных MySQL. Его можно настроить для дистанционного управления данными виртуального выделенного сервера (т.е., без доступа к оболочке).
Хотя phpMyAdmin полезен, он представляет серьёзный риск безопасности в случае неправильной настройки. Это руководство покажет, как установить phpMyAdmin на стек LAMP на сервере Ubuntu 12.04, применяя SSL и ограничения доступа.
Требования
Для выполнения руководства необходимы привилегии root и предварительно настроенный стек LAMP. Чтобы получить инструкции по установке LAMP stack, читайте это руководство.
Установка PhpMyAdmin
Пакет PhpMyAdmin можно найти в стандартном репозитории Ubuntu 12.04. для установки PhpMyAdmin используйте команду:
sudo apt-get install phpmyadmin
Во время установки выберите Apache2 в качестве сервера. Затем выберите Yes для автоматической настройки базы данных phpMyAdmin.
Укажите свой root-пароль MySQL, а затем становите пароль для phpMyAdmin.
Настройка Apache для загрузки phpMyAdmin
Теперь нужно настроить Apache для поддержки phpMyAdmin; для этого веб-сервер обращается к настройкам phpMyAdmin, чтобы открыть доступ к приложению.
Отредактируйте главный конфигурационный файл Apache с привилегиями root:
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
Эти предупреждения можно просто проигнорировать.
Создание файла .htaccess для PhpMyAdmin
Первое, что нужно сделать для безопасности PhpMyAdmin – ограничить доступ при помощи файла .htaccess. Этот файл позволяет запрашивать пароль для доступа к странице авторизации phpMyAdmin.
Для начала нужно настроить phpMyAdmin для поддержки файла .htaccess. Откройте конфигурации phpMyAdmin для apache с привилегиями root:
sudo nano /etc/phpmyadmin/apache.conf
Под строкой DirectoryIndex index.php поместите строку AllowOverride All:
<Directory /usr/share/phpmyadmin>
Options FollowSymLinks
DirectoryIndex index.php
AllowOverride All
. . .
Сохраните и закройте файл.
Затем создайте файл .htaccess для phpMyAdmin:
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
Создание SSL-сертификата при помощи PhpMyAdmin
Веб-интерфейс и сервер будут обмениваться конфиденциальными данными, потому необходимо настроить 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 дней. После запуска появится ряд вопросов, самый важный из которых – Common Name. В это поле необходимо внести доменное имя или 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-сертификатов
Сертификат SSL готов. Теперь нужно настроить Apache для поддержки этого SSL-сертификата. Откройте стандартный конфигурационный файл виртуального хоста с привилегиями root:
sudo nano /etc/apache2/sites-available/default
Для начала нужно внести в строку <VirtualHost *:80> стандартный порт SSL; в итоге строка выглядит так:
<VirtualHost *:443>
Затем в блок VirtualHost добавьте строку ServerName, которая задаёт доменное имя или IP-адрес, указанные при создании SSL-сертификата, и стандартный порт 443.
<VirtualHost *:443>
ServerAdmin webmaster@localhost
ServerName example.com:443
. . .
Затем внесите следующие строки перед закрывающим тегом </VirtualHost>:
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
Сохраните изменения и закройте файл.
Запуск SSL через PhpMyAdmin
Сервер должен использовать SSL при создании любого подключения; для этого нужно настроить PhpMyAdmin.
Откройте конфигурационный файл phpMyAdmin с привилегиями root:
sudo nano /etc/phpmyadmin/config.inc.php
Перейдите в конец файла и внесите следующую строку:
$cfg['ForceSSL'] = true;
Это всё, что нужно было сделать. Теперь phpMyAdmin будет использовать SSL для создания подключений.
Сохраните и закройте файл.
Активация изменений SSL
Если сайт еще не включен, включите его с помощью следующей команды:
sudo a2ensite default
Перезапустите сервис Apache, чтобы обновить настройки:
sudo service apache2 restart
Итоги
Чтобы получить доступ к интерфейсу phpMyAdmin, откройте в браузере:
example.com/phpmyadmin
При этом будет запрошено имя пользователя и пароль, указанные в .htaccess.
Потом, вероятно, появится предупреждение о ненадёжности SSL-сертификата. Это довольно ожидаемая реакция, поскольку сертификат не подписан каким-либо центром сертификации, которому может доверять браузер.
Чтобы продолжить, нажмите Proceed или Continue. Теперь будет повторно запрошен пароль .htaccess, поскольку вы подключаетесь к сайту через SSL.
Затем появится страница входа phpMyAdmin; введите свои учетные данные.
Username: root
Password: your_phpmyadmin_password
После этого на экране появится главная страница страница управления phpMyConfig.
Tags: .htaccess, Apache, Cloud Server, LAMP stack, OpenSSL, PHP, phpMyAdmin, SSL