Я пробовал это вверх и назад без какого-либо успеха. Национальный отдел регистрации доменов решил изменить всю свою систему на EPP. Их документация очень плохая, но подведу итог:
Приборная панель — полный беспорядок. Я не могу загрузить один и тот же сертификат разным пользователям, я не могу удалить пользователей и т. Д. В любом случае, вы должны подключиться к этому адресу и проверить себя, используя тот же сертификат SSL в запросе (по крайней мере, это то, что я понял), но я не могу заставить его работать. Все мои запросы возвращаются:
Error 7: "Failed to connect to epptest.ficora.fi port 700: Timed out"
Я создал XML для входа в систему на основе документации, которую я отправил в запросе POST.
ini_set('max_execution_time', 300);
set_time_limit(0);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'epptest.ficora.fi');
curl_setopt($curl, CURLOPT_PORT, 700);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $content);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT ,0);
curl_setopt($curl, CURLOPT_TIMEOUT, 400);
curl_setopt($curl, CURLOPT_SSLCERT, __DIR__ . '/certificate.crt');
$output = curl_exec($curl);
echo 'Error ' . curl_errno($curl) . ': "' . curl_error($curl) .'"';
curl_close($curl);
Файл сертификата можно найти, я выполнил тест file_get_contents () и читает OK. Это локальный тест на компьютере с Windows.
Тестируя тот же код на моем (живом) сервере, я получаю:
Error 56: "Recv failure: Connection reset by peer"
Я не знаю, звучит ли это глупо или нет, но должен ли запрос исходить с сервера, с адреса, где используется SSL-сертификат?
Я в полной растерянности с этим относительно того, почему это не работает. Помогите кому-нибудь?
РЕДАКТИРОВАТЬ
Here's the cURL verbose information:
* About to connect() to epptest.ficora.fi port 700 (#0)
* Trying <ip_address>
* connected
* Connected to epptest.ficora.fi (<ip address>) port 700 (#0)
> POST / HTTP/1.1
Host: epptest.ficora.fi:700
Accept: */*
Content-type: text/xml
Content-length: 146
* upload completely sent off: 146 out of 146 bytes
* additional stuff not fine transfer.c:1037: 0 0
* Recv failure: Connection reset by peer
* Closing connection #0
Ответ в конце концов пришел ко мне через другого Stackoverflow сообщение. У меня фактически не было закрытого ключа в сертификате, поэтому мне нужно было создать новый файл .pem (просто текст в любом редакторе) и вставить в него закрытый ключ и сертификат следующим образом:
-----BEGIN RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE----
-----END CERTIFICATE-----
В сертификате должен быть ключ. Все, что у меня было, было их отдельным. Никто на самом деле не указал на это.
ТЕМ НЕ МЕНИЕ! Я не смог сделать эту работу в cURL. Я получил ответ через библиотеку PHP-EPP, которая использует функцию stream_socket_client ().
Я видел два вида ошибок из файла epptest.ficora:
Тайм-аут подключения указывает, что IP-адрес не разрешен для подключения.
Сброс соединения по пиру означает, что сертификат недействителен.
В эти выходные все мои соединения потерпели неудачу из-за сброса соединения другим пользователем. Сегодня (29.8.2016) он снова начал работать, так что это, вероятно, временная проблема. До сих пор я видел успешную аутентификацию с сертификатами сервера CAcert и сертификатами Comodo FreeSSL.
Однако IP-адрес, который я включил два дня назад, все еще заблокирован. Возможно, что автоматическое обновление брандмауэра каждые 8 часов не работает так, как описано в документации, и вам нужно связаться со службой поддержки Ficora ([email protected]), чтобы открыть IP-адрес.
Кроме того, я не верю, что curl поддерживает EPP, поэтому в этом случае он, вероятно, бесполезен. (EPP — это специальный протокол, используемый через TCP-порт 700. Он не основан на HTTP.)