|
Начиная с версии MySQL 5.7, хостинг 1Гб.ру поддерживает защищенное подключение к базам MySQL с использованием протокола SSL.
[править] Для чего это нужноMySQL клиент (веб-сайт) и сервер баз данных MySQL обмениваются друг с другом информацией по открытому каналу связи. Это значит, что если злоумышленник имеет доступ к прослушке канала, то данные, которые хранятся или записываются сайтом в базу, могут стать доступными для перехвата, так как передаются открытым текстом. В случае установления SSL соединения между MySQL клиентом и сервером, данные передаются по каналу в зашифрованным виде, что исключает их свободное чтение при перехвате трафика. Данная возможность будет полезна, если вы используете базы данных хостинга 1Гб.ру с удаленных клиентов через публичные сети, то есть с клиентов, размещенных не на площадке хостинга. Типичные примеры использования: с сайта на другом хостинге, из программы запущенной дома или в офисе и т.п. В том случае если сайт и база данных размещены в 1Гб.ру, то использование SSL нецелесообразно, так как информация не передается по публичным каналам, что исключает ее перехват. [править] Как воспользоватьсяПроверьте, что ваша база данных создана на сервере MySQL 5.7, в личном кабинете начало -> базы данных Если база данных находится на другом сервере, создайте новую, выбрав версию MySQL 5.7 или выше. [править] Консольный клиент mysqlСовременные MySQL клиенты умеют автоматически устанавливать SSL соединение, если видят, что данная возможность присутствует на сервере. Например, подключение из консольного клиента mysql: $ mysql -s -hадрес_сервера_mysql -uимя_пользователя имя_базы -p mysql> \s -------------- mysql Ver 14.14 Distrib 5.7.24, for Linux (x86_64) using EditLine wrapper Connection id: 374517 SSL: Cipher in use is DHE-RSA-AES256-SHA Если у вас mysql-клиент младше версии 5.7.3, то для подключения потребуется специальный сертификат для проверки подлинности, скачать вы можете его со страницы Корневой сертификат безопасности 1Gb.ru, например $ wget https://www.1gb.ru/in-solve-2016.crt $ mysql -s --ssl-ca=in-solve-2016.crt -hадрес_сервера_mysql -uимя_пользователя имя_базы -p mysql> \s -------------- mysql Ver 14.14 Distrib 5.6.36, for Linux (x86_64) using EditLine wrapper Connection id: 377004 SSL: Cipher in use is DHE-RSA-AES256-SHA [править] Подключение из PHP[править] PHP 7 и выше<?php
$db_host = 'адрес_сервера_бд';
$db_user = 'имя_пользователя_бд';
$db_name = 'имя_бд';
$db_pass = 'пароль_бд';
$db = mysqli_init();
if (! $link = mysqli_real_connect($db, $db_host, $db_user, $db_pass, $db_name, NULL, NULL, MYSQLI_CLIENT_SSL)) {
die('Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error() . "\n");
}
$res = $db->query("SHOW STATUS LIKE 'Ssl_cipher'");
while ($row = $res->fetch_array()) {
print_r($row);
}
mysqli_close($db);
?>
Результатом работы скрипта будет: Array
(
[0] => Ssl_cipher
[Variable_name] => Ssl_cipher
[1] => DHE-RSA-AES256-SHA
[Value] => DHE-RSA-AES256-SHA
)
[править] PHP 5Поддерживается в ограниченном режиме, только в случае драйвера mysqlnd или внешней библиотеки начиная с версии 5.5 (см. вывод функции phpinfo). [править] PythonНа примере использования модуля mysqlclient. Также потребуется удостоверяющий сертификат: $ wget https://www.1gb.ru/in-solve-2016.crt
$ python
Python 3.7.0 (default, Sep 14 2018, 13:53:54)
[GCC 4.9.3] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import MySQLdb
>>> ssl = {'ca': 'in-solve-2016.crt'}
>>> db = MySQLdb.connect(host='адрес_сервера_бд', user='пользователь_бд', passwd='пароль_бд', ssl=ssl)
>>> cursor = db.cursor()
>>> cursor.execute("SHOW STATUS LIKE 'Ssl_cipher'")
>>> data = cursor.fetchone()
>>> print (data);
('Ssl_cipher', 'DHE-RSA-AES256-SHA')
[править] RubyС использованием модуля mysql2 $ wget https://www.1gb.ru/in-solve-2016.crt
#!/usr/bin/env ruby
require "mysql2"
connect = Mysql2::Client.new(:host => 'адрес_сервера_бд',
:username => 'пользователь_бд',
:password => 'пароль_бд',
:database => 'имя_бд',
:sslca => 'in-solve-2016.crt')
result = connect.query("SHOW STATUS LIKE 'Ssl_cipher'")
result.each { |x| puts x }
Результат работы {"Variable_name"=>"Ssl_cipher", "Value"=>"DHE-RSA-AES256-SHA"}
|
|





