2012-04-08 22 views
2

pear http_request2($ url)クラスを使用してhttpsリクエストを作成します。 http要求は作成できますが、httpsは作成できません。ウェブサイトはhttpとhttpsの両方を促進します。 httpsに応答するサーバーの問題はありません。 HTTPSリクエストを行うことが絶対にできPHPを使用してhttpsリクエストを行う方法Http_Request2()

$egm=(string) Unable to connect to ssl://collegedb2.ferryfair.com:443. Error: stream_socket_client(): unable to connect to ssl://collegedb2.ferryfair.com:443 (Unknown error)

+0

ヘルプplzz、私のためにその非常に重要なのは、 – neckTwi

+0

それは、SSL証明書が正しく設定/インストールされていないようだ、私は次のエラーを取得する:ssl_error_rx_malformed_certificate(SSL3_GET_SERVER_CERTIFICATE:できない公開鍵のパラメータを見つけるために) – stewe

+0

uは、HTTPS接続を試みました:/ /collegedb2.ferryfair.com ??私たちのローカルネットワーク上でのみ利用可能です。サーバー上のSSL証明書が正しくインストールされています。問題はhttp_request2クラスであり、https要求を行うことができません。 opensslはphpinfo() – neckTwi

答えて

0

HTTP_Request2さ:

require 'HTTP/Request2.php'; 
    $url = 'https://collegedb2.ferryfair.com'; 
    $r = new Http_Request2($url); 
    $r->setMethod(HTTP_Request2::METHOD_POST); 
    try { 
     $response = $r->send(); 
    } catch (Exception $exc) { 
     $es = $exc->getTraceAsString(); 
     $ets=$exc->__toString(); 
     $egc=$exc->getCode(); 
     $egl=$exc->getLine(); 
     $egm=$exc->getMessage(); 
     $egt=$exc->getTrace(); 
     $response = null; 
    } 
    $page = $response->getBody(); 
    echo $page; 

これはエラーMSGです。おそらく深いエラーがあります。問題を引き起こすカスタムSSL証明書。

Wiresharkをインストールし、実際にどのエラーが発生しているのかを確認してください。それをポストする。

+0

thanq cweiskeでチェックされていますが、しばらくの間この問題を解決しませんでした。ターゲットWebアプリケーションは自己署名SSL証明書を使用しています。私は私のWebアプリケーションで証明書をインストールする必要がありますと思う。私はどのようにdonno。私はそれについて多くのことをgoogled、最終的にあきらめた。私はここで助けが必要です。 – neckTwi

+0

証明書の検証を無効にするか、http://pear.php.net/manual/en/package.http.http-request2.config.phpのオプションを参照するか、(CA)の公開証明書をインストールするか自己署名証明書に署名しました。 – cweiske

+0

thanq。 ssl_local_certまたはssl_capathパラメータでターゲットWebアプリケーションのSSL証明書を使用する方法私は完全にssl_local_certパラメータを理解していない、それはターゲットWebアプリケーションのSSL証明書のファイル名を与えられるべきですか? – neckTwi

9

証明書の確認を無効にするコメントが私にとって重要でした。

$request = new HTTP_Request2('https://someserver.com/somepath/something', 
    HTTP_Request2::METHOD_POST); 

$request->setConfig(array(
    'ssl_verify_peer' => FALSE, 
    'ssl_verify_host' => FALSE 
)); 
+0

私はターゲットサーバ証明書を持っています。私は証明書を確認したい。あなたがターゲットを確認するのに成功すれば投稿してください。 – neckTwi

+1

しかし、あなたは邪悪の根をただ抑圧していることを常に覚えておいてください。 – Jeredepp

3

この問題が発生しました。 (私にとっては)修正は、たとえば、アダプタとしての「カール」を使用していた。また、

$request = new Http_Request2('https://whatever'); 
$request->setAdapter('curl'); 
$response = $request->send(); 

を参照してくださいどこに

Peer verification is likely to fail if you don't explicitly provide ssl_cafile and/or ssl_capath, especially with Socket adapter.

はおそらくカールが知っていると言うhttp://pear.php.net/manual/en/package.http.http-request2.config.phpの「SSLパラメータ」セクション信頼するローカルCAファイルを見つけます。

(PHP 5.4.38、カール)接続時に

+0

ああ、ありがとう。これでCURLを使用してすべてのリクエストを書き直すことに心配することはありません。 ;-) – Leo

関連する問題