22

私は開発サーバーで問題を抱えていました。cURL は HTTP とは完全に連携しますが、HTTPS とは正しく機能しません。異なるプロトコルを使用したまったく同じリソースであっても (テストのために、両方の HTTP を使用して google.com を要求しています)。および HTTPS)。

返される cURL エラーは 35 です。

SSL/TLS ハンドシェイクのどこかで問題が発生しました。

私はソリューションのためにWebとSOをくまなく調べましたが、それらはすべてCURLOPT_SSL_VERIFYPEERをfalseに設定するか、証明書ファイルをダウンロードしてCURLOPT_CAINFOをそのパスに設定し、これも何も変更しませんでした。

証明書を設定するときは、このチュートリアルこのチュートリアルの指示に従い、要求しているリソースの証明書のダウンロードと、証明書バンドルのダウンロードの両方を試みました。

また、CURLOP_PORTを明示的に443に設定しようとしました。質問を完全にするために、設定した他のオプションはCURLOPT_VERBOSE = true、CURLOPT_RETURNTRANSFER = true、およびCURLOPT_SSL_VERIFYHOST = 2です(1と2のすべての組み合わせとVERIFYPEERの両方をtrueにしましたおよび偽)。phpinfo()また、OpenSSL があり、有効になっていることも確認しました。

前回の実稼働サーバーで完全に機能した多くの古いコードを使用しているため、このコードは以前にも機能していました。しかし、そのホスティングは共有ホスティングであり、そこでの構成のほとんどを知りません。

4

4 に答える 4

12

これはどう。HTTPS の Google ホームページと思われるものを取得します。(証明書の検証を無効にしたので、それが本物の Google ホームページかどうかを実際に知る方法はありません。)

<?PHP

// connect via SSL, but don't check cert
$handle=curl_init('https://www.google.com');
curl_setopt($handle, CURLOPT_VERBOSE, true);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, false);
$content = curl_exec($handle);

echo $content; // show target page
?>
于 2012-03-21T01:35:51.643 に答える
0
var_dump( curl_error($ch) );

エラーを教えてくれます。違う原因かもしれません。

于 2019-12-02T22:03:53.213 に答える