He encontrado este problema también. He leído este hilo y la mayoría de las respuestas son informativas pero demasiado complejas para mí. No tengo experiencia en temas de redes, por lo que esta respuesta es para personas como yo.
En mi caso, este error estaba ocurriendo porque no incluí los certificados intermedios y raíz al lado del certificado que estaba usando en mi aplicación.
Esto es lo que obtuve del proveedor de certificados SSL:
- abc.crt
- abc.pem
- abc-bunde.crt
En el abc.crt
archivo, solo había un certificado:
-----BEGIN CERTIFICATE-----
/*certificate content here*/
-----END CERTIFICATE-----
Si lo suministrara en este formato, el navegador no mostraría ningún error (Firefox) pero recibiría un curl: (60) SSL certificate : unable to get local issuer certificate
error cuando hiciera la solicitud de curl.
Para corregir este error, verifique su abc-bunde.crt
archivo. Lo más probable es que veas algo como esto:
-----BEGIN CERTIFICATE-----
/*additional certificate content here*/
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
/*other certificate content here*/
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
/*different certificate content here*/
-----END CERTIFICATE-----
Estos son sus certificados intermedios y raíz. Se está produciendo un error porque faltan en el certificado SSL que está proporcionando a su aplicación.
Para corregir el error, combine el contenido de ambos archivos en este formato:
-----BEGIN CERTIFICATE-----
/*certificate content here*/
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
/*additional certificate content here*/
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
/*other certificate content here*/
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
/*different certificate content here*/
-----END CERTIFICATE-----
Tenga en cuenta que no hay espacios entre los certificados, al final o al inicio del archivo. Una vez que proporcione este certificado combinado a su aplicación, su problema debería ser solucionado.