2012-11-28 14 views
11

SSL kullanan bir web servisiyle bağlantı kurmaya çalışıyorum. QNX IDE Momentics ile C++'da Blackberry 10 ile çalışıyorum.SSL Handshake BB10'da Başarısız QNX Momentics IDE

URL: şu şekildedir: Ben bunu yapmaya çalışıyorum o bağlantıdır "https: // movilapi ...."

Kodu:

networkAccessManager = new QNetworkAccessManager(this); 
    bool res = connect(networkAccessManager, SIGNAL(finished(QNetworkReply*)), 
      this, SLOT(requestFinished(QNetworkReply*))); 

    Q_ASSERT(res); 
    Q_UNUSED(res); 

    QNetworkRequest request = QNetworkRequest(QUrl(url)); 
    request.setRawHeader("User-Agent", "bb-phone/20120910"); 
    request.setRawHeader("Content-Type", "application/json"); 
    request.setRawHeader("Content-Length", postDataSize); 

    QSslConfiguration sslConfig = request.sslConfiguration(); 
    sslConfig.setPeerVerifyMode(QSslSocket::VerifyNone); 
    sslConfig.setProtocol(QSsl::TlsV1); 
    request.setSslConfiguration(sslConfig); 

     networkAccessManager->post(request, outData); 

Hep aynı alıyorum hata hangi hizmete erişmeye çalışıyorum farketmez. yanıttır:

Protocol Length Info 
SSLv2 157 Client Hello 
TLSv1 1202 Server Hello, Certificate, Server Hello Done 
TLSv1 449 Client Key Exchange 
TLSv1 60  Change Cipher Spec 
TLSv1 91  Encrypted Handshake Message 
TLSv1 97  Change Cipher Spec, Encrypted Handshake Message 
TLSv1 605 Application Data 
TLSv1 280 Application Data 
TLSv1 277 Application Data 
TLSv1 121 Application Data 
TLSv1 92  Application Data 
TLSv1 297 Application Data, Application Data, Application Data, Application Data 
TLSv1 77  Encrypted Alert 

Şifreli Uyarı İçerik türü 21

sunucuları şifre setleri müşterinin desteklenen şifre setleri listesinde olduğu: SSL anlaşması

Wireshark Bilgisi başarısız oldu.

Ben bağlantı kurmak için aşağıdaki lib kullanıyorum: QtNetwork/qnetworkreply.h

Bu yeni bilgi soruya kalitesini artırmak umuyoruz.

Lütfen yardım edin, saatlerce başarı olmadan arama yapıyorum.

+0

süresi dolmuş bir sertifikanın Herhangi şans? –

+0

Sertifika süresi dolmamış. Teşekkürler @RodrigoHahn – mariomunera

cevap

2

Bu sorunla ilgili birkaç RIM kişisiyle bağlantı kurduktan sonra, TLS/SSL sunucusunun belirli uzantılara toleranssız olduğunu gördük. Bu nedenle, uzantıların iletimini devre dışı bırakmak için aşağıdaki Qt koduyla bağlantı https yoluyla başarıyla gerçekleştirildi : Ben dikkat ve nihayet gitmek için doğru yolu oluncaya kadar bu konuda yatırım çaba için Motion Research In Uygulama Geliştirme departmanı özel bir söz etmek istiyorum

QSslConfiguration cfg(request.sslConfiguration()); 
cfg.setSslOption(QSsl::SslOptionDisableSessionTickets, true); 
request.setSslConfiguration(cfg); 

.

Aşağıda durumda tüm bağlantı kodu herkes bu ihtiyacı karşı karşıya olduğunu:

networkAccessManager = new QNetworkAccessManager(this); 
bool res = connect(networkAccessManager, SIGNAL(finished(QNetworkReply*)), 
      this, SLOT(requestFinished(QNetworkReply*)));  
QNetworkRequest request = QNetworkRequest(QUrl(url)); 
request.setRawHeader("User-Agent", "BB_PHONE/20120926"); 
request.setRawHeader("Content-Type", "application/json"); 
request.setRawHeader("Content-Length", postDataSize); 

QSslConfiguration sslConfig = request.sslConfiguration(); 
sslConfig.setPeerVerifyMode(QSslSocket::VerifyNone); 
sslConfig.setPeerVerifyDepth(1); 
sslConfig.setProtocol(QSsl::TlsV1); 
sslConfig.setSslOption(QSsl::SslOptionDisableSessionTickets, true); 

request.setSslConfiguration(sslConfig); 
networkAccessManager->post(request, outData); 
+0

Bu çok yararlı bir koddur, ancak bir sorunum var. Benim için çok yavaş, emülatörde ve gerçek cihazda. Bunun ne olabileceği hakkında bir fikrin var mı? – LILkillaBEE

0

Sunucunuz TLS v.1'i destekliyor mu? Belki de yalnızca SSLv2-3 veya TLS v1.1-1.2 için yapılandırılmıştır. Diğer olası bir yol, istemci ve sunucu ciphersuites tarafından paylaşılmamasıdır. Wireshark'ı çalıştırın, el sıkışma paketleri alışverişini gösterecektir. Orada desteklenen ciphersuites, SSL/TLS sürümlerini ve diğer bazı bilgileri görebilirsiniz.

+0

Merhaba. Ben sadece Wireshark ve sunucu ciphersuite ile ciphersuites destekli müşteri listesinde olduğunu kontrol edin. Hala sorunun ne olduğunu anlayamıyorum. Wireshark'a teşekkürler, bağlantının bir Şifreli Uyarım 21 ile bittiğini de biliyorum. Ben wireshark bilgisini eklemek için soruyu düzenleyeceğim. – mariomunera