php curl -k または --insecure, -X 質問する

php curl -k または --insecure, -X 質問する

PHP と curl を使用して、プロキシ経由で SSL で保護されたサイトに接続し、証明書の警告を無視する必要があります。私の curl コマンド ラインは次のようになります。

curl -k -u username:password -X GET https://someURL

curl.php を調べてみると、設定すべき正しいオプションが見つかります。その結果、次のようになります。

  $ch = curl_init("https://someURL");
  curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // Ignore cert errors?
  curl_setopt($ch, CURLOPT_PROXY, true);           // Proxy true?
  curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");     
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);            
  curl_setopt($ch, CURLOPT_USERPWD, "username:password");      
  $result = curl_exec($ch);

しかし、$result は常に false を返します。パスワードに特殊文字「!」が含まれています。おそらく、これをエスケープする必要がありますか? それ以外に、何かアイデアはありますか?

ベストアンサー1

SSL 証明書のチェックを完全に無効にするには、curl はオプション を認識しますCURLOPT_SSL_VERIFYPEER。 に設定すると、false証明書のチェックはまったく無効になります。デフォルト値は なのでtrue、以下を追加する必要があります。

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

からPHPドキュメント:

CURLOPT_SSL_VERIFYPEERcURL がピアの証明書を検証しないようにするには FALSE にします。検証する代替証明書は CURLOPT_CAINFO オプションで指定でき、証明書ディレクトリは CURLOPT_CAPATH オプションで指定できます。cURL 7.10 以降ではデフォルトで TRUE です。cURL 7.10 以降ではデフォルトのバンドルがインストールされます。

証明書のチェックが無効になっている場合は、CURLOPT_SSL_VERIFYHOST設定を省略できることに注意してください。次の行は削除できます。

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

また、次の設定で問題ないか尋ねられました:

curl_setopt($ch, CURLOPT_PROXY, true);

からPHPドキュメント:

リクエストをトンネリングする HTTP プロキシ。

プロキシを使用している場合は、「192.168.0.1:3128」のようなプロキシアドレスを受け入れることを意味します。trueこの場合は意味がありません。

おすすめ記事