Доброго дня.
Никак не могу решить проблему с ответом по https phpшным скриптом через curl.
Изначально предполагалось, что обмен будет происходить по 80ке, просто http запросами, что и было отлажено на тестовой машине.
На боевой, оказалось, что исполняемый скрипт, посылающий мне запросы, подгружается немного дальше, чем я думал, и запросы мне приходят по https, от tomcat`а (вроде апача с ява-интерпритатором, насколько я понимаю).
Собственно сама проблема в том, что все проверки сертификатов, и прочая, отключены, но ответить я никак не могу.
Первая ошибка, с которой столкнулся — curl error 35: unknown SSL protocol error in connection.
После этого выставил curl setopt, отключив проверку сертификатов хоста и юзера, стал получать handshake failure.
Перепробовал вручную указывать версию ssl, попробовал отключать лишние в httpd/ssl.conf, абсолютно ничего не помогает.
Это мой, практически первый опыт работы с curl, и тут сразу такие штуки.
Есть какие-то особенности в процессе соединения обычного php курлом с томкэтом по ssl, видимо?
ERROR SND REQUEST. ERR = 60
TO: https://11.22.33.44:10443/xxx/xxx/basichttp.php
DESC: SSL certificate problem, verify that the CA cert is OK
DETAILS: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
Версию тоже пробовал указывать принудительно.
url сейчас не смогу кинуть, не рядом с машиной, где работал. В самом адресе смысла нет — там закрытая сеть, приходят запросы с адреса вида https://10.20.30.40:10443/
Раз все что написали выше не помогло, есть еще варианты.
1. Раз не помогло curl_setopt($ch, CURLOPT_SSLVERSION, 3); попробуйте заменить на curl_setopt($ch, CURLOPT_SSLVERSION, 1);
2. Не помню из-за чего, но когда-то я ооооочень долго ловил какую-то ошибку, поводом для которой оказалось что библиотеки OpenSSL для апача и php были для разных версий — как только я привел их к одной версии все стало ок
3. Откатите OpenSSL к более старой версии — это тоже помогает в некоторых случаях