2008-12-03 19 views
9

मैं जानना चाहता हूं कि एलडब्ल्यूपी :: UserAgent को एक एकल, जाने-माने सर्वर के लिए एक कालबाह्य SSL प्रमाणपत्र स्वीकार करने के लिए मजबूर करना संभव है या नहीं। यह मुद्दा स्क्विड प्रॉक्सी द्वारा थोड़ा जटिल है।क्या मैं एलडब्ल्यूपी :: UserAgent को एक कालबाह्य SSL प्रमाणपत्र स्वीकार करने के लिए मजबूर कर सकता हूं?

use warnings; 
use strict; 
use Carp; 
use LWP::UserAgent; 
use LWP::Debug qw(+); 
use HTTP::Cookies; 

my $proxy = 'http://proxy.example.net:8118'; 
my $cookie_jar = HTTP::Cookies->new(file => 'cookies.tmp'); 
my $agent = LWP::UserAgent->new; 
$agent->proxy([ 'http' ], $proxy); 
$agent->cookie_jar($cookie_jar); 

$ENV{HTTPS_PROXY} = $proxy; 
$ENV{HTTPS_DEBUG} = 1; 
$ENV{HTTPS_VERSION} = 3; 
$ENV{HTTPS_CA_DIR} = '/etc/ssl/certs'; 
$ENV{HTTPS_CA_FILE} = '/etc/ssl/certs/ca-certificates.crt'; 

$agent->get('https://www.example.com/'); 

exit; 

सौभाग्य से इस मुद्दे को अंतत: दूरस्थ सर्वर पर तय किया गया था इससे पहले कि मैं अपने खुद के समाधान के साथ आने के लिए सक्षम था, लेकिन मैं करना चाहते हैं:

मैं जहाँ तक की तरह एक डिबगिंग वातावरण स्थापित करने के लिए के रूप में चला गया वैकल्पिक रूप से समस्या को रोकने में सक्षम होने के लिए यह फिर से उठना चाहिए (अंतर्निहित सेवा को कार्रवाई में बुलाए जाने से कई घंटे पहले बाधित किया गया था)।

मैं अंतर्निहित क्रिप्ट :: एसएसएलई या ओपनएसएसएल कार्यान्वयन के आधार पर एलडब्ल्यूपी :: उपयोगकर्ता एजेंट स्तर पर एक समाधान का पक्ष लेगा, अगर ऐसा समाधान मौजूद है, क्योंकि मैं अन्य असंबंधित अनुप्रयोगों के लिए सुरक्षा को आराम नहीं करना चाहता हूं। निस्संदेह मैं अभी भी अपने संकल्प मुक्त समय में, इस तरह के एक समाधान की तलाश कर रहा हूं।

उत्तर

9

पता टिप्पणी

पर अपडेट किया गया बायपास करने के लिए सभी प्रमाण पत्र के चैक से agent सेट कर सकते हैं प्रमाणपत्र सत्यापित नहीं करने के लिए।

$agent->ssl_opts(verify_hostname => 0); 

एजेंट भी एसएसएल सॉकेट के कार्यान्वयन के लिए नीचे सेटिंग्स पारित करेंगे इस्तेमाल किया जा रहा। उदाहरण के लिए, IO::Socket::SSL के साथ आप SSL_verify_mode से 0x00 पर सेट कर सकते हैं।

$agent->ssl_opts(SSL_verify_mode => 0x00); 
+1

इसे कभी-कभी समाधान के रूप में उद्धृत किया जाता है, लेकिन यह मेरे मामले में काम नहीं कर रहा था; मेरे पास व्यापक रूप से परीक्षण करने का समय नहीं था, हालांकि, और शायद मुझे गलती हो रही है। मैं यह सत्यापित करने की योजना बना रहा हूं कि यह परीक्षण वातावरण में मेरे लिए काम करता है या नहीं। –

9

$agent->ssl_opts(verify_hostname => 0, 
       SSL_verify_mode => 0x00); 

साथ SSL प्रमाणपत्र सत्यापन अधिभावी से पहले आप https अनुरोध करते हैं की कोशिश करो।

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

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