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
この場合は意味がありません。