发送XML文件包含使用PHP + cURL的gpg签名

问题描述:

我有一个xml文件和一个GPG签名,它位于<SIGNATURE>标记中。发送XML文件包含使用PHP + cURL的gpg签名

这里是XML:

$xml = "<DATA> 
.... 
    <SIGNATURE>-----BEGIN PGP SIGNATURE----- 
Version: GnuPG v1.4.5 (GNU/Linux) 

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
xxxxxxxxxxxxxxxx 

-----END PGP SIGNATURE----- 
    </SIGNATURE> 
</DATA>"; 

当我把这个XML用Perl的响应是确定和远程主机接受签名。

但是,如果我发送这个XML与PHP和cURL,远程服务器将解雇签名。

下一个模块在perl脚本中使用:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt($ch, CURLOPT_URL,$url); 
curl_setopt($ch, CURLOPT_POST,1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER ,1); 

我想有一个与卷曲问题....可能是一个卷曲设置:use URI(); use GnuPG qw(:algo); use LWP::UserAgent(); use IO::Socket::SSL;

下一页卷曲选项在PHP脚本设置错过了,但我不知道是哪一个。我试过urlencode,qoutemeta php函数为$xml字符串,但没有结果。

+0

我试着用fsockopen方法发送xml,但结果是一样的:远程服务器关闭签名,所以它不是卷曲问题。 – user1041503

添加用户代理选项。
curl_setopt($ ch,CURLOPT_USERAGENT,“Mozilla/5.0(Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.1)Gecko/2008070206 Firefox/3.0.1”);
curl_setopt($ ch,CURLOPT_SSL_VERIFYPEER,0);
curl_setopt($ ch,CURLOPT_URL,$ url);
curl_setopt($ ch,CURLOPT_POST,1);
curl_setopt($ ch,CURLOPT_POSTFIELDS,$ xml);
curl_setopt($ ch,CURLOPT_RETURNTRANSFER,1);