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:
Il problema ora è che la chiave privata è crittografata e deve essere decifrata per cURL per quanto ne so
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