Название: [РЕШЕНО]Подружить WebKit с самопальными сертификатами. Отправлено: RedDog от Март 11, 2013, 16:48 Поднял вебсервер nginx на https, подсунул ему самопальные сертификаты.
Сервер настроил на проксирование вебсокета, т.е. запрос вида wss://hostName/websocket он проксирует на localhost:8086 Так же запустил Qt вебсокет сервер (рядом с nginx). Из фаерфокса соединяюсь с nginx-ом выдает запрос мол "сертификат левый, дай добро на его использование". Дал "добро" и все нормально заработало, т.е. идет по https, далее вебсокет проксируется на мой Qt сервер. Делаю это все через QWebView без всякого шаманства с сертификатами - не соединятеся. Делаю шаманство в виде игнорирования Ssl ошибок: Код: connect(ui->webView->page()->networkAccessManager(), Как можно побороть эти "левые" сертификаты? Ошибки Ssl: Цитировать "The host name did not match any of the valid hosts for this certificate" "The certificate is self-signed, and untrusted" Название: Re: Подружить WebKit с самопальными сертификатами. Отправлено: lesav от Март 11, 2013, 17:21 Получаем бесплатный SSL сертификат (http://habrahabr.ru/post/127643/)
Название: Re: Подружить WebKit с самопальными сертификатами. Отправлено: RedDog от Март 11, 2013, 17:57 Получаем бесплатный SSL сертификат (http://habrahabr.ru/post/127643/) мне не это совсем нужно, тем более домена нету в принципе.Название: Re: Подружить WebKit с самопальными сертификатами. Отправлено: lesav от Март 12, 2013, 10:45 http://www.forum.crossplatform.ru/lofiversion/index.php/t6177.html
ЭнжинИксу видимо все равно какие у него сертификаты, он коммутатор. А вот QSslSocket-у и QNetworkReply не все равно. Может так заработает ? Код
Название: Re: Подружить WebKit с самопальными сертификатами. Отправлено: RedDog от Март 12, 2013, 12:38 Не помгло, да и в принципе этот код делает тоже самое. что и вызов сигнала ignoreSslErrors().
Название: Re: Подружить WebKit с самопальными сертификатами. Отправлено: RedDog от Март 14, 2013, 08:25 Потестировал QWebView на websocket.org, а так же потестил на своем серваке по обычному HTTP.
Все везде работает, в 1-м случае работает с нормальными сертификатами, во 2-м случае они и вовсе не нужны. Пришел к выводу, что скриптовый движок QWebView не получает сигнала ignoreSslErrors() от самого QWebView и наоборот, сигнал от скрипта о наличии SSL ошибок не доходит до QWebView. Где и как это можно пофиксить? Название: Re: Подружить WebKit с самопальными сертификатами. Отправлено: RedDog от Апрель 01, 2013, 15:52 Сделал СА сертификаты, на основе них сделал сертификаты пользователя.
Сделал свой NetworkAccessManager с поздгузкой клиентских сертификатов: Код Теперь страницу грузит без ошибок SSL. Но! При выполнении скрипта на создание вебсокета в мой QNetworkAccessManagerEx не попадает. Однако, если тестить на websocket.org, то там и соединяется по секурному вебсокету и попадает в мой QNetworkAccessManagerEx при соединении. В чем может быть ошибка? Название: Re: Подружить WebKit с самопальными сертификатами. Отправлено: RedDog от Апрель 12, 2013, 09:04 Решение как всегда оказалось простым и лежало на поверхности:
Надо статически, до использования подключения, загрузить свой СА сертификат через Код При чем, насколько я понимаю, ВебКит не использует корневые сертификаты, установленные в системе, а собран с ограниченным набором своих СА, потому что добавление в OpenSSL своего СА, эффекта не дает, работает только принудительная загрузка в приложении. |