Russian Qt Forum

Qt => Базы данных => Тема начата: DpoHro от Январь 26, 2008, 13:20



Название: SSL в QDataBase
Отправлено: DpoHro от Январь 26, 2008, 13:20
Задача состоит в защите соединения.

Вот так устанавливая соединение, шифрации не происходит. И пакеты летят открыто.

Код:
	db = QSqlDatabase::addDatabase("QMYSQL", "CONN");
db.setDatabaseName("wwwinsurecalcru");
db.setHostName("localhost");
db.setUserName("root");
db.setPassword("");
db.setConnectOptions("CLIENT_SSL=1;CLIENT_IGNORE_SPACE=1");

Наверняка есть среди Вас уже то, кто уже выяснил в чем тут дело?

И вообще какая подготовительная работа должна быть проведена перед использованием SSL?


Название: Re: SSL в QDataBase
Отправлено: WW от Январь 26, 2008, 16:53
Ну, во первых: Qt должна быть собрана с поддержкой SSL, во вторых - сервер должен быть сконфигурирован для поддержки SSL.


Название: Re: SSL в QDataBase
Отправлено: DpoHro от Январь 26, 2008, 18:46
Ну, во первых: Qt должна быть собрана с поддержкой SSL, во вторых - сервер должен быть сконфигурирован для поддержки SSL.
Хм... то есть если собрать без SSL то работать флаг этот не будет?
Верно ли я понял, что ты именно с этим сталкивался?
Странно то для меня это потому, что как то это должно работать если я собрал с поддержкой SQL, как то странно SQL включил, а работает неполностью...


Название: Re: SSL в QDataBase
Отправлено: ритт от Январь 26, 2008, 19:39
и знаки препинания наличествуют, и буквы знакомые, а смысл последнего предложения для меня непостижим...


Название: Re: SSL в QDataBase
Отправлено: DpoHro от Январь 26, 2008, 19:49
Действительно  =)

Смысл таков: Я включаю поддержку sql при компиляции, но в итоге она работает не полностью, то есть не могу соединиться с БД в защищенном режиме.

Но это лирика.
Мне интересно знать:
1) через 2,5 часа компиляции с поддержкой SSL я получу возможность установить SSL соединение при условии, что сервер правильно сконфигурирован?
2) какие проблемы могут возникнуть при компиляции этого дела в некоммерческой Qt4.3.2?


Название: Re: SSL в QDataBase
Отправлено: WW от Январь 26, 2008, 21:54
1) да.
2) никаких.


Название: Re: SSL в QDataBase
Отправлено: DpoHro от Февраль 04, 2008, 18:46
Ясно, QT пересобрал, но вот никак не могу понять какой порядок действий по настройке самого сервера, да и mySQL клиент я так понимаю должен поддерживать SSL и для этого похоже его нужно перекомпилировать...

Жесть...



Название: Re: SSL в QDataBase
Отправлено: Anhel от Апрель 11, 2008, 15:50
Перекомпилиовать придётся, это да.

У меня такой вопрос, продолжающий тему:
Сервер mysqld можно собрать, а потом запустить с поддержкой SSL. Для этого надо ему указать ключи --ssl-ca=сертификат или --ssl-cert=... А как при настройке соединения посредством QSqlDatabase указать используемый для соединения сертификат? Перекопал все доки, перекопал поисковики - ничего не нашёл. Мож, я чего-то не особо понимаю?  ???
Помогите, кто имел опыт доступа к MySQL из QSqlDatabase через SSL.


Название: Re: SSL в QDataBase
Отправлено: Anhel от Апрель 21, 2008, 12:30
Хочу поделиться опытом немного.
Собрать mysqld с поддержкой SSL - эт не сложно (./configure --with-yassl или ./configure --with-openssl="...").
Далее: с помощью чего угодно (например, OpenSSL) генерим:
1. Самоподписанный (Self-signed) корневой сертификат (Root CA certificate). Этот файл указываем в параметре --ssl-ca=...
2. Серверный сертификат на базе этого же CA-сертификата. Сертификат - отдельно, ключ - отдельно. оба этих файла указываем в параметрах --ssl-cert=сертификат и --ssl-key=закрытый ключ к нему. Внимание: ключ должен быть незашифрованным (не требующим пароля, в случае с OpenSSL не забываем указать -nodes при генерации ключа).
3. Если пользователь в базе указан с требованием REQUIRE SSL, тогда клиенту достаточно копии открытого ключа CA-сертификата, например:
Код:
$ openssl rsa -in CAkey.pem -out public_key.pem -pubout
Этот ключ копируется клиенту и указывается в качестве параметра ssl-key (например, mysql --ssl-key=public_key.pem --user=...). Для большинства случаев в моей практике этого хватает.

Теперь об интересном: задал параметры подключения:
Код:
db.setConnectOptions("CLIENT_SSL=1");
...и оно прицепилось на сервер с учётной записью, для которой стояло требование REQUIRE SSL. Сцуко мистика... 0_о Ключ я не указывал, ибо некуда... Вопрос: как ОНО это делает?? 0_о


Название: Re: SSL в QDataBase
Отправлено: Vitto74 от Октябрь 30, 2011, 13:35
Может он прицепился используя уже созданное ранее соединения с базой? У них же по умолчанию одинаковые имена.
По теме: у кого-нибудь этот финт ушами получился?


Название: Re: SSL в QDataBase
Отправлено: Vitto74 от Октябрь 30, 2011, 15:32
Хотя нет. Сертификат нужен только для проверки подлинности сервера. Протокол SSL предусматривает создание зашифрованного соединения без всяких сертификатов.