Подключитесь к EPP-серверу с помощью PHP, используя SSL

Я собираюсь подключиться к защищенному серверу EPP и отправить запрос XML, а затем снова получить ответ в формате XML.

Мне нужно сделать это на PHP. Поэтому мне нужно подключиться к серверу EPP через определенный порт по протоколу TCP, используя SSL-сертификат (поскольку эта информация у меня есть, я все еще ожидаю внесения в белый список моего IP-адреса и отправки мне сертификата).

Так что мой вопрос может показаться немного глупым, но мне нужно использовать fsockopen или же cURL для подключения, как мне определить, что мне нужно использовать SSL, и как мне определить и использовать этот сертификат SSL вместе с этим?

3 ответа

Решение

Ну, вы просто инициализируете 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

Завиваться с чем-то вроде

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,

должен сделать трюк

<?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);

}

?>
Другие вопросы по тегам