我有几个利用 DBI 的 Perl 脚本,我正在清理这些脚本并将其转换为 Rose::DB。我的公司使用名为 Password Manager Pro (PMP) 的产品来管理身份验证资源。 PMP 有一个 XML-RPC API我正在尝试构建一个模块,Rose::DB::Object 将调用该模块来获取数据库资源的密码,而不是将凭据存储为明文。
我看过RPC::XML和 XML::RPC并且找不到 ssl 选项。我在谷歌上搜索了一个基于 HTTPS 的 XML-RPC 示例,但没有成功。
我的大部分脚本都是与数据库相关的,到目前为止我还没有对基于网络的模块做太多。我希望有人可以推荐一个解决方案/示例,说明我如何将以下 XML 传递到服务器并使用 SSL 证书标识我自己:
<?xml version="1.0" encoding="utf-8"?>
<methodCall>
<methodName>pmp.password.retrieve</methodName>
<params>
<param>
<value><string>pmp-server</string></value>
</param>
<param>
<value><string>administrator</string></value>
</param>
</params>
</methodCall>
我用以下内容启动了我的模块,但没有将 ssl 呈现给服务器它不好:
#!/usr/bin/perl
use XML::RPC;
my $certfile = /home/api/.ssl/pmp.p12; #Where to pass this?
my $xmlrpc = XML::RPC->new('https://pmp.local:7070/xmlrpc');
my @result = $xmlrpc->call( 'pmp.password.retrieve', {
resourceName => 'DBSERV',
userAccount => 'APITest',
reason => 'Test'
});
print @result;
如有任何建议,我们将不胜感激。
最佳答案
一个解决方案,虽然可能不是最好的,是使用像 stunnel 这样的 SSL 代理。 .您将其设置为监听端口,并且使用适当的证书将进入的任何连接转发到另一个地址/端口。它又是一个事件部件,不太理想,但它确实完成了工作。
关于基于 HTTPS 的 Perl XML-RPC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10307406/