Ich habe ein Problem bei der Verbindung von PHP mit einer API, die die Verwendung von SSL-Zertifikaten erfordert. Das Problem ist, wenn ich meinen PHP-Code ausführen bekomme ich "Konnte keine Verbindung zum Host herstellen".SOAP mit zwei Zertifikatsdateien und "Konnte keine Verbindung zum Host herstellen"
ich in der Lage war, an den Dienstanbieter verbinden CURL wie folgt aus:
$wsdl = 'https://example.com/Case.svc';
$certFile = getcwd() . '/certificate.crt';
$keyFile = getcwd() . '/key.pem';
$password = 'password';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $wsdl);
curl_setopt($ch, CURLOPT_SSLCERT, $certFile);
curl_setopt($ch, CURLOPT_SSLKEYPASSWD, $password);
curl_setopt($ch, CURLOPT_SSLKEY, $keyFile);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
$output = curl_exec($ch);
var_dump(curl_errno($ch));
var_dump(curl_error($ch));
Allerdings habe ich nicht in der Lage war, diese mit SOAP zu tun:
$options=array(
'soap_version' => SOAP_1_2,
'trace' => true,
'cache_wsdl' => WSDL_CACHE_NONE,
'exceptions' => 1,
'encoding' => 'UTF-8',
'stream_context'=>stream_context_create(
array(
'ssl'=>array(
'verify_peer'=>true
,'allow_self_signed'=>false
,'cafile'=>'certificate.crt'
,'verify_depth'=>5
)
)
),
'local_cert' => 'key.pem',
'passphrase' => 'password',
);
$client = new SoapClient("Case.wsdl", $options);
Es in „nicht-Ergebnisse Verbindung zum Host ".
Das Problem möglicherweise im Zertifikat selbst, vielleicht muss ich zwei Zertifikate in einer Datei zusammenführen. Ich kann sehen, dass viele Leute das gleiche Problem haben, die meisten von ihnen haben keine Antwort bekommen.
Warum gibt der SOAP-Code "Konnte keine Verbindung zum Host herstellen" zurück und wie behebe ich ihn?
Dank für die Wiedergabe, wie für (1) I ein file.pfx mit Passwort haben, führen i den folgenden Befehl ein 2-Datei aus ihm openssl pkcs12 -in cert_name.pfx -nocerts -out cert_name zu extrahieren. Schlüssel und openssl pkcs12 -in cert_name.pfx -clcerts -nokeys -out certificate.crt die ich folgendes commanf openssl rsa -in cert_name.pem -out newkey.pem so bin ich verloren laufen, ich weiß wirklich nicht, Was ich jetzt habe – marvillous
wie für (2) Ich habe versucht, "verify_peer" => falsch, habe ich den gleichen Fehler – marvillous