php curl jks p12,使用PHP CURL访问双向认证的tomcat https地址

header("Content-type:text/html;charset=utf-8");

/************************curl双向认证常量配置start**************************/

//根证书路径

define('HTTPS_CAINFO', '/home/ljlia/https_ca/ca/root.crt');

//client.pem文件路径

define('HTTPS_SSLCERT', '/home/ljlia/https_ca/ca/citic/client.pem');

//私钥文件路径

define('HTTPS_SSLKEY', '/home/ljlia/https_ca/ca/citic/client.key');

//私钥密码

define('HTTPS_SSLKEYPASSWD', '123456');

/************************curl双向认证常量配置end**************************/

$wxpayUrl = 'https://citic.pay.develop:8443/wxpay/BillCompareServlet';

$alipayUrl = 'https://citic.pay.develop:8443/alipay/BillCompareServlet';

$token = md5('BillCompareServletdoPostcasher');  //验证token

$array = array(

'token' => $token

);

$wechat = doPost($wxpayUrl,$array);

$alipay = doPost($alipayUrl,$array);

/**

* [方法描述] CURL模拟post请求,执行https双向认证

* @param [string] $url  请求路径

* @param [array] $fields  请求参数 array( 'data' => '111' );

* @param [array ] $extraheader [header头部的重写]

* @param [const] 常量定义 HTTPS_CAINFO 根证书 例:/home/ljlia/rgz/ca/root.crt

* @param [const] 常量定义 HTTPS_SSLCERT client.pem文件路径 例:/home/ljlia/www/pay/client.pem

* @param [const] 常量定义 HTTPS_SSLCERTPASSWD client证书密码

* @param [const] 常量定义 HTTPS_SSLKEY 私钥文件路径

* @param [const] 常量定义 HTTPS_SSLKEYPASSWD 私钥密码

* @return  接口返回的数据

*/

function doPost($url, $fields, $extraheader = array()){

$fields = http_build_query($fields);    //将数据进行URL-encode转换

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_POST, true);

curl_setopt($ch, CURLOPT_PORT, 8443);//指定端口

curl_setopt($ch, CURLOPT_POSTFIELDS, $fields );  //post参数

curl_setopt($ch, CURLOPT_HTTPHEADER, $extraheader);  //设置一个header中传输内容的数组。

curl_setopt($ch, CURLOPT_SSLVERSION, 1);//传递一个包含SSL版本的长参数。默认PHP将被它自己努力的确定,在更多的安全中你必须手工设置

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); //不信任任何证书

curl_setopt($ch, CURLOPT_CAINFO, HTTPS_CAINFO); //根证书路径

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1); // 检查证书中是否设置域名,0不验证

curl_setopt($ch, CURLOPT_VERBOSE, 1); //debug模式

curl_setopt($ch,CURLOPT_SSLCERTTYPE,'PEM');

curl_setopt($ch, CURLOPT_SSLCERT, HTTPS_SSLCERT); //client.pem文件路径

// curl_setopt($ch, CURLOPT_SSLCERTPASSWD, HTTPS_SSLCERTPASSWD); //client证书密码

curl_setopt($ch, CURLOPT_SSLKEY, HTTPS_SSLKEY);//私钥文件路径

curl_setopt($ch, CURLOPT_SSLKEYPASSWD, HTTPS_SSLKEYPASSWD);//私钥密码

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 如果成功只将结果返回,不自动输出任何内容。

$output = curl_exec($ch);

if(curl_errno($ch) != 0) $output = 'Curl error: ' . curl_error($ch);//curl错误信息

curl_close($ch);

return $output;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值