http://www.1gb.ua/wiki/index.php?title=MySQL_%D0%B8_SSL&limit=500&action=history&feed=atomMySQL и SSL - История изменений2024-03-29T14:39:00ZИстория изменений этой страницы в викиMediaWiki 1.10.1http://www.1gb.ua/wiki/index.php?title=MySQL_%D0%B8_SSL&diff=5381&oldid=prevChapay в 22:00, 29 ноября 20182018-11-29T22:00:51Z<p></p>
<table border='0' width='98%' cellpadding='0' cellspacing='4' style="background-color: white;">
<tr>
<td colspan='2' width='50%' align='center' style="background-color: white;">← Предыдущая</td>
<td colspan='2' width='50%' align='center' style="background-color: white;">Версия 22:00, 29 ноября 2018</td>
</tr>
<tr><td colspan="2" align="left"><strong>Строка 1:</strong></td>
<td colspan="2" align="left"><strong>Строка 1:</strong></td></tr>
<tr><td>-</td><td style="background: #ffa; font-size: smaller;">Начиная с версии MySQL 5.7, хостинг <del style="color: red; font-weight: bold; text-decoration: none;">1Гб</del>.<del style="color: red; font-weight: bold; text-decoration: none;">ру </del>поддерживает защищенное подключение к базам MySQL с использованием протокола SSL.</td><td>+</td><td style="background: #cfc; font-size: smaller;">Начиная с версии MySQL 5.7, хостинг <ins style="color: red; font-weight: bold; text-decoration: none;">1gb</ins>.<ins style="color: red; font-weight: bold; text-decoration: none;">ua </ins>поддерживает защищенное подключение к базам MySQL с использованием протокола SSL.</td></tr>
<tr><td> </td><td style="background: #eee; font-size: smaller;"></td><td> </td><td style="background: #eee; font-size: smaller;"></td></tr>
<tr><td> </td><td style="background: #eee; font-size: smaller;">== Для чего это нужно ==</td><td> </td><td style="background: #eee; font-size: smaller;">== Для чего это нужно ==</td></tr>
<tr><td colspan="2" align="left"><strong>Строка 6:</strong></td>
<td colspan="2" align="left"><strong>Строка 6:</strong></td></tr>
<tr><td> </td><td style="background: #eee; font-size: smaller;"><p>В случае установления SSL соединения между MySQL клиентом и сервером, данные передаются по каналу в зашифрованным виде, что исключает их свободное чтение при перехвате трафика.</p></td><td> </td><td style="background: #eee; font-size: smaller;"><p>В случае установления SSL соединения между MySQL клиентом и сервером, данные передаются по каналу в зашифрованным виде, что исключает их свободное чтение при перехвате трафика.</p></td></tr>
<tr><td> </td><td style="background: #eee; font-size: smaller;"></td><td> </td><td style="background: #eee; font-size: smaller;"></td></tr>
<tr><td>-</td><td style="background: #ffa; font-size: smaller;"><p>Данная возможность будет полезна, если вы используете базы данных хостинга <del style="color: red; font-weight: bold; text-decoration: none;">1Гб</del>.<del style="color: red; font-weight: bold; text-decoration: none;">ру </del>с удаленных клиентов через публичные сети, то есть с клиентов, размещенных не на площадке хостинга. Типичные примеры использования: с сайта на другом хостинге, из программы запущенной дома или в офисе и т.п.</p></td><td>+</td><td style="background: #cfc; font-size: smaller;"><p>Данная возможность будет полезна, если вы используете базы данных хостинга <ins style="color: red; font-weight: bold; text-decoration: none;">1gb</ins>.<ins style="color: red; font-weight: bold; text-decoration: none;">ua </ins>с удаленных клиентов через публичные сети, то есть с клиентов, размещенных не на площадке хостинга. Типичные примеры использования: с сайта на другом хостинге, из программы запущенной дома или в офисе и т.п.</p></td></tr>
<tr><td> </td><td style="background: #eee; font-size: smaller;"></td><td> </td><td style="background: #eee; font-size: smaller;"></td></tr>
<tr><td>-</td><td style="background: #ffa; font-size: smaller;"><p>В том случае если сайт и база данных размещены в <del style="color: red; font-weight: bold; text-decoration: none;">1Гб</del>.<del style="color: red; font-weight: bold; text-decoration: none;">ру</del>, то использование SSL нецелесообразно, так как информация не передается по публичным каналам, что исключает ее перехват.</p></td><td>+</td><td style="background: #cfc; font-size: smaller;"><p>В том случае если сайт и база данных размещены в <ins style="color: red; font-weight: bold; text-decoration: none;">1gb</ins>.<ins style="color: red; font-weight: bold; text-decoration: none;">ua</ins>, то использование SSL нецелесообразно, так как информация не передается по публичным каналам, что исключает ее перехват.</p></td></tr>
<tr><td> </td><td style="background: #eee; font-size: smaller;"></td><td> </td><td style="background: #eee; font-size: smaller;"></td></tr>
<tr><td> </td><td style="background: #eee; font-size: smaller;">== Как воспользоваться ==</td><td> </td><td style="background: #eee; font-size: smaller;">== Как воспользоваться ==</td></tr>
<tr><td colspan="2" align="left"><strong>Строка 26:</strong></td>
<td colspan="2" align="left"><strong>Строка 26:</strong></td></tr>
<tr><td> </td><td style="background: #eee; font-size: smaller;"> '''SSL: Cipher in use is DHE-RSA-AES256-SHA'''</td><td> </td><td style="background: #eee; font-size: smaller;"> '''SSL: Cipher in use is DHE-RSA-AES256-SHA'''</td></tr>
<tr><td> </td><td style="background: #eee; font-size: smaller;"></td><td> </td><td style="background: #eee; font-size: smaller;"></td></tr>
<tr><td>-</td><td style="background: #ffa; font-size: smaller;">Если у вас mysql-клиент младше версии 5.7.3, то для подключения потребуется специальный сертификат для проверки подлинности, скачать вы можете его со страницы [<del style="color: red; font-weight: bold; text-decoration: none;">https</del>://www.1gb.<del style="color: red; font-weight: bold; text-decoration: none;">ru</del>/<del style="color: red; font-weight: bold; text-decoration: none;">in-solve-2016</del>.crt Корневой сертификат безопасности <del style="color: red; font-weight: bold; text-decoration: none;">1Gb</del>.<del style="color: red; font-weight: bold; text-decoration: none;">ru</del>], например</td><td>+</td><td style="background: #cfc; font-size: smaller;">Если у вас mysql-клиент младше версии 5.7.3, то для подключения потребуется специальный сертификат для проверки подлинности, скачать вы можете его со страницы [<ins style="color: red; font-weight: bold; text-decoration: none;">http</ins>://www.1gb.<ins style="color: red; font-weight: bold; text-decoration: none;">ua</ins>/<ins style="color: red; font-weight: bold; text-decoration: none;">1gbuarootCA</ins>.crt Корневой сертификат безопасности <ins style="color: red; font-weight: bold; text-decoration: none;">1gb</ins>.<ins style="color: red; font-weight: bold; text-decoration: none;">ua</ins>], например</td></tr>
<tr><td>-</td><td style="background: #ffa; font-size: smaller;"> $ wget <nowiki>https://www.1gb.<del style="color: red; font-weight: bold; text-decoration: none;">ru</del>/<del style="color: red; font-weight: bold; text-decoration: none;">in-solve-2016</del>.crt</nowiki></td><td>+</td><td style="background: #cfc; font-size: smaller;"> $ wget <nowiki>https://www.1gb.<ins style="color: red; font-weight: bold; text-decoration: none;">ua</ins>/<ins style="color: red; font-weight: bold; text-decoration: none;">1gbuarootCA</ins>.crt</nowiki></td></tr>
<tr><td>-</td><td style="background: #ffa; font-size: smaller;"> $ mysql -s --ssl-ca=<del style="color: red; font-weight: bold; text-decoration: none;">in-solve-2016</del>.crt -hадрес_сервера_mysql -uимя_пользователя имя_базы -p</td><td>+</td><td style="background: #cfc; font-size: smaller;"> $ mysql -s --ssl-ca=<ins style="color: red; font-weight: bold; text-decoration: none;">1gbuarootCA</ins>.crt -hадрес_сервера_mysql -uимя_пользователя имя_базы -p</td></tr>
<tr><td> </td><td style="background: #eee; font-size: smaller;"> mysql> \s</td><td> </td><td style="background: #eee; font-size: smaller;"> mysql> \s</td></tr>
<tr><td> </td><td style="background: #eee; font-size: smaller;"> --------------</td><td> </td><td style="background: #eee; font-size: smaller;"> --------------</td></tr>
<tr><td colspan="2" align="left"><strong>Строка 71:</strong></td>
<td colspan="2" align="left"><strong>Строка 71:</strong></td></tr>
<tr><td> </td><td style="background: #eee; font-size: smaller;">==== Python ====</td><td> </td><td style="background: #eee; font-size: smaller;">==== Python ====</td></tr>
<tr><td> </td><td style="background: #eee; font-size: smaller;">На примере использования модуля [https://pypi.org/project/mysqlclient/ mysqlclient]. Также потребуется удостоверяющий сертификат:</td><td> </td><td style="background: #eee; font-size: smaller;">На примере использования модуля [https://pypi.org/project/mysqlclient/ mysqlclient]. Также потребуется удостоверяющий сертификат:</td></tr>
<tr><td>-</td><td style="background: #ffa; font-size: smaller;"> $ wget <nowiki>https://www.1gb.<del style="color: red; font-weight: bold; text-decoration: none;">ru</del>/<del style="color: red; font-weight: bold; text-decoration: none;">in-solve-2016</del>.crt</nowiki></td><td>+</td><td style="background: #cfc; font-size: smaller;"> $ wget <nowiki>https://www.1gb.<ins style="color: red; font-weight: bold; text-decoration: none;">ua</ins>/<ins style="color: red; font-weight: bold; text-decoration: none;">1gbuarootCA</ins>.crt</nowiki></td></tr>
<tr><td> </td><td style="background: #eee; font-size: smaller;"> $ python</td><td> </td><td style="background: #eee; font-size: smaller;"> $ python</td></tr>
<tr><td> </td><td style="background: #eee; font-size: smaller;"> Python 3.7.0 (default, Sep 14 2018, 13:53:54)</td><td> </td><td style="background: #eee; font-size: smaller;"> Python 3.7.0 (default, Sep 14 2018, 13:53:54)</td></tr>
<tr><td colspan="2" align="left"><strong>Строка 88:</strong></td>
<td colspan="2" align="left"><strong>Строка 88:</strong></td></tr>
<tr><td> </td><td style="background: #eee; font-size: smaller;">С использованием модуля [https://github.com/brianmario/mysql2 mysql2]</td><td> </td><td style="background: #eee; font-size: smaller;">С использованием модуля [https://github.com/brianmario/mysql2 mysql2]</td></tr>
<tr><td> </td><td style="background: #eee; font-size: smaller;"></td><td> </td><td style="background: #eee; font-size: smaller;"></td></tr>
<tr><td>-</td><td style="background: #ffa; font-size: smaller;"> $ wget <nowiki>https://www.1gb.<del style="color: red; font-weight: bold; text-decoration: none;">ru</del>/<del style="color: red; font-weight: bold; text-decoration: none;">in-solve-2016</del>.crt</nowiki></td><td>+</td><td style="background: #cfc; font-size: smaller;"> $ wget <nowiki>https://www.1gb.<ins style="color: red; font-weight: bold; text-decoration: none;">ua</ins>/<ins style="color: red; font-weight: bold; text-decoration: none;">1gbuarootCA</ins>.crt</nowiki></td></tr>
<tr><td> </td><td style="background: #eee; font-size: smaller;"> #!/usr/bin/env ruby</td><td> </td><td style="background: #eee; font-size: smaller;"> #!/usr/bin/env ruby</td></tr>
<tr><td> </td><td style="background: #eee; font-size: smaller;"> require "mysql2"</td><td> </td><td style="background: #eee; font-size: smaller;"> require "mysql2"</td></tr>
</table>Chapayhttp://www.1gb.ua/wiki/index.php?title=MySQL_%D0%B8_SSL&diff=5380&oldid=prevRenton: /* Ruby */2018-11-22T16:26:14Z<p><span class="autocomment">Ruby</span></p>
<p><b>Новая статья</b></p><div>Начиная с версии MySQL 5.7, хостинг 1Гб.ру поддерживает защищенное подключение к базам MySQL с использованием протокола SSL.<br />
<br />
== Для чего это нужно ==<br />
<p>MySQL клиент (веб-сайт) и сервер баз данных MySQL обмениваются друг с другом информацией по открытому каналу связи. Это значит, что если злоумышленник имеет доступ к прослушке канала, то данные, которые хранятся или записываются сайтом в базу, могут стать доступными для перехвата, так как передаются открытым текстом.</p><br />
<br />
<p>В случае установления SSL соединения между MySQL клиентом и сервером, данные передаются по каналу в зашифрованным виде, что исключает их свободное чтение при перехвате трафика.</p><br />
<br />
<p>Данная возможность будет полезна, если вы используете базы данных хостинга 1Гб.ру с удаленных клиентов через публичные сети, то есть с клиентов, размещенных не на площадке хостинга. Типичные примеры использования: с сайта на другом хостинге, из программы запущенной дома или в офисе и т.п.</p><br />
<br />
<p>В том случае если сайт и база данных размещены в 1Гб.ру, то использование SSL нецелесообразно, так как информация не передается по публичным каналам, что исключает ее перехват.</p><br />
<br />
== Как воспользоваться ==<br />
<br />
Проверьте, что ваша база данных создана на сервере '''MySQL 5.7''', в личном кабинете <span style="display: inline-block; margin: 0 .1em; padding: .1em .6em; font-family: Arial; font-size: 11px; line-height: 1.4; color: maroon; text-shadow: 0 1px 0 #FFF; background-color: #e1e3e5; border: 1px solid #adb3b9; border-radius: 3px; box-shadow: 0 1px 0 rgba(12,13,14,0.2),0 0 0 2px #FFF inset; white-space: nowrap;">начало</span> -> <span style="display: inline-block; margin: 0 .1em; padding: .1em .6em; font-family: Arial; font-size: 11px; line-height: 1.4; color: maroon; text-shadow: 0 1px 0 #FFF; background-color: #e1e3e5; border: 1px solid #adb3b9; border-radius: 3px; box-shadow: 0 1px 0 rgba(12,13,14,0.2),0 0 0 2px #FFF inset; white-space: nowrap;">базы данных</span><br />
[[Изображение:Mysql_ssl.png|680px|thumb|left|База данных в личном кабинете 1Gb.ru]]<br clear="both" /><br />
Если база данных находится на другом сервере, создайте новую, выбрав версию MySQL 5.7 или выше.<br />
<br />
=== Консольный клиент mysql ===<br />
Современные MySQL клиенты умеют автоматически устанавливать SSL соединение, если видят, что данная возможность присутствует на сервере. Например, подключение из консольного клиента mysql:<br />
$ mysql -s -hадрес_сервера_mysql -uимя_пользователя имя_базы -p<br />
mysql> \s<br />
--------------<br />
mysql Ver 14.14 Distrib 5.7.24, for Linux (x86_64) using EditLine wrapper<br />
<br />
Connection id: 374517<br />
'''SSL: Cipher in use is DHE-RSA-AES256-SHA'''<br />
<br />
Если у вас mysql-клиент младше версии 5.7.3, то для подключения потребуется специальный сертификат для проверки подлинности, скачать вы можете его со страницы [https://www.1gb.ru/in-solve-2016.crt Корневой сертификат безопасности 1Gb.ru], например<br />
$ wget <nowiki>https://www.1gb.ru/in-solve-2016.crt</nowiki><br />
$ mysql -s --ssl-ca=in-solve-2016.crt -hадрес_сервера_mysql -uимя_пользователя имя_базы -p<br />
mysql> \s<br />
--------------<br />
mysql Ver 14.14 Distrib 5.6.36, for Linux (x86_64) using EditLine wrapper<br />
<br />
Connection id: 377004<br />
'''SSL: Cipher in use is DHE-RSA-AES256-SHA'''<br />
<br />
=== Подключение из PHP ===<br />
==== PHP 7 и выше ====<br />
<?php<br />
<br />
$db_host = 'адрес_сервера_бд';<br />
$db_user = 'имя_пользователя_бд';<br />
$db_name = 'имя_бд';<br />
$db_pass = 'пароль_бд';<br />
<br />
$db = mysqli_init();<br />
if (! $link = mysqli_real_connect($db, $db_host, $db_user, $db_pass, $db_name, NULL, NULL, MYSQLI_CLIENT_SSL)) {<br />
die('Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error() . "\n");<br />
}<br />
<br />
$res = $db->query("SHOW STATUS LIKE 'Ssl_cipher'");<br />
while ($row = $res->fetch_array()) {<br />
print_r($row);<br />
}<br />
<br />
mysqli_close($db);<br />
<br />
?><br />
Результатом работы скрипта будет:<br />
Array<br />
(<br />
[0] => Ssl_cipher<br />
[Variable_name] => Ssl_cipher<br />
[1] => '''DHE-RSA-AES256-SHA'''<br />
[Value] => '''DHE-RSA-AES256-SHA'''<br />
)<br />
==== PHP 5 ====<br />
Поддерживается в ограниченном режиме, только в случае драйвера mysqlnd или внешней библиотеки начиная с версии 5.5 (см. вывод функции phpinfo).<br />
<br />
==== Python ====<br />
На примере использования модуля [https://pypi.org/project/mysqlclient/ mysqlclient]. Также потребуется удостоверяющий сертификат:<br />
$ wget <nowiki>https://www.1gb.ru/in-solve-2016.crt</nowiki><br />
$ python<br />
Python 3.7.0 (default, Sep 14 2018, 13:53:54)<br />
[GCC 4.9.3] on linux<br />
Type "help", "copyright", "credits" or "license" for more information.<br />
>>> import MySQLdb<br />
>>> ssl = {'ca': 'in-solve-2016.crt'}<br />
>>> db = MySQLdb.connect(host='адрес_сервера_бд', user='пользователь_бд', passwd='пароль_бд', ssl=ssl)<br />
>>> cursor = db.cursor()<br />
>>> cursor.execute("SHOW STATUS LIKE 'Ssl_cipher'")<br />
>>> data = cursor.fetchone()<br />
>>> print (data);<br />
('Ssl_cipher', 'DHE-RSA-AES256-SHA')<br />
<br />
==== Ruby ====<br />
С использованием модуля [https://github.com/brianmario/mysql2 mysql2]<br />
<br />
$ wget <nowiki>https://www.1gb.ru/in-solve-2016.crt</nowiki><br />
#!/usr/bin/env ruby<br />
require "mysql2"<br />
<br />
connect = Mysql2::Client.new(:host => 'адрес_сервера_бд',<br />
:username => 'пользователь_бд',<br />
:password => 'пароль_бд',<br />
:database => 'имя_бд',<br />
:sslca => 'in-solve-2016.crt')<br />
result = connect.query("SHOW STATUS LIKE 'Ssl_cipher'")<br />
result.each { |x| puts x }<br />
Результат работы<br />
{"Variable_name"=>"Ssl_cipher", "Value"=>"DHE-RSA-AES256-SHA"}<br />
<br />
[[Категория:Программирование]]<br />
[[Категория:MySQL]]<br />
[[Категория:PHP]]<br />
[[Категория:Python]]<br />
[[Категория:Ruby]]</div>Renton