Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用PFX证书连接到HTTP站点_Python_Perl_Ssl_Certificate - Fatal编程技术网

Python 使用PFX证书连接到HTTP站点

Python 使用PFX证书连接到HTTP站点,python,perl,ssl,certificate,Python,Perl,Ssl,Certificate,下面是一个场景:我需要连接到一个网站来检索XML格式的电子实验室结果。为了连接,我需要使用数字证书 我已经能够在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_PASS

下面是一个场景:我需要连接到一个网站来检索XML格式的电子实验室结果。为了连接,我需要使用数字证书

我已经能够在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-rsslclient.pl”)编译它,我得到的结果就是“500 SSL协商失败:”
  • 如果我将整个目录复制到另一台计算机上,脚本只会挂起在第一个$mech->get()语句处
  • 我真正想要的是在Python中找到一个与此等效的程序(我的应用程序的其余部分是Python),但到目前为止运气不佳

所以,这里有很多问题。有人有什么想法吗?

我不知道您的perl问题是怎么回事。但是,可以找到Python的mechanize。

在GET请求中使用密码时要小心。它们最终会出现在日志中&通常可以相当容易地检索到。但我不确定我的声明是否适用于HTTPS。我会添加一些检查以确保您认为存在的证书文件确实存在。我不确定perl2exe对路径做了什么,但我要检查的第一个疑点是相对路径是否正确解析。我想我也遇到了同样的问题,你找到解决方案了吗?