Skip to main content

SOAP, SSL und Clientzertifikate

This blog post might be outdated!
This blog post was published more than one year ago and might be outdated!
· One min read
Stephan Hochdörfer
Head of IT Business Operations

Im Projektgeschäft kommt es immer mal wieder vor, dass man mit sehr speziellen Anforderungen umgehen muss. In einem aktuellen Projekt bestand der Endkunde darauf dass die SOAP Kommunikation via SSL mit entsprechendem Client-Zertifikat abzulaufen hat. Klingt kompliziert, ist es leider auch.

Das folgende Snippet zeigt wie man den SOAP Client richtig instanziiert:

$sWebservice = "https://127.0.0.1:443/Portal/AD_Webservice.svc";
$sCertFile = dirname(__FILE__).'/islocal.pem';
$sPassphrase = "CustomPassphrase";
try
{
$oClient = new SoapClient(
$sWebservice.'?wsdl',
array(
'location' => $sWebservice,
'local_cert' => $sCertFile,
'passphrase' => $sPassphrase,
'exceptions' => 1,
'trace' => true
)
);
}
catch(Exception $oException)
{
// error handling
}

Wichtige Hinweise:

  • Es ist essenziell in der Url trotz des https Protokolls den SSL Port anzugeben

  • Sollte man vom Kunden mehrere Dateien (Zertifikat und Key getrennt) so müssen diese konkateniert werden - erst der Key, dann das Zertifikat

  • Immer mit der neusten PHP Version testen, bei älteren PHP Versionen ist die Funktionsfähigkeit u.U. nicht gegeben