Tôi đã gặp vấn đề này là tốt. Tôi đã đọc chủ đề này và hầu hết các câu trả lời là thông tin nhưng quá phức tạp đối với tôi. Tôi không có kinh nghiệm trong các chủ đề mạng nên câu trả lời này dành cho những người như tôi.
Trong trường hợp của tôi, lỗi này xảy ra do tôi không bao gồm chứng chỉ trung gian và chứng chỉ gốc bên cạnh chứng chỉ tôi đang sử dụng trong ứng dụng của mình.
Đây là những gì tôi nhận được từ nhà cung cấp chứng chỉ SSL:
- abc.crt
- abc.pem
- abc-bunde.crt
Trong abc.crt
tệp, chỉ có một chứng chỉ:
-----BEGIN CERTIFICATE-----
/*certificate content here*/
-----END CERTIFICATE-----
Nếu tôi cung cấp nó ở định dạng này, trình duyệt sẽ không hiển thị bất kỳ lỗi nào (Firefox) nhưng tôi sẽ gặp curl: (60) SSL certificate : unable to get local issuer certificate
lỗi khi tôi thực hiện yêu cầu cuộn tròn.
Để khắc phục lỗi này, hãy kiểm tra abc-bunde.crt
tệp của bạn . Bạn rất có thể sẽ thấy một cái gì đó như thế này:
-----BEGIN CERTIFICATE-----
/*additional certificate content here*/
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
/*other certificate content here*/
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
/*different certificate content here*/
-----END CERTIFICATE-----
Đây là chứng chỉ trung cấp và gốc của bạn. Xảy ra lỗi vì chúng bị thiếu trong chứng chỉ SSL mà bạn đang cung cấp cho ứng dụng của mình.
Để khắc phục lỗi, kết hợp nội dung của cả hai tệp này theo định dạng này:
-----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-----
Lưu ý rằng không có khoảng trắng giữa các chứng chỉ, ở cuối hoặc ở đầu tệp. Khi bạn cung cấp chứng chỉ kết hợp này cho ứng dụng của mình, vấn đề của bạn sẽ được khắc phục.