私もこの問題に遭遇しました。私はこのスレッドを読みましたが、ほとんどの回答は有益ですが、私にとっては非常に複雑です。私はネットワーキングのトピックを経験したことがないので、この答えは私のような人向けです。
私の場合、アプリケーションで使用している証明書の隣に中間証明書とルート証明書を含めなかったため、このエラーが発生していました。
SSL証明書のサプライヤから入手したものは次のとおりです。
- abc.crt
- abc.pem
- abc-bunde.crt
でabc.crt
、ファイル、1つの証明書のみがありました:
-----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-----
証明書の間に、ファイルの最後または最初にスペースがないことに注意してください。この組み合わせた証明書をアプリケーションに提供したら、問題を修正する必要があります。