0

これは2日間私を夢中にさせてきました.curlを使用して、以下に詳述する2つのPHP関数があります。それらはまったく同じ「XMLゲートウェイ」を指しています。唯一の違いは、一方がSSLを介してそれを実行しようとしており、もう一方が暗号化されていないHTTPを介して実行しようとしていることです。

HTTP コネクタ オペレータは期待どおりに動作し、XML ファイルを送信してサーバーの応答を返します。

SSL コネクタは非常にあいまいな「内部サーバー エラーが発生しました。後でもう一度やり直してください。」私の lighttpd エラー ログには何も表示されません。

それが私のWebサーバー構成/openSSL構成かどうか疑問に思っています。どちらも Debian Wheezy 標準パッケージです。SSL_VERIFYPEER と HOST が販売に設定されていることは安全ではありませんが、オプションを使い果たしようとしています。

openssl s_client -connect xmlgw.companieshouse.gov.uk:443 -ssl3

コマンドライン機能

curl https://xmlgw.companieshouse.gov.uk/v1-0/xmlgw/Gateway

Web サーバーでも期待どおりに動作します。

PHP 関数:

//SSL post function

public function getSSLCurlResponse($xml) {
    $url = "https://xmlgw.companieshouse.gov.uk/v1-0/xmlgw/Gateway";

    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSLVERSION,3);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

    $response = curl_exec($ch);
    curl_close($ch);
    return $response;
}

//HTTP non SSL function
public function getCurlResponse($xml) {
    $url = "http://xmlgw.companieshouse.gov.uk/v1-0/xmlgw/Gateway";

    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    $response = curl_exec($ch);
    curl_close($ch);
    return $response;
}

どんな助けでも本当に感謝します!

ありがとう

4

1 に答える 1

-1

これはサーバーへの全体的な接続のエラーであると結論付けましたが、それを証明する方法は見つかりませんでした。SSLソケットを使用せずに代替ソリューションを見つけることができました。

于 2013-10-09T14:28:26.130 に答える