как проверить curl с помощью ssl с ключом без пароля

#php #html #ajax #soap #php-curl

Вопрос:

Обновление: Теперь я обновил код с путем к файлу сертификата, и он работает, но я получаю ошибку cURL #:unable to set private key file: 'D:homesitewwwrootwp-contentthemesalfalah-themecertificate.pem' type PEM

Ранее у меня была проблема с форматом, которую я решил, указав ключ в PEM формате, и теперь мне нужно установить private key для файла, который я не знаю.

 $xml_data = 'lt;soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/" xmlns:epr="http://schemas.datacontract.org/2004/07/ePRCintegrationService.BLL" xmlns:epr1="http://schemas.datacontract.org/2004/07/ePRCintegrationService"gt; lt;soapenv:Header/gt; lt;soapenv:Bodygt;  lt;tem:Get_PRCRequestgt;  lt;tem:Refnumbergt;  lt;epr:Benenamegt;'.$Benename.'lt;/epr:Benenamegt;  lt;epr:Referencenumbergt;'.$Referencenumber.'lt;/epr:Referencenumbergt;   lt;epr:RegisterMobilenumbergt;'.$RegisterMobilenumber.'lt;/epr:RegisterMobilenumbergt;  lt;epr:Registeremailgt;'.$Registeremail.'lt;/epr:Registeremailgt;  lt;/tem:Refnumbergt;  lt;tem:ApiCredgt;  lt;epr1:APIAgentidgt;WEbUSERlt;/epr1:APIAgentidgt;  lt;epr1:APIPasswordgt;uc/KwgjodHMYIu/DkS/ZJBBFXWmkv2ptAChBjOW4u 0=lt;/epr1:APIPasswordgt;  lt;epr1:APIUserIdgt;webAPIlt;/epr1:APIUserIdgt;  lt;/tem:ApiCredgt;  lt;/tem:Get_PRCRequestgt; lt;/soapenv:Bodygt; lt;/soapenv:Envelopegt;';    $url = "https://remittex.bankalfalah.com/ePRCintegrationService/Service1.svc"; $cert_file = getcwd().'cert.pem'; $cert_password = 'abcd@123456789'; $User_Agent = 'Mozilla/5.0 (Windows NT 5.1; rv:31.0) Gecko/20100101 Firefox/31.0'; $headers = array(  "Content-Type: text/xml; charset=utf-8",  "Accept: application/xml",  "Content-Length: ".strlen($xml_data) );  $curl = curl_init(); curl_setopt_array($curl, array(  CURLOPT_URL =gt; "https://remittex.bankalfalah.com/ePRCintegrationService/Service1.svc",  CURLOPT_RETURNTRANSFER =gt; true,  CURLOPT_ENCODING =gt; "",  CURLOPT_MAXREDIRS =gt; 10,  CURLOPT_TIMEOUT =gt; 30,  CURLOPT_SSL_VERIFYPEER =gt; true,  CURLOPT_USERAGENT =gt; $User_Agent,  CURLOPT_SSL_VERIFYHOST =gt; true,  CURLOPT_CUSTOMREQUEST =gt; "POST",  CURLOPT_POSTFIELDS =gt; $xml_data,  CURLOPT_HTTPHEADER =gt; $headers,  CURLOPT_SSLCERT =gt; $cert_file ));  $response = curl_exec($curl); $err = curl_error($curl); $info = curl_getinfo($curl);  var_dump($info); curl_close($curl);  if ($err) {  echo "cURL Error #:" . $err; } else {   $xml = $response;  $xml = preg_replace("/(lt;/?)(w ):([^gt;]*gt;)/", '$1$2$3', $xml);  $xml = simplexml_load_string($xml);  $json = json_encode($xml);  $responseArray = json_decode($json, true); // true to have an array, false for an object  // print_r($responseArray);  // print_r($response);   foreach ($responseArray as $key =gt; $value) {  if (is_array($value)) {  foreach ($value as $k =gt; $v) {  echo $v['Get_PRCRequestResult'];  }  }  } }  

Комментарии:

1. Похоже, вам нужно добавить еще один параметр конфигурации в ваш запрос curl CURLOPT_SSLCERTPASSWD , который "The password required to use the CURLOPT_SSLCERT certificate"

2. Во-первых, благодаря прояснению моего вопроса, я переформулирую его, но я думаю, что пароль не требуется, так как я только что дал ему пароль rndom, в нем все еще говорится, что невозможно установить закрытый ключ

3. хорошо — никогда раньше не приходилось использовать эти опции, так что это было предположение ( возможно, неудачное ) — в PHP есть различные OpenSSL функции, одна из которых openssl_get_privatekey

4. вы правы, если я удалю проверку ssl, я не получу ответа, даже если мой ip будет отправлен на сервер, он просто ничего мне не вернет, если что-то нужно решить в Soap, дайте мне знать, я буду очень благодарен вам, сэр.