sto cercando di impostare un client di sapone con il seguente codice:PHP client SOAP con i certificati SSL oltre
<?php
$wsdl = 'https://domain.com/?wsdl';
$endpoint = 'https://domain.com';
$certificate = dirname(__FILE__) . '/CertWithKey.pem';
$password = 'pwd';
$options = array(
'location' => $endpoint,
'keep_alive' => true,
'trace' => true,
'local_cert' => $certificate,
'passphrase' => $password,
'cache_wsdl' => WSDL_CACHE_NONE
);
try {
$soapClient = new SoapClient($wsdl, $options);
} catch(Exception $e) {
var_dump($e);
}
mi è stata data una chiave di file-p12 con un file di certificazione .crt. Usando openssl ho convertito il file .p12 in un file .pem e poi unito con il file .crt. Il CertWithKey.pem mi sembra buono, due blocchi di certificati sono nel file.
Non importa cosa cerco di fare, continuo a ricevere un'eccezione con il messaggio SOAP-ERROR: Parsing WSDL: Couldn't load from 'https://domain.com/?wsdl' : failed to load external entity "https://domain.com/?wsdl"
.
Dopo aver telefonato con il partecipante remoto, riconoscono che è in arrivo una richiesta, ma stanno registrando questo errore: ssl handshake interrupted by system [hint: stop button pressed in browser?!]
.
Dal momento che non ho trovato nessuna informazione utile sulla rete finora ho pensato di chiederti ragazzi per qualche informazione in merito.
Qualche suggerimento su cosa si può provare? Sono in esecuzione PHP 5.3.8 e l'indirizzo IP del server è bianco elencato nel firewall presso la parte remota.
Sto anche cercando di inviare la richiesta SOAP a un server. Sono di fronte a un problema simile in cui non sono in grado di comunicare al server tramite la mia applicazione php. ma funziona tramite GUI SOAP. Ho un file .p12 che ho provato ad usare convertendo in file .pem. Quando creo l'oggetto client SOAP, ottengo l'errore: SOAP-ERRORE: Parsing WSDL: Impossibile caricare da https: // WSDL:? Impossibile caricare https entità esterne: // WSDL Can per favore dimmi cosa sta andando storto qui? –
Se si è seguita la mia risposta e la chiave e i file crt vengono uniti correttamente, l'host remoto potrebbe avere un firewall abilitato e sta bloccando il proprio indirizzo IP. Altrimenti non posso ancora dirlo, forse dovresti aprire una domanda allora. – Ben
Ho avuto lo stesso problema. E ho seguito i passaggi esatti che @Ben ha fornito. Il p12 doveva essere convertito in .pem usando il link fornito.Ma stavo ancora ricevendo l'errore: arricciatura: (58) Impossibile caricare il client cert -8018 Stranamente, ho capito che la passphrase che stavo fornendo era 3 -digits '123', invece ho dovuto fornire una passphrase valida di 6 caratteri alfabetici. Quindi, credo, ci dovrebbe essere una passphrase di buona lunghezza (non conosco la lunghezza minima). Successivamente mancavano le opzioni 'local_cert', 'passphrase' che dovrebbero essere fornite nell'inizializzazione dell'oggetto SoapClient. –