Вы также можете попробовать следующий раствор Python2:
#!/usr/bin/env python2
import csv
with open('file_1') as f1:
file_1_list = [line[0] for line in csv.reader(f1)]
with open('file_2') as f2:
for line in csv.reader(f2):
if line[0] not in file_1_list:
print ' '.join(line)
IO :: Socket :: SSL проверяет, что имя в сертификате соответствует названию, к которому вы подключаетесь, но Crypt :: Slley не делает. Новее LWP также также проверяет цепочку сертификата по умолчанию, но, возможно, это также сделано с помощью более старой версии LWP, которую вы использовали.
Я рекомендую вам позвонить в программу с отладкой SSL, чтобы увидеть фактическую причину проблемы:
perl -MIO::Socket::SSL=debug4 program.pl
, то вы можете управлять SSL_OPTS
, которые должны быть сделаны, см. Perldoc IO :: Socket :: SSL
Для получения более подробной информации о вариантах:
SSL_CA_FILE
Если вы используете самозагодный сертификат или если сертификат не выдан ни одним из обычно доверенных корневых CAS. SSL_verifyCn_name
, чтобы установить имя, которое следует ожидать в сертификате. То есть если у вас есть имя для www.example.com
в сертификате
в сертификате , но подключиться к хосту с Localhost
, вы должны установить SSL_VERIFYCN_NAME => 'www.example.com «
SSL_FINGRINTPRINT
, чтобы проверить только отпечаток сертификата и отключить любые другие проверки. SSL_verify_Mode
. Но это только обходной путь, и вы никогда не должны делать это в производственном кодексе, потому что это делает вас для атак для мужчин в средних. Так как вы не можете установить SSL_OPTS напрямую с LWP-запрос
, я рекомендую вместо вместо небольшого программы использовать, то есть что-то вроде этого:
use LWP::UserAgent;
my $ua = LWP::UserAgent->new( ssl_opts => {
SSL_ca_file => 'myca.pem',
SSL_verifycn_name => 'www.example.com',
});
print $ua->get('https://...')->as_string;