3

問題がありました。CURL ライブラリを含む POST 要求を HTTPS に送信すると、次のエラーが表示されます: SSL 証明書に問題があります。CA 証明書に問題がないことを確認してください。詳細: エラー: 14090086: SSL ルーチン: SSL3_GET_SERVER_CERTIFICATE: 証明書の検証に失敗しました。現在の証明書を使用しています。http://www.startssl.com/certs/およびhttp://curl.haxx.se/docs/caextract.htmlからさまざまな証明書を試し ました エラーの原因を教えてください。コード POST リクエストは次のとおりです。

        curl_setopt($process, CURLOPT_USERAGENT, $this->user_agent);
    curl_setopt($process, CURLOPT_COOKIEFILE, $this->cookie_file);
    curl_setopt($process, CURLOPT_COOKIEJAR, $this->cookie_file);
    curl_setopt($process, CURLOPT_ENCODING , '');
    curl_setopt($process, CURLOPT_CONNECTTIMEOUT, 120); 
    curl_setopt($process, CURLOPT_TIMEOUT, 120);
    curl_setopt($process, CURLOPT_PROXY,$this->proxy);
    curl_setopt($process, CURLOPT_POSTFIELDS, $data);
    curl_setopt($process, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($process, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($process, CURLOPT_POST, 1);
    curl_setopt($process,CURLOPT_VERBOSE,1);

    if($ssl){
        curl_setopt ($process, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt ($process, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($process ,CURLOPT_CAINFO, YiiBase::getPathOfAlias('webroot').'/files/GTECyberTrustGlobalRoot.crt');
    }
    curl_setopt ($process, CURLOPT_HTTPHEADER, array('Expect:'));
    $return = curl_exec($process);

    $this->error_code = curl_getinfo($process,  CURLINFO_HTTP_CODE);
4

1 に答える 1

6

これが実際の例です。オプションを確認し (テスト用のオプションの数を減らします) CURLOPT_SSL_VERIFYPEER、CA チェックを無効にするために false に設定する必要があります。

// 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

ここをチェック

于 2013-03-04T13:12:31.407 に答える