佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1558|回复: 1

如何模拟火狐取得https的网页内容?

[复制链接]
发表于 20-4-2015 03:04 PM | 显示全部楼层 |阅读模式
我从电子支付商那个取得一个p12证书文档,我必须要将这个证书文档载入火狐才能正确的获取https的wdsl文件。以下是我把文档载入火狐的步骤:

步骤1:
firefox_cert_step_1.png

步骤2:
firefox_https_cert_step2.png

步骤3:
firefox_https_cert_step3.png

步骤4:
firefox_https_cert_step4.png

步骤5:
firefox_https_cert_step5.png


那么现在我想使用phpcurl来模拟火狐去截取https的wdsl文档,以下是我尝试过的代码,可是都是错误的,请大家指教:
个案1:Unable to load client cert -8018.

  1. <div class="quote"><blockquote>$client = curl_init();
  2. curl_setopt($client, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)');
  3. curl_setopt($client, CURLOPT_URL, $address);
  4. curl_setopt($client, CURLOPT_CONNECTTIMEOUT, 150);
  5. curl_setopt($client, CURLOPT_TIMEOUT, 150);
  6. curl_setopt($client, CURLOPT_RETURNTRANSFER, true );
  7. curl_setopt($client, CURLOPT_POST, true );
  8. curl_setopt($client, CURLOPT_VERBOSE, true );
  9. curl_setopt($client, CURLOPT_SSL_VERIFYPEER, false);
  10. curl_setopt($client, CURLOPT_SSL_VERIFYHOST, false);
  11. curl_setopt($client, CURLOPT_SSLCERT, getcwd().'/latest_key/willaniclienttest.p12');//willaniclienttest.p12
  12. curl_setopt($client, CURLOPT_SSLCERTTYPE, 'P12');
  13. curl_setopt($client, CURLOPT_SSLCERTPASSWD, 'willanitest');
复制代码




个案2:Unable to load client cert -8018.
  1. $client = curl_init();
  2. curl_setopt($client, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)');
  3. curl_setopt($client, CURLOPT_URL, $address);
  4. curl_setopt($client, CURLOPT_CONNECTTIMEOUT, 150);
  5. curl_setopt($client, CURLOPT_TIMEOUT, 150);
  6. curl_setopt($client, CURLOPT_RETURNTRANSFER, true );
  7. curl_setopt($client, CURLOPT_POST, true );
  8. curl_setopt($client, CURLOPT_VERBOSE, true );
  9. curl_setopt($client, CURLOPT_SSL_VERIFYPEER, true);
  10. curl_setopt($client, CURLOPT_SSL_VERIFYHOST, 2);
  11. curl_setopt($client, CURLOPT_CAINFO, getcwd().'/latest_key/cacert.pem'); // cacert.pem
  12. curl_setopt($client, CURLOPT_SSLCERT, getcwd().'/latest_key/willaniclienttest.p12');//willaniclienttest.p12
  13. curl_setopt($client, CURLOPT_SSLCERTTYPE, 'P12');
  14. curl_setopt($client, CURLOPT_SSLCERTPASSWD, 'willanitest');
复制代码



到此,我尝试使用openssl指令把证书和密钥抽取出来
openssl pkcs12 -in yourP12File.pfx -nocerts -out privateKey.pem
openssl pkcs12 -in yourP12File.pfx -clcerts -nokeys -out publicCert.pem

个案3:Peer certificate cannot be authenticated with known CA certificates
  1. $client = curl_init();
  2. curl_setopt($client, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)');
  3. curl_setopt($client, CURLOPT_URL, $address);
  4. curl_setopt($client, CURLOPT_CONNECTTIMEOUT, 150);
  5. curl_setopt($client, CURLOPT_TIMEOUT, 150);
  6. curl_setopt($client, CURLOPT_RETURNTRANSFER, true );
  7. curl_setopt($client, CURLOPT_POST, true );
  8. curl_setopt($client, CURLOPT_VERBOSE, true );
  9. curl_setopt($client, CURLOPT_SSL_VERIFYPEER, true);
  10. curl_setopt($client, CURLOPT_SSL_VERIFYHOST, 2);
  11. curl_setopt($client, CURLOPT_CAINFO, getcwd().'/latest_key/cacert.pem'); // cacert.pem
  12. curl_setopt($ch, CURLOPT_SSLCERT, getcwd().'/latest_key/publicCert.pem'); //
  13. curl_setopt($ch, CURLOPT_SSLCERTPASSWD, "epay123");
  14. curl_setopt($ch, CURLOPT_SSLKEY, getcwd().'/latest_key/privateKey.pem');
  15. curl_setopt($ch, CURLOPT_SSLKEYPASSWD, "epay123");
复制代码



个案4:NSS: client certificate not found (nickname not specified)
  1. $client = curl_init();
  2. curl_setopt($client, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)');
  3. curl_setopt($client, CURLOPT_URL, $address);
  4. curl_setopt($client, CURLOPT_CONNECTTIMEOUT, 150);
  5. curl_setopt($client, CURLOPT_TIMEOUT, 150);
  6. curl_setopt($client, CURLOPT_RETURNTRANSFER, true );
  7. curl_setopt($client, CURLOPT_POST, true );
  8. curl_setopt($client, CURLOPT_VERBOSE, true );
  9. curl_setopt($client, CURLOPT_SSL_VERIFYPEER, false);
  10. curl_setopt($client, CURLOPT_SSL_VERIFYHOST, false);
  11. curl_setopt($ch, CURLOPT_SSLCERT, getcwd().'/latest_key/publicCert.pem'); //
  12. curl_setopt($ch, CURLOPT_SSLCERTPASSWD, "epay123");
  13. curl_setopt($ch, CURLOPT_SSLKEY, getcwd().'/latest_key/privateKey.pem');
  14. curl_setopt($ch, CURLOPT_SSLKEYPASSWD, "epay123");
复制代码





回复

使用道具 举报


ADVERTISEMENT

发表于 8-5-2015 09:15 PM | 显示全部楼层
有试过去想这方法吗? 在Linux 导入 p12证书, 然后在那个Linux server使用PHP请求wdsl页面。我也随便猜猜。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 25-4-2024 08:17 PM , Processed in 0.129416 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表