メンバーメニュー

ようこそ、ゲストさん

トップ > カテゴリ一覧 > ファイアバード > PHPでhttpsのページを読み込めません

質問

  • PHPでhttpsのページを読み込めません
  • 本文:

    file_get_contentsでhttpsのページを読み込もうとしたのですが、エラーを吐いてしまい(@を付けてエラーを消しても読み込めない状態)curlも使ったのですが、どちらも
    error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
    となって読み込めません。
    httpのページは読み込めました。
    httpsのページを読み込む事はできませんか?

  • 緊急度:通常投稿者:mcpeさん投稿時間:2015/10/06 12:47
質問に対する回答は締め切られました

回答 No.3925

  • この回答がベストアンサーです

  • 本文:

    >まあ、どのみち、
    >curl_setopt($ch,CURLOPT_VERBOSE,true);
    >を指定しないと、まともな記録は取れませんが。。

    と書いたのに、このオプションを付けてないでしょう?

    > PHPのバージョンは5.3.3
    > OSはfirebirdの物でCentOS release 5.11 (Final)です

    それは、古すぎです。
    その頃の php / openssl は。
    SSLv3 で失敗したときに、TLSに切り替えるロジックにバグがあります。

    php は、5.5以上に、opensslは最新のものでお試しあれ。

  • 投稿者:ジョバンニさん 投稿時間:2015/10/08 22:14
質問者からのコメント

curl_setopt($ch,CURLOPT_VERBOSE,true);
は書きましたが表示が変わりませんでした
PHPは5.5にしましたが、表示は変わりませんでした
opensslはバージョンを変えることができないので、
別の方法を使う事にします…
ありがとうございました。

回答 No.3913

  • 本文:

    たとえば、

    https://www.google.co.jp/

    というページも読み込めないのでしょうか?

  • 投稿者:k-tanさん 投稿時間:2015/10/06 13:13
質問者からのコメント

すみません…
書き忘れていたのですが、Google等の一部のページは読み込めました

回答 No.3915

  • 本文:


    > error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure

    どういうプログラムを書いていて、どこにアクセスしているのかわからないと、断定はしにくいですが、最近は、SSLV3 でのアクセスは禁止していて、TLSでのアクセスしか受け付けないところが多いですよ。
    ( 勿論、SSLv3の暗号化は、弱過ぎて危険だからという理由ですが )

  • 投稿者:ジョバンニさん 投稿時間:2015/10/07 06:52

回答 No.3922

  • 本文:

    > curlも使ったのですが、

    curl -v https://... とか
    curl -v --tlsv1.0 https://... とか
    curl -v --sslv3 https://... とかの結果はどうなりますかね?

  • 投稿者:ジョバンニさん 投稿時間:2015/10/08 15:41
質問者からのコメント

$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, $url );
curl_setopt( $ch, CURLOPT_HEADER, false );
curl_setopt( $ch,CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($ch, CURLOPT_SSLVERSION, 1);
curl_setopt($ch, CURLOPT_SSL_CIPHER_LIST, "TLSv1");
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true);
curl_setopt($ch,CURLOPT_MAXREDIRS,10);
curl_setopt($ch,CURLOPT_AUTOREFERER,true);
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
curl_setopt( $ch, CURLOPT_TIMEOUT, $timeout );
$result = curl_exec( $ch );
var_dump(curl_error($ch));
curl_close( $ch );
のようにしてもエラーを吐きました

回答 No.3923

  • 本文:

    日本語が通じない人なのかな?

    > のようにしてもエラーを吐きました

    エラーになることは最初から判っているので、
    『どういうエラーなのか?』
    を聞いているんですけどね。
    3パターンについてそれそれどうなるか?

    まあ、どのみち、
    curl_setopt($ch,CURLOPT_VERBOSE,true);
    を指定しないと、まともな記録は取れませんが。。

    curl_setopt($ch,URLOPT_SSLVERSION,CURL_SSLVERSION_SSLv3);
    をつけた場合と、
    curl_setopt($ch,URLOPT_SSLVERSION,CURL_SSLVERSION_TLSv1_0);
    を付けた場合に、それぞれどうなりますか?

    ログを「正確にかつ省略せず」引用してごらん。

    # ま、OSのバージョンとか、phpのバージョンとか、opensslの
    # バージョンとかも書いた方がいいですよ。

  • 投稿者:ジョバンニさん 投稿時間:2015/10/08 21:19
質問者からのコメント

Warning: curl_setopt() expects parameter 2 to be long, string given in /home/mcpe/mcpe.firebird.jp/public_html/test/me.php on line 48
string(80) "error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure" NULL

どちらを書いてもこのようなエラーになりました。
PHPのバージョンは5.3.3
OSはfirebirdの物でCentOS release 5.11 (Final)です