基于 HTTPS 的 Perl XML-RPC

标签 perl ssl xml-rpc

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

我看过RPC::XMLXML::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/

相关文章:

perl - 更新 : Initialise and Clear multiple hash in one line

c++ - boost::asio 中的未经请求的消息使应用程序崩溃,没有 SSL 它工作正常,为什么?

java - CentOS 7 上的 TomEE 在 CentOS 更新后无法通过 JDBC 连接到 Microsoft SQL Server

php - 如何使用 Moodle 站点库添加更多 Mnet 服务

iphone - iPhone 支持 XML-RPC 吗?

perl - 为什么我的 -p one-liner 打印出我想跳过的行?

Perl:检查当前日期是否在两个给定日期之间

wordpress - 拥有一个带有 SSL 的新网站是否已经可以避免 Open Graph 问题?

http - 是否可以将 Celery 与另一种编程语言一起使用?

perl - perl 中的 glob() 是否仍然存在不可预测的行为?