Всем привет! Возникла проблема при написании программы, почему-то не пускает на сервер с сертификатом. (из начально он давался в pfx формате с паролем) я вытащил из него CA, cl-cert и privat-key Через openssl конектиться отлично. Code: use LWP::Debug qw(+); use LWP::UserAgent; # Директория, где хранятся файлы с сертификатами $ENV{HTTPS_CA_DIR} = '/Users/.../crt/'; # файл, содержащий сертификат пользователя $ENV{HTTPS_CERT_FILE} = $ENV{HTTPS_CA_DIR} . 'new_cert.crt'; # файл, содержащий секретный ключ $ENV{HTTPS_KEY_FILE} = $ENV{HTTPS_CA_DIR} . 'new_private.key'; # файл, содержащий корневой сертификат $ENV{HTTPS_CA_FILE} = $ENV{HTTPS_CA_DIR} . 'new_cacert.pem'; my $ua = new LWP::UserAgent; $ua->timeout(15); $ua->agent("MSIE 9.0"); my $req = new HTTP::Request('GET', 'https://REMOTE_HOST'); my $res = $ua->request($req); print $res->as_string; выдает ошибку: Error GETing https://REMOTE_HOST: Can't connect to REMOTE_HOST:443 (certificate verify failed) Используется Perl 5.14.1 листинг используемых модулей при запуске из modelist: Code: AutoLoader 5.71 Carp 1.23 Compress::Raw::Zlib 2.037 Compress::Zlib 2.037 Config Cwd 3.36 DynaLoader 1.13 Encode 2.44 Encode::Alias 2.15 Encode::Config 2.05 Encode::Encoding 2.05 Encode::Locale 1.02 Errno 1.13 Exporter 5.65 Exporter::Heavy 5.65 Fcntl 1.11 File::Basename 2.82 File::Glob 1.12 File::GlobMapper 1.000 File::Spec 3.33 File::Spec::Unix 3.33 HTML::Entities 3.69 HTML::Form 6.00 HTML::Parser 3.69 HTML::PullParser 3.57 HTML::Tagset 3.20 HTML::TokeParser 3.69 HTTP::Config 6.00 HTTP::Cookies 6.00 HTTP::Cookies::Netscape 6.00 HTTP::Date 6.00 HTTP::Headers 6.00 HTTP::Headers::Util 6.00 HTTP::Message 6.02 HTTP::Request 6.00 HTTP::Request::Common 6.00 HTTP::Response 6.01 HTTP::Status 6.00 I18N::Langinfo 0.08 IO 1.25_04 IO::Compress::Adapter::Deflate 2.037 IO::Compress::Base 2.037 IO::Compress::Base::Common 2.037 IO::Compress::Gzip 2.037 IO::Compress::Gzip::Constants 2.037 IO::Compress::RawDeflate 2.037 IO::Compress::Zlib::Extra 2.037 IO::File 1.15 IO::Handle 1.31 IO::Seekable 1.1 IO::Socket 1.32 IO::Socket::INET 1.31 IO::Socket::SSL 1.47 IO::Socket::UNIX 1.23 IO::Uncompress::Adapter::Inflate 2.037 IO::Uncompress::Base 2.037 IO::Uncompress::Gunzip 2.037 IO::Uncompress::RawInflate 2.037 LWP 6.03 LWP::MemberMixin LWP::Protocol 6.00 LWP::Protocol::http LWP::Protocol::https 6.02 LWP::UserAgent 6.03 List::Util 1.23 Mozilla::CA 20111025 Net::HTTP 6.01 Net::HTTP::Methods 6.00 Net::HTTPS 6.00 Net::LibIDN 0.12 Net::SSLeay 1.42 Scalar::Util 1.23 SelectSaver 1.02 Socket 1.94 Storable 2.30 Symbol 1.07 Time::Local 1.2000 URI 1.59 URI::Escape 3.31 URI::_generic URI::_idna URI::_punycode 0.04 URI::_query URI::_server URI::http URI::https WWW::Mechanize 1.70 XSLoader 0.15 base 2.16 bytes 1.04 constant 1.21 feature 1.20 integer 1.00 overload 1.13 utf8 1.09 vars 1.02 warnings 1.12 warnings::register 1.02 ума не приложу в чем проблема... на обычные сайты по https заходит!!!
выдает следующее: Code: Error GETing https://REMOTE_HOST: Can't connect to REMOTE_HOST:443 at /Users/.../main.pl line 145 500 Can't connect to REMOTE_HOST:443 Content-Type: text/plain Client-Date: Mon, 31 Oct 2011 17:22:29 GMT Client-Warning: Internal response Can't connect to REMOTE_HOST:443 LWP::Protocol::https::Socket: SSL connect attempt failed because of handshake problemserror:14094413:SSL routines:SSL3_READ_BYTES:sslv3 alert unsupported certificate at /opt/local/lib/perl5/site_perl/5.14.1/LWP/Protocol/http.pm line 51.
после аптейда через cpan Code: use LWP::Debug qw(+); use IO::Socket::SSL qw(debug3); use LWP::UserAgent; use HTTP::Cookies; $ENV{PERL_LWP_SSL_VERIFY_HOSTNAME} = 1; $ENV{PERL_LWP_SSL_CA_FILE} = '/Users/.../certs/my-ca.pem'; $ENV{HTTPS_CA_DIR} = '/Users/.../certs/'; $ENV{HTTPS_CERT_FILE} = '/Users/.../certs/client-cert.pem'; $ENV{HTTPS_KEY_FILE} = '/Users/.../certs/client-key.pem'; my $browser = LWP::UserAgent->new(); $browser->agent("MSIE 8.0"); my $req = new HTTP::Request('GET', 'HOST'); $browser->cookie_jar(HTTP::Cookies->new()); $browser->show_progress(0); foreach my $name ($browser->ssl_opts){ print $name .": ".$browser->ssl_opts($name) . "\n"; } my $response = $browser->request($req); выдает следующее Code: === SSL_ca_path: /Users/.../certs/ SSL_ca_file: /Users/.../certs/my-ca.pem verify_hostname: 1 === DEBUG: .../IO/Socket/SSL.pm:1545: new ctx 4318236096 DEBUG: .../IO/Socket/SSL.pm:334: socket not yet connected DEBUG: .../IO/Socket/SSL.pm:336: socket connected DEBUG: .../IO/Socket/SSL.pm:349: ssl handshake not started DEBUG: .../IO/Socket/SSL.pm:1533: ok=1 cert=4318686352 DEBUG: .../IO/Socket/SSL.pm:1533: ok=1 cert=4318719680 DEBUG: .../IO/Socket/SSL.pm:1533: ok=1 cert=4318713712 DEBUG: .../IO/Socket/SSL.pm:1148: scheme=www cert=4318713712 DEBUG: .../IO/Socket/SSL.pm:1155: identity=host1 cn=host1 alt=2 host1 2 host1 DEBUG: .../IO/Socket/SSL.pm:392: Net::SSLeay::connect -> 0 DEBUG: .../IO/Socket/SSL.pm:440: connection failed - connect returned 0 DEBUG: .../IO/Socket/SSL.pm:1276: SSL connect attempt failed because of handshake problemserror:14094413:SSL routines:SSL3_READ_BYTES:sslv3 alert unsupported certificate DEBUG: .../IO/Socket/SSL.pm:1276: IO::Socket::INET configuration failederror:00000000:lib(0):func(0):reason(0) DEBUG: .../IO/Socket/SSL.pm:1582: free ctx 4318236096 open=4318236096 DEBUG: .../IO/Socket/SSL.pm:1587: free ctx 4318236096 callback DEBUG: .../IO/Socket/SSL.pm:1590: OK free ctx 4318236096 Такое ощущение что просто не берет сертификат и ключ !?