发送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
字符串,但没有结果。
答
添加用户代理选项。
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);
我试着用fsockopen方法发送xml,但结果是一样的:远程服务器关闭签名,所以它不是卷曲问题。 – user1041503