首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于HTTPS的Perl XML-RPC

基于HTTPS的Perl XML-RPC
EN

Stack Overflow用户
提问于 2012-04-25 07:27:50
回答 2查看 1.8K关注 0票数 1

我有几个利用DBI的Perl脚本,我正在清理这些脚本并将其转换为Rose::DB。我的公司使用名为Password Manager Pro (PMP)的产品来管理身份验证资源。PMP有一个XML-RPC API,我正在尝试构建一个模块,Rose::DB::Object将调用该模块来获取数据库资源的密码,而不是将凭据存储为明文。

我已经看过RPC::XMLXML::RPC了,但是没有找到适用于ssl的选择。我已经在谷歌上搜索了一个基于HTTPS的XML-RPC的例子,但是没有成功。

我的大部分脚本都是与数据库相关的,到目前为止,我还没有做太多基于web的模块。我希望有人能推荐一个解决方案/示例,告诉我如何将以下XML传递给服务器,并使用SSL证书标识自己:

代码语言:javascript
复制
<?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呈现给服务器是不好的:

代码语言:javascript
复制
#!/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;

任何有帮助的建议都将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 2012-04-25 08:37:10

一种解决方案,虽然可能不是最好的,是使用像stunnel这样的SSL代理。您将其设置为侦听一个端口,传入的任何连接都将使用适当的证书转发到另一个地址/端口。这是另一个移动的部分,这并不理想,但它确实完成了工作。

票数 0
EN

Stack Overflow用户

发布于 2012-04-25 09:49:03

XML::RPC首先使用LWP (如果已安装),LWP for SSL使用Crypt::SSLeay和Net::SSL,它们使用以下变量:

代码语言:javascript
复制
$ENV{HTTPS_PKCS12_FILE}     = 'certs/pkcs12.pkcs12';
$ENV{HTTPS_PKCS12_PASSWORD} = 'PKCS12_PASSWORD';

更新:如果需要,所有密钥。

代码语言:javascript
复制
# proxy support
$ENV{HTTPS_PROXY} = 'http://proxy_hostname_or_ip:port';

# proxy_basic_auth
$ENV{HTTPS_PROXY_USERNAME} = 'username';
$ENV{HTTPS_PROXY_PASSWORD} = 'password';

# debugging (SSL diagnostics)
$ENV{HTTPS_DEBUG} = 1;

# default ssl version
$ENV{HTTPS_VERSION} = '3';

# client certificate support
$ENV{HTTPS_CERT_FILE} = 'certs/notacacert.pem';
$ENV{HTTPS_KEY_FILE}  = 'certs/notacakeynopass.pem';

# CA cert peer verification
$ENV{HTTPS_CA_FILE}   = 'certs/ca-bundle.crt';
$ENV{HTTPS_CA_DIR}    = 'certs/';

# Client PKCS12 cert support
$ENV{HTTPS_PKCS12_FILE}     = 'certs/pkcs12.pkcs12';
$ENV{HTTPS_PKCS12_PASSWORD} = 'PKCS12_PASSWORD';
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10307406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档