Certificato client su chiamata EPP

Sto cercando di utilizzare il certificato client gratuito da cacert.org in ricciolo chiamata. controlla di seguito …

$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://url.com'); curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch, CURLOPT_FRESH_CONNECT, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); curl_setopt($ch, CURLOPT_SSLCERT, 'cert.crt'); curl_setopt($ch, CURLOPT_HTTPHEADER, arrays('Content-Type: text/xml')); curl_setopt($ch, CURLOPT_POSTFIELDS, $xml); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

Ho scaricato il certificato come PEM, ora sto seguendo l'errore …

 unable to set private key file: 'cert.crt' type PEM 

Ho provato in tutti i modi ma non ho potuto correggere, ho provato anche Google. Per favore aiuto.

Credo che il problema è che il file del certificato non contiene la chiave privata e non viene fornito separatamente utilizzando l'opzione CURLOPT_SSLKEY che punta alla chiave privata corrispondente per il certificato.

Immagino che il certificato ti sia stato rilasciato dalla CA e installato nel tuo browser. In questo caso, la chiave privata viene archiviata dal browser in una posizione protetta separata dal certificato (dipende dal sistema operativo e dal browser).

La maggior parte dei browser non consente di esportre il certificato e la chiave privata senza crittografarlo (fornendo una password). Ma in base al contenuto del tuo file PEM, non esiste una chiave privata corrispondente.

Per risolvere questo problema dovrai probabilmente seguire alcuni passaggi:

  • Esportre nuovamente il certificato dal browser e assicurarsi che includa la chiave privata
  • Chrome su Win / Linux e Internet Explorer su Windows richiedono l'inserimento di una password. Il certificato deve essere esportto come file PKCS # 12 (.p12)

Il problema ora è che la chiave privata è crittografata e deve essere decifrata per cURL per quanto ne so

  • Utilizzare openssl per decrittografare la chiave privata ed esportre il certificato e la chiave nel formato PEM
  • openssl pkcs12 -in cert.p12 -nodes (questo richiederà la password utilizzata per crittografare quando esportti dal browser) (cert.p12 è la chiave privata e privata in formato PKCS12. -nodes consente di -nodes la chiave privata senza crittografia)

Questo stamperà sullo standard output il certificato e la chiave nel formato PEM.

Dovresti vedere due sezioni:

 -----BEGIN PRIVATE KEY----- ... -----END PRIVATE KEY----- 

e

 -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE----- 

Probabilmente hai già il cert, ma devi salvare la chiave privata in un altro file. Poiché non è crittografato sul server, fare molta attenzione a impostare correttamente le autorizzazioni, in genere 0400 modo che altri utenti non possano accedervi