Вот сценарий: мне нужно подключиться к веб-сайту для получения результатов электронной лаборатории, отформатированных в XML. Чтобы подключиться, мне нужно использовать цифровой сертификат.Использование сертификата PFX для подключения к HTTP-сайту
Я получил версию этой работы на Perl. Это выглядит так:
#!/usr/bin/env perl
use strict;
use WWW::Mechanize;
$|++;
my $username = 'xxx';
my $password = 'yyy';
$ENV{HTTPS_PKCS12_FILE} = 'CERTFILE.pfx';
$ENV{HTTPS_PKCS12_PASSWORD} = 'PathCert';
my $mech = WWW::Mechanize->new();
$mech->agent_alias('Windows IE 6');
$mech->get("https://www.example.org/xyz/,DanaInfo=999.33.1.10+");
$mech->get("https://www.example.org/xyz/isapi_pathnet.dll?Page=Login&Mode=Silent&UserID=xxx&Password=yyy,DanaInfo=999.33.1.10");
$mech->get("https://www.example.org/xyz/isapi_pathnet.dll?Page=HL7&Query=NewRequests,DanaInfo=999.33.1.10");
print $mech->content();
Теперь это работает, когда я запускаю его с рабочей станции. Однако:
- Если я скомпилирую его с помощью perl2exe, это не сработает.
- Если я попытаюсь скомпилировать его с помощью pp (например, «pp -r sslclient.pl»), все, что я верну, «не удалось выполнить согласование 500 SSL:»
- Если я скопирую весь этот каталог на другой компьютер, сценарий просто зависает при первом операторе $ mech-> get().
- Что я действительно хочу найти эквивалент этого в Python (остальное мое приложение - Python), но пока не повезло.
Итак, здесь много проблем. У кого-нибудь есть идеи?
Будьте осторожны с использованием паролей в запросах GET. Они могут оказаться в журналах и обычно могут быть получены довольно легко. Не уверен, что мое заявление относится к HTTPS. –
Я бы добавил несколько проверок, чтобы убедиться, что файлы сертификатов, на ваш взгляд, есть. Я не уверен, что perl2exe делает с путями, но первым подозреваемым, которого я проверял, является то, что относительные пути разрешены правильно. –
Я думаю, что у меня такая же проблема, вы когда-нибудь находили решение? –