Я тоже столкнулся с этой проблемой. Я читал эту ветку, и большинство ответов для меня информативно, но слишком сложно. У меня нет опыта в сетевых темах, поэтому этот ответ для таких людей, как я.
В моем случае эта ошибка произошла из-за того, что я не включил промежуточный и корневой сертификаты рядом с сертификатом, который использовал в своем приложении.
Вот что я получил от поставщика SSL-сертификатов:
- abc.crt
- abc.pem
- abc-bunde.crt
В abc.crt
файле был только один сертификат:
-----BEGIN CERTIFICATE-----
/*certificate content here*/
-----END CERTIFICATE-----
Если бы я предоставил его в этом формате, браузер не отображал бы никаких ошибок (Firefox), но я получил бы curl: (60) SSL certificate : unable to get local issuer certificate
ошибку, когда сделал запрос curl.
Чтобы исправить эту ошибку, проверьте свой abc-bunde.crt
файл. Скорее всего, вы увидите что-то вроде этого:
-----BEGIN CERTIFICATE-----
/*additional certificate content here*/
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
/*other certificate content here*/
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
/*different certificate content here*/
-----END CERTIFICATE-----
Это ваши промежуточные и корневые сертификаты. Произошла ошибка, поскольку они отсутствуют в сертификате SSL, который вы предоставляете приложению.
Чтобы исправить ошибку, объедините содержимое обоих этих файлов в следующем формате:
-----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-----
Обратите внимание, что между сертификатами нет пробелов в конце или в начале файла. После того, как вы предоставите этот комбинированный сертификат для вашего приложения, ваша проблема должна быть решена.