2012-11-28 14 views
11

में एसएसएल हैंडशेक विफल रहा है मैं एसएसएल का उपयोग करने वाली किसी वेब सेवा से कनेक्शन बनाने की कोशिश कर रहा हूं। मैं क्यूएनएक्स आईडीई क्षणों के साथ सी ++ में ब्लैकबेरी 10 के साथ काम कर रहा हूं।बीएस 10 क्यूएनएक्स मोमेंटिक्स आईडीई

यूआरएल:: कनेक्शन है कि मैं क्या करने की कोशिश कर रहा हूँ इस प्रकार है "https: // movilapi ...."

कोड:

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); 

मैं हमेशा एक ही हो रही है कोई फर्क नहीं पड़ता कि मैं किस सेवा तक पहुंचने की कोशिश करता हूं। प्रतिक्रिया है: एसएसएल हाथ मिलाना विफल रही

Wireshark जानकारी:

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 

एन्क्रिप्टेड चेतावनी सामग्री प्रकार 21

सर्वर ciphersuites ग्राहक की समर्थित ciphersuites की सूची में है।

मैं कनेक्शन बनाने के लिए निम्न lib उपयोग कर रहा हूँ: QtNetwork/qnetworkreply.h

मुझे आशा है कि इस नए जानकारी प्रश्न की गुणवत्ता में सुधार।

कृपया मदद करें, मैं सफलता के बिना घंटों की खोज कर रहा हूं।

+0

ने समाप्ति प्रमाणपत्र का कोई भी मौका? –

+0

प्रमाणपत्र समाप्त नहीं हुआ है। धन्यवाद @RodrigoHahn – mariomunera

उत्तर

2

इस विशेष मुद्दे के बारे में कुछ आरआईएम व्यक्तिगत के संपर्क में आने के बाद हमने पाया कि टीएलएस/एसएसएल सर्वर कुछ एक्सटेंशन के असहिष्णु है, इसलिए निम्नलिखित क्यूटी कोड एक्सटेंशन के संचरण को अक्षम करने के लिए कनेक्शन को सफलतापूर्वक https के माध्यम से बनाया गया था :

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

मैं अनुसंधान के अनुप्रयोग विकास विभाग का ध्यान और इस मुद्दे पर निवेश किया जब तक हम अंत में जाने के लिए सही तरीके से मिल के प्रयास के लिए इन मोशन का विशेष उल्लेख करना चाहते हैं।

नीचे मामले में पूरे कनेक्शन कोड है कि किसी को भी इस जरूरत का सामना करना पड़ रहा है:

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

यह बहुत उपयोगी कोड है, लेकिन मेरे पास एक समस्या है। यह मेरे लिए, एम्यूलेटर और असली डिवाइस में भी बहुत धीमा है। क्या आपको पता है कि यह क्या हो सकता है? – LILkillaBEE

0

क्या आपका सर्वर टीएलएस v.1 का समर्थन करता है? शायद यह केवल SSLv2-3, या TLS v1.1-1.2 के लिए कॉन्फ़िगर किया गया है अन्य संभावित तरीका यह है कि क्लाइंट और सर्वर सिफरर्स द्वारा साझा नहीं किया गया है। वायरसर्क चलाएं, यह हैंडशेक पैकेट एक्सचेंज दिखाएगा। वहां आप समर्थित ciphersuites, एसएसएल/टीएलएस संस्करण और कुछ अन्य जानकारी देख सकते हैं।

+0

हाय। मैं सिर्फ Wireshark के साथ जांचता हूं और सर्वर ciphersuite ग्राहकों के भीतर ciphersuites समर्थित सूची के भीतर है। मैं अभी भी कनेक्ट करने या समस्या का पता लगाने में सक्षम नहीं हूं। वायरशर्क के लिए धन्यवाद, मुझे यह भी पता है कि कनेक्शन एन्क्रिप्टेड अलर्ट प्रकार 21 के साथ समाप्त होता है। मैं वायरशर्क जानकारी जोड़ने के लिए प्रश्न को संपादित करने जा रहा हूं। – mariomunera