Russian Qt Forum
Ноябрь 24, 2024, 02:21 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: SSL в QDataBase  (Прочитано 6339 раз)
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?
Записан
WW
Гость
« Ответ #1 : Январь 26, 2008, 16:53 »

Ну, во первых: Qt должна быть собрана с поддержкой SSL, во вторых - сервер должен быть сконфигурирован для поддержки SSL.
Записан
DpoHro
Гость
« Ответ #2 : Январь 26, 2008, 18:46 »

Ну, во первых: Qt должна быть собрана с поддержкой SSL, во вторых - сервер должен быть сконфигурирован для поддержки SSL.
Хм... то есть если собрать без SSL то работать флаг этот не будет?
Верно ли я понял, что ты именно с этим сталкивался?
Странно то для меня это потому, что как то это должно работать если я собрал с поддержкой SQL, как то странно SQL включил, а работает неполностью...
Записан
ритт
Гость
« Ответ #3 : Январь 26, 2008, 19:39 »

и знаки препинания наличествуют, и буквы знакомые, а смысл последнего предложения для меня непостижим...
Записан
DpoHro
Гость
« Ответ #4 : Январь 26, 2008, 19:49 »

Действительно  =)

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

Но это лирика.
Мне интересно знать:
1) через 2,5 часа компиляции с поддержкой SSL я получу возможность установить SSL соединение при условии, что сервер правильно сконфигурирован?
2) какие проблемы могут возникнуть при компиляции этого дела в некоммерческой Qt4.3.2?
Записан
WW
Гость
« Ответ #5 : Январь 26, 2008, 21:54 »

1) да.
2) никаких.
Записан
DpoHro
Гость
« Ответ #6 : Февраль 04, 2008, 18:46 »

Ясно, QT пересобрал, но вот никак не могу понять какой порядок действий по настройке самого сервера, да и mySQL клиент я так понимаю должен поддерживать SSL и для этого похоже его нужно перекомпилировать...

Жесть...

Записан
Anhel
Гость
« Ответ #7 : Апрель 11, 2008, 15:50 »

Перекомпилиовать придётся, это да.

У меня такой вопрос, продолжающий тему:
Сервер mysqld можно собрать, а потом запустить с поддержкой SSL. Для этого надо ему указать ключи --ssl-ca=сертификат или --ssl-cert=... А как при настройке соединения посредством QSqlDatabase указать используемый для соединения сертификат? Перекопал все доки, перекопал поисковики - ничего не нашёл. Мож, я чего-то не особо понимаю?  Непонимающий
Помогите, кто имел опыт доступа к MySQL из QSqlDatabase через SSL.
Записан
Anhel
Гость
« Ответ #8 : Апрель 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_о
Записан
Vitto74
Гость
« Ответ #9 : Октябрь 30, 2011, 13:35 »

Может он прицепился используя уже созданное ранее соединения с базой? У них же по умолчанию одинаковые имена.
По теме: у кого-нибудь этот финт ушами получился?
Записан
Vitto74
Гость
« Ответ #10 : Октябрь 30, 2011, 15:32 »

Хотя нет. Сертификат нужен только для проверки подлинности сервера. Протокол SSL предусматривает создание зашифрованного соединения без всяких сертификатов.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.068 секунд. Запросов: 21.