2008-12-03 38 views
9

Tôi muốn biết liệu có thể buộc LWP :: UserAgent chấp nhận chứng chỉ SSL hết hạn cho một máy chủ duy nhất, nổi tiếng hay không. Vấn đề hơi phức tạp bởi proxy Squid ở giữa.Tôi có thể buộc LWP :: UserAgent chấp nhận chứng chỉ SSL hết hạn không?

tôi đã đi xa như để thiết lập một môi trường gỡ lỗi như:

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; 

May mắn thay vấn đề này cuối cùng đã được cố định trên máy chủ từ xa trước khi tôi đã có thể đưa ra giải pháp của riêng tôi, nhưng tôi muốn để có thể tùy ý phá vỡ vấn đề nếu nó phát sinh trở lại (dịch vụ cơ bản đã bị gián đoạn trong vài giờ trước khi tôi được kêu gọi hành động).

Tôi sẽ ưu tiên giải pháp ở cấp LWP :: UserAgent dựa trên triển khai Crypt :: SSLeay hoặc openSSL cơ bản, nếu giải pháp như vậy tồn tại, vì tôi không muốn thư giãn bảo mật cho các ứng dụng không liên quan khác. Tất nhiên tôi vẫn đang tìm kiếm một giải pháp như vậy bản thân mình, trong thời gian miễn phí phong phú của tôi.

Trả lời

9

Cập nhật địa chỉ bình luận

Để bỏ qua tất cả kiểm tra giấy chứng nhận bạn có thể đặt agent lên đến không xác minh chứng chỉ.

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

Tác nhân cũng sẽ chuyển cài đặt sang triển khai ổ cắm SSL đang được sử dụng. Ví dụ: với IO::Socket::SSL bạn có thể đặt SSL_verify_mode thành 0x00.

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

Điều này đôi khi được trích dẫn là giải pháp, nhưng dường như nó không hoạt động trong trường hợp của tôi; Tôi không có thời gian để kiểm tra nó rộng rãi, mặc dù, và tôi cũng có thể đã được trong lỗi. Tôi dự định xác minh xem điều này có hiệu quả hay không đối với tôi trong môi trường thử nghiệm. –

9

Hãy thử trọng SSL xác nhận giấy chứng nhận với

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

trước khi bạn làm theo yêu cầu https.

Các vấn đề liên quan