Использовать SOAP::Lite на основе https, проверка сертификата не удалась
Я создал веб-службу apache mod_perl на основе SSL. Конечно, из своего браузера я могу получить доступ к веб-службе с помощью https (конечно, я добавляю свой самозаверяющий сертификат CA в список доверия браузера), чтобы получить доступ к веб-службе, но когда используя SOAP::Lite, у меня не получилось. Это мой исходный код:
$ENV{HTTPS_CERT_FILE} = '/etc/pki/tls/mycerts/client.crt';
$ENV{HTTPS_KEY_FILE} = '/etc/pki/tls/mycerts/client.key';
#$ENV{HTTPS_CA_FILE} = '/etc/pki/tls/mycerts/ca.crt';
#$ENV{HTTPS_CA_DIR} = '/etc/pki/tls/mycerts/ca.key';
#$ENV{HTTPS_VERSION} = 3;
$ENV{SSL_ca_file}='/etc/pki/tls/mycerts/ca.crt';
$ENV{SSL_ca_pah}='/etc/pki/tls/mycerts/';
#$ENV{SSL_cert_file}='/etc/pki/tls/mycerts/client.key';
#$ENV{SSL_key_file}='/etc/pki/tls/mycerts/client.crt';
$ENV{PERL_LWP_SSL_CA_FILE}='/etc/pki/tls/mycerts/ca.crt';
$ENV{PERL_LWP_SSL_VERIFY_HOSTNAME}=1;
#$ENV{PERL_LWP_SSL_CA_PATH}='/etc/pki/tls/mycerts/';
use SOAP::Lite;
my $name = "wuchang";
print "\n\nCalling the SOAP Server to say hello\n\n";
print SOAP::Lite
-> uri('http://localhost/mod_perl_rules1')
-> proxy('https://localhost/mod_perl_rules1')
-> result;
Я получаю ответ:
500 Can't connect to localhost:443 (certificate verify failed) at /root/Desktop/test.pl line 18
Я действительно не могу отладить это. Я не знаю, является ли мой формат сертификата неправильным. Я использую openssl для генерации моего сертификата, включая сертификат клиента, сертификат сервера и мой самоподписанный сертификат, и я заставляю CA подписать сертификат клиента и сервера. Я действительно не знаю, что происходит не так.
1 ответ
Просто скажите это, чтобы не проверять сертификат. Установите SSL Verify на ноль, как это:
$ ENV {PERL_LWP_SSL_VERIFY_HOSTNAME} = 0;