2015-01-12 12 views
24

का उपयोग कर रहा है सत्यापित करें मेरे PHP ऐप में मैं SOAP का उपयोग करके कनेक्ट करने और बात करने के लिए PHP के कर्ल और openssl का उपयोग करता हूं। अब तक, दूरस्थ सर्वर ने एसएसएल और टीएलएस का समर्थन किया लेकिन "पूडल" बग के कारण, व्यवस्थापक ने एसएसएल को अक्षम करने और केवल टीएलएस का उपयोग करने का फैसला किया। एसएसएल जनवरी के अंत तक समर्थित है।सत्यापित करें कि कर्ल TLS

मैं जोड़कर मेरी कोड बदल दिया है:

curl_setopt($objCurl, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2); 

कि सिद्धांत रूप में TLSv1.2 उपयोग करने के लिए कर्ल के लिए मजबूर करना चाहिए।

लेकिन यह सिद्धांत है - मुझे यह सत्यापित करने की आवश्यकता है कि यह वास्तव में टीएलएस का उपयोग करता है - क्या इसके लिए कोई तरीका है? एक विधि curl_getinfo() कहा जाता है, लेकिन जानकारी यह रिटर्न मेरे लिए उपयोगी नहीं है: पहले से

[url] => https://www.example.com/soap/MessagingPort 
[content_type] => text/xml;charset=utf-8 
[http_code] => 200 
[header_size] => 293 
[request_size] => 882 
[filetime] => -1 
[ssl_verify_result] => 0 
[redirect_count] => 0 
[total_time] => 0.164487 
[namelookup_time] => 3.4E-5 
[connect_time] => 3.4E-5 
[pretransfer_time] => 0.000122 
[size_upload] => 604 
[size_download] => 178 
[speed_download] => 1082 
[speed_upload] => 3672 
[download_content_length] => 178 
[upload_content_length] => 604 
[starttransfer_time] => 0.164477 
[redirect_time] => 0 

बिग धन्यवाद

+0

में टीएलएस v1.2 के लिए समर्थन आप, अगर आप कर सकते हैं नेटवर्क स्निफर के कुछ प्रकार के साथ हाथ मिलाना जांच कर सकते हैं, या सर्वर पर SSL और TLS 1.0 और 1.1 को निष्क्रिय तो यह * है * टीएलएस 1.2 के साथ कनेक्ट करने के लिए। – vcsjones

+1

स्क्रिप्ट साझा होस्टिंग पर काम करता है इसलिए इसे स्नीफ करने का कोई तरीका नहीं है।मैंने पहले ही टीवीएस का उपयोग करने के लिए अपने देव सर्वर पर अपाचे को मजबूर कर दिया है और यह काम करता है लेकिन मेरे पास उत्पादन में जांच करने का कोई तरीका नहीं है। PHP का उपयोग करने के कुछ सालों बाद आप सब कुछ लेने के लिए शुरू नहीं करते हैं। मुझे अभी भी स्क्रीन पर "आप टीएलएस का उपयोग कर रहे हैं" पाने का एक तरीका चाहिए। मुझे अपने डेबियन पर CURL_SSLVERSION_TLSv1_2 परिभाषित नहीं किया गया था और इसे लाइन को बदलना था: curl_setopt ($ objCurl, CURLOPT_SSLVERSION, 6); – kayo

उत्तर

58

लघु उत्तर

https://www.howsmyssl.com/ को कर्ल के साथ एक अनुरोध करें

<?php 
$ch = curl_init('https://www.howsmyssl.com/a/check'); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$data = curl_exec($ch); 
curl_close($ch); 

$json = json_decode($data); 
echo $json->tls_version; 

जो कि टीएलएस संस्करण को कनेक्ट करने के लिए उपयोग किया जाना चाहिए आउटपुट करना चाहिए।

खुदाई गहरा

कर्ल अंतर्निहित OpenSSL (या एनएसएस) पुस्तकालय पर निर्भर करता है सुरक्षित कनेक्शन की बातचीत करने के लिए। तो मेरा मानना ​​है कि यहां पूछने का सही सवाल यह है कि ओपनएसएसएल लाइब्रेरी क्या सक्षम है। यदि यह एक टीएलएस कनेक्शन संभाल सकता है, तो कर्ल एक टीएलएस कनेक्शन संभाल सकता है।

तो कैसे पता चलता है कि openssl (या NSS) लाइब्रेरी क्या सक्षम है?

<?php  
$curl_info = curl_version(); 
echo $curl_info['ssl_version']; 
जो तो फिर तुम जाओ और उस संस्करण के लिए रिलीज नोट्स पर एक नजर है और देखते हैं अगर यह टीएलएस समर्थन शामिल कर सकते हैं की तरह

OpenSSL/1.0.1k 

कुछ बाहर डंप करने जा रहा है

OpenSSL रिलीज़ नोट - https://www.openssl.org/news/openssl-1.0.1-notes.html

एनएसएस रिलीज़ नोट - https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_Releases

बिगाड़ने चेतावनी

  • openssl टीएलएस v1.1 और OpenSSL 1.0.1 में टीएलएस v1.2 के लिए समर्थन शामिल [14 मार्च 2012]
  • एनएसएस में टीएलएस v1.1 के लिए 3.14
  • में समर्थन शामिल था
  • एनएसएस शामिल 3.15
+0

मैंने cursmyssl पर कर्ल किया और यह 'त्रुटि लौटाता है: 1407742 ई: एसएसएल दिनचर्या: SSL23_GET_SERVER_HELLO: tlsv1 अलर्ट प्रोटोकॉल संस्करण'। यह एसएसएल v2/3 को अस्वीकार कर रहा है? https://twitter.com/jmhodges/status/420614636606468096। मैं इस मामले में क्या करूँ? –

+0

दूसरे PHP तर्क के साथ, मेरा सर्वर "एनएसएस/3.1 9 .1 बेसिक ईसीसी" इंगित करता है जो टीएलएस v1.2 के लिए समर्थन का तात्पर्य है, हालांकि पहला PHP तर्क "टीएलएस 1.0" लौटाता है? टीएलएस 1.2 का समर्थन करने के लिए मुझे क्या करने की ज़रूरत है? – panofish

+0

मेरी पिछली टिप्पणी पर ध्यान न दें ... मैंने बस निम्नलिखित कोड को php logiC# 1 में जोड़ा है और अब मुझे टीएलएस 1.2 'curl_setopt ($ ch, CURLOPT_SSLVERSION, 6);' – panofish

संबंधित मुद्दे