【问题标题】:Connect to EPP Server with PHP, using SSL使用 SSL 使用 PHP 连接到 EPP 服务器
【发布时间】:2012-01-23 15:16:21
【问题描述】:

我即将连接到安全的 EPP 服务器并发送 XML 请求,然后再次接收 XML 格式的响应。

我需要在 PHP 中执行此操作。所以我需要使用 SSL 证书通过 TCP 连接到特定端口上的 EPP 服务器(因为这是我目前掌握的信息,仍在等待将我的 IP 列入白名单并向我发送证书)。

所以我的问题可能看起来有点愚蠢,但我是否需要使用fsockopencURL 进行连接,如何定义我需要使用 SSL 以及如何定义和使用此 SSL 证书以及那个?

【问题讨论】:

    标签: php ssl


    【解决方案1】:

    好吧,你只需初始化 curl,设置选项并执行 curl 请求:

    $url="your_url";
    $handle = curl_init(); 
    curl_setopt($handle, CURLOPT_URL,$url); 
    curl_setopt($handle, CURLOPT_SSLCERT, $sslcertpath); //$sslcertpath - path to your certificate file
    curl_setopt($oCurl, CURLOPT_SSL_VERIFYPEER, true); //may want to set false for debugging
    //[...]
    $response = curl_exec($handle);
    curl_close($handle);
    
    var_dump($response);
    

    您可以在手册中找到完整的 curl 选项列表: curl_setopt manual

    【讨论】:

    • 谢谢,@Snifff。只是一个后续问题,因为我需要连接到特定端口(700),所以我也只需使用 curl_setopt 指定它,对吗?
    • 是的,使用 CURLOPT_PORT,比如 curl_setopt($handle, CURLOPT_PORT, 700);但你也可以在你的 url 中声明它,在 curl_init 或 CURLOPT_URL 中。
    【解决方案2】:

    卷曲类似于

    CURLOPT_CAINFO=>YOUR_CAINFO_PATH,
    CURLOPT_SSLCERT=>YOUR_CERT_PATH,
    CURLOPT_SSLCERTPASSWD=>YOUR_CERT_PWD_IF_NECESSARY,
    CURLOPT_FOLLOWLOCATION=>1,
    CURLOPT_TIMEOUT=>YOUR_HTTPS_TIMEOUT,
    

    应该做的伎俩

    【讨论】:

    • 谢谢。我会试一试。欣赏它。
    【解决方案3】:
    <?php
    $epp_server = 'ote-console.centralnic.com'; $port = 700; $verify_peer = 0;
    //$epp_server = 'epp.ispapi.net'; $port = 1700; $verify_peer = 0;
    //$epp_server = 'epp.test.norid.no'; $port = 700; $verify_peer = 0;
    //$epp_server = 'epp-test.rotld.ro'; $port = 5555; $verify_peer = 0; // SSLv3
    $opts = array(
        'ssl' => array(
        'verify_peer' => $verify_peer,
        'cafile' => "/CAfiles/gd_bundle.crt",
        'local_cert' => "/certs/certificate.cer",
        'passphrase' => 'YourCertificatePasswordHere'
        )
    );
    
    $context = stream_context_create($opts);
    
    // TLSv1
    
    $fp = stream_socket_client( "tls://$epp_server:$port", $errno, $errstr, 1, STREAM_CLIENT_CONNECT, $context);
    
    // SSLv3
    //$fp = stream_socket_client( "sslv3://$epp_server:$port", $errno, $errstr, 1, STREAM_CLIENT_CONNECT, $context);
    
    if (!$fp) {
        echo "$errstr ($errno)<br />\n";
    }
    
    else {
        fwrite($fp, "GET / HTTP/1.0\r\nHost: www.example.com\r\nAccept: */*\r\n\r\n");
        while (!feof($fp)) {
            echo fgets($fp, 1024);
        }
    
        fclose($fp);
    
    }
    
    ?>
    

    【讨论】:

    • 由于 EPP 不是 HTTP,在 EPP 连接中发送 HTTP 格式的消息肯定行不通...
    猜你喜欢
    • 1970-01-01
    • 2018-12-12
    • 2016-04-27
    • 2012-04-02
    • 2017-01-02
    • 2011-01-01
    • 1970-01-01
    • 2020-09-13
    相关资源
    最近更新 更多