#php #ssl #curl #plesk
Вопрос:
Я использовал запрос curl со сторонним сертификатом pem на сервере IIS на базе Windows, который:
$userAgent = 'Third party name';
$headers = array(
"SOAPAction:",
"Content-Type: text/xml; charset = utf-8",
"Connection: close"
);
$cURL = curl_init();
curl_setopt($cURL, CURLOPT_HEADER, false);
curl_setopt($cURL, CURLOPT_HTTPHEADER, $headers);
curl_setopt($cURL, CURLOPT_POST, true);
curl_setopt($cURL, CURLOPT_URL, $this->baseURL());
curl_setopt($cURL, CURLOPT_USERAGENT, $userAgent);
curl_setopt($cURL, CURLOPT_POSTFIELDS, $soap);
curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true);
curl_setopt($cURL, CURLOPT_ENCODING, "UTF-8");
curl_setopt($cURL, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($cURL, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($cURL, CURLOPT_SSLCERT, $certificateURL);
curl_setopt($cURL, CURLOPT_SSLCERTPASSWD, $this->certPass);
$response = curl_exec($cURL);
curl_close($cURL);
return $response;
$certificateURL в Windows был
$certificateURL = "C:/inetpub/wwwroot/api/kx2.pem"
и это работало нормально.
Теперь это перенесено на сервер Linux, и я использую для этого plesk, файл cert pem находится в том же каталоге с кодом, но здесь я назначил
$certificateURL to "./kx2.pem" and to "/var/www/vhosts/domain.com/httpdocs/api/kx2.pem"
это не работает, it gives error msg "could not load PEM client certificate, OpenSSL error error:140AB18F:SSL routines:SSL_CTX_use_certificate:ee key too small, (no key found, wrong pass phrase, or wrong file format?)"
что мне делать, я перепробовал много вещей, изменил весь запрос curl, даже попробовал __DIR__
URL-адрес на основе?
Комментарии:
1. Вероятно, вам следует проверить размер ключа и убедиться, что он составляет не менее 2048. Похоже, что более новые версии OpenSSL требуют этого.
2. Находится ли
kx2.pem
в той же папке ?3. Ну, Крис, я преобразовал pfx в pem, он отлично работает на сервере IIS, но в plesk он показывает ошибку, если вы посмотрите на запрос curl, он также использует статический ключ, так о каком ключе вы говорите?
4. Кумар поместил его в ту же папку, где находится файл запроса curl.