SOAP, SSL und Clientzertifikate

geschrieben am 16.06.2010 von Stephan Hochdoerfer

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 essentiell 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 concateniert 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

Hinterlasse eine Antwort