簡體   English   中英

如何使用cURL對XAMPP使用自簽名證書進行HTTPS請求?

[英]How to use a self signed certificate with XAMPP for HTTPS requests using cURL?

我安裝了XAMPP,需要測試一些HTTPS請求。 首先,我嘗試配置XAMPP,以便可以使用HTTPS請求。

這就是我所做的:

1)在php.ini文件中,我未注釋openssl module

2)在httpd.conf文件中,我取消對LoadModule ssl_module modules/mod_ssl.so注釋。

3)在httpd-ssl.conf文件中,我重定向了

SSLCertificateFile "conf/ssl.crt/ipm.crt"

SSLCertificateKeyFile "conf/ssl.key/ipm.key ”到我的.crt和.key文件。

4)我將ipm.crt和ipm.key文件放在XAMPP內的apache文件夾ssl.crtssl.key

5)我通過執行以下操作創建了自簽名證書:

openssl req -config openssl.cnf -new -out ipm.csr -keyout ipm.pem

openssl rsa -in ipm.pem -out ipm.key

openssl x509 -in ipm.csr -out ipm.crt -req -signkey ipm.key -days 365

現在,我正在使用腳本來發送XML文件。 我正在使用cURL,我的代碼是:

<?php
  /*
   * XML Sender/Client.
   */
  // Get our XML. You can declare it here or even load a file.


  $xml = file_get_contents("data.xml");


  // We send XML via CURL using POST with a http header of text/xml.
  $ch = curl_init();

  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
  curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);

  curl_setopt($ch, CURLOPT_CAINFO,  getcwd().'/cert/ipm.crt');
  curl_setopt($ch, CURLOPT_SSLCERT, getcwd().'/cert/ipm.pem');
  curl_setopt($ch, CURLOPT_SSLCERTPASSWD,'password');


  //I use this line only for debugging through fiddler. Must delete after done with debugging.
  curl_setopt($ch, CURLOPT_PROXY, '127.0.0.1:8888');

  // set URL and other appropriate options
  curl_setopt($ch, CURLOPT_URL, "https://ipv4.fiddler/iPM/receiver.php");
  curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));
  curl_setopt($ch, CURLOPT_HEADER, 0);
  curl_setopt($ch, CURLOPT_POST, 1);
  curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
  curl_setopt($ch, CURLOPT_REFERER, 'https://ipv4.fiddler/iPM/receiver.php');
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  $ch_result = curl_exec($ch);
  echo "Result = ".$ch_result;

  echo 'Curl error: ' . curl_error($ch);

  curl_close($ch);
  // Print CURL result.
?>

但是我得到了以下錯誤: Curl error: unable to use client certificate (no key found or wrong pass phrase?)

然而,當我創造了我的證書我也把作為密碼短語: password

有什么想法嗎?

我相信您還需要指定CURLOPT_SSLKEYPASSWD

curl_setopt($ch, CURLOPT_SSLCERTPASSWD, 'password');
curl_setopt($ch, CURLOPT_SSLKEYPASSWD, 'password');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM