Billsafe Curl Error

Wir haben folgendes Problem:
Nach der Installation von Billsafe (für Oxid Shop Version 5.0) und des Erwerbs eines Domänen-Zertifikats von Comodo ist “Rechnungskauf via Billsafe” als Zahlmethode deaktiviert.
Da wir Oxid in der Version 5.0 mit dem Basic-Templates betreiben, haben wir laut Anweisung von Billsafe die Änderungen in die Basic Blöcke für Versionen > 4.4 übertragen (order.tpl und payment.tpl wurden angepasst).

In der Logdatei mo_billsafe.log steht die Fehlermeldung - Curl Error: error setting certificate verify locations: /etc/ssl/certs/ca-certificates.crt.
Auszug aus Log-Datei:

2012-08-28 16:07:13 CALL: mo_billsafe__client->callService false (/var/www/vhosts/velo-store.de/httpdocs/modules/mo_billsafe/classes/mo_billsafe__client.php:42)
2012-08-28 16:07:54 CALL: mo_billsafe__client->callService array (
‘merchant_id’ => ‘…’,
‘merchant_license’ => ‘xyz’,
‘application_signature’ => ‘xyz’,
‘application_version’ => ‘0.1a’,
‘method’ => ‘getAgreedHandlingCharges’,
) (/var/www/vhosts/velo-store.de/httpdocs/modules/mo_billsafe/classes/mo_billsafe__client.php:31)
2012-08-28 16:07:54 INFO: Total Amount: 0
2012-08-28 16:07:54 ERROR: Curl Error: error setting certificate verify locations:
CAfile: /etc/ssl/certs/ca-certificates.crt
CApath: none
2012-08-28 16:11:21 CALL: mo_billsafe__client->callService false (/var/www/vhosts/velo-store.de/httpdocs/modules/mo_billsafe/classes/mo_billsafe__client.php:42)
2012-08-28 16:11:21 ERROR: invoice not available

Unser Provider hat kein Server-Zertifikat (unter /etc/ssl/certs/ befindet sich nichts), wir haben extra ein Zertifikat von Comodo für unsere Domäne www.velo-store.de erworben.

Wir haben Plesk als Verwaltungsoberfläche des Servers, der Zertifikatspfad lautet laut Provider /opt/psa/var/certificates. Billsafe prüft offensichtlich diesen Pfad nicht.

Hat jemand eine Idee, wie wir Billsafe zum Laufen kriegen und das Problem mit dem Curl Error in Griff kriegen?

Gruß
Martin

Wie habt Ihr das Problem gelöst? Ich habe wohl das Gleiche?

Hallo Martin,

ich fürchte, da könnt Ihr nur nochmal mit Billsafe sprechen. Der Pfad zum Zertifikat sollte dynamisch gesprüft werden, da er je nach Konfiguration unterschiedlich sein kann.

Gruß

Der Fehler liegt eigentlich weniger bei Billsafe als beim Hoster, der Pfad zu den CA Zertifikaten ist falsch gesetzt. Du kannst das aber patchen, geht dann eben zu Lasten der Sicherheit.

Öffne die im Log erwähnte mo_billsafe__client.php und schau um Zeile 40 rum, vor

    $result = $this->curlExec($ch); 

fügst du das hier ein:

url_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

Das sollte dann dort so aussehen:



  public function callService($params)
  {
    $params = $this->filterParams($params);
    
    $this->logger->logExecution($params, true);
    $this->logAmountSum($params);
    $url = mo_billsafe__main::getInstance()->getAPIUrl();
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_TIMEOUT, 15);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
    $result = $this->curlExec($ch);
    curl_close($ch);
    $this->logger->logExecution($result);
    return $result;
  }


Fehler sollte sich dann erledigt haben. Oder du spricht mit deinem Hoster das er den Pfad zu den CA Files für PHPCurl mal richtig setzt und brauchst dann keinen Workaround basteln. Der Code oben schaltet die Prüfung der Zertifikate ab.

Vielen Dank, es hat geholfen! Ich werde aber trotzdem mit dem Hoster sprechen. Vielen Dank auch für die Erklärung!