我也遇到了这个问题。我已经阅读了该主题,并且大多数答案都提供了很多信息,但对我来说却过于复杂。我没有网络主题方面的经验,因此此答案适用于像我这样的人。
就我而言,发生此错误是因为我没有在应用程序中使用的证书旁边包含中间证书和根证书。
这是我从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-----
请注意,证书之间,文件末尾或开始处都没有空格。一旦将此组合证书提供给您的应用程序,就应该解决您的问题。