[ peromalosutra @ 02.09.2013. 14:20 ] @
Dakle treba da konzumiram neki web servis preko HTTPS-a. Dobio sam .p12 fajl koji sadrzi sertifikat za moj sajt, sertifikat CA i moj privatni kljuc. Ovo sam sve extraktovao u .pem fajlove sa openssl iz komandne linije. Definisao sam sledece konstante: PAYMENT_CA_CERT - putanja do foldera sa CA sertifikatom PAYMENT_CERTIFICATE - putanja do mog sertifikata PAYMENT_KEY - putanja do mog privatnog kljuca PAYMENT_PASSWORD - prazno, tj. nisam siguran sta ovdje treba da stoji (citaj dalje). Koristim sledeci kod da se nakacim na servis: Code: protected function sendRequest($params) { $url = PAYMENT_MERCHANT_HANDLER . http_build_query($params); $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_VERBOSE, 1); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 1); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2); curl_setopt($curl, CURLOPT_FAILONERROR, 1); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: text/xml')); curl_setopt($curl, CURLOPT_CAPATH, PAYMENT_CA_CERT); curl_setopt($curl, CURLOPT_SSLCERT, PAYMENT_CERTIFICATE); curl_setopt($curl, CURLOPT_SSLKEYTYPE, 'PEM'); curl_setopt($curl, CURLOPT_SSLKEY, PAYMENT_KEY); // curl_setopt($curl, CURLOPT_SSLKEYPASSWD, PAYMENT_PASSWORD); $response = curl_exec($curl); if (!$response) { die('Error: "' . curl_error($curl) . '" - Code: ' . curl_errno($curl)); } return $this->decodeResponse($response); } Problem je u sledecem, kada pokrenem ovaj kod dobijem gresku "Unable to load client key: Incorrect password", "NSS error -8177". Ako otkomentarisem CURLOPT_SSLKEYPASSWD, onda dobijem segmentation fault: Code: * About to connect() to ********* port 8443 (#0) * Trying **.**.**.** ... * connected * Connected to ********* (**.**.**.**) port 8443 (#0) * Initializing NSS with certpath: sql:/etc/pki/nssdb * CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: /root/***/ca Segmentation fault (core dumped) pomoc! :) |