CentOS PHP cURL NSS ошибка 5938

Возникла странная проблема с cURL и PHP на нескольких блоках CentOS.

Локально я использую CentOS 6.3. Пульт - это CentOS 5.9

Локально, ящик получает запрос, scp файл на удаленный сервер, а затем выполняет запрос cURL через PHP на удаленный сервер, чтобы отправить некоторую информацию. Запрос всегда терпит неудачу с первой попытки дня. Последующие запросы работают нормально. Remote имеет действительный сертификат SSL - даже при этом отключение сертификата и проверка хоста не решают проблему.

Регистрация не была очень полезна. Превращая многословие до 11, наиболее значимые записи таковы:

* About to connect() to www.example.com port 443 (#0)
*   Trying 203.0.113.10... * connected
* Connected to www.example.com (203.0.113.10) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
*   CAfile: /etc/pki/tls/certs/ca-bundle.crt
  CApath: none
* NSS error -5938
* Closing connection #0
* SSL connect error

Погуглить ошибку тоже мало поможет. Похоже, в твиттере возникла похожая проблема ( https://dev.twitter.com/discussions/1549), которую они, по-видимому, исправили, но не уточнили, как ее исправить.

Буду признателен за любые идеи о том, где искать / что делать, чтобы смягчить проблему.

3 ответа

Решение

Это общая проблема для curl, скомпилированного с NSS (только пакеты redhat-linux, debian и suse curl, скомпилированные без nss). вам нужно скомпилировать curl из исходников без nss-библиотеки.

Итак, у меня нет решения, как https-соединения работали с nss-curl.

curl - версия curl 7.29.0 (x86_64-redhat-linux-gnu) libcurl / 7.29.0 NSS / 3.14.3.0 zlib / 1.2.7 libidn / 1.26 libssh2 / 1.4.3 Протоколы: файл dict ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp scp sftp smtp smtps telnet tftp Особенности: AsynchDNS GSS-согласование IDN IPv6 большой файл NTLM NTLM_WB SSL libz

curl --version curl 7.25.0 (x86_64-suse-linux-gnu) libcurl / 7.25.0 OpenSSL / 1.0.1e zlib / 1.2.7 libidn / 1.25 libssh2 / 1.4.0 Протоколы: файл dict ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp scp sftp smtp smtps telnet tftp Особенности: AsynchDNS GSS-согласование IDN IPv6 большой файл NTLM NTLM_WB SSL libz TLS-SRP

Я столкнулся с подобной "ошибкой NSS -5938" при использовании устаревшей системы CentOS 6.x для подключения к встроенному устройству, которое прекратило принимать TLS 1.0, разрешив только TLS 1.1 и выше. Решением для меня было сделать yum update, Я видел эти обновления произошли:

---> Package curl.x86_64 0:7.19.7-46.el6 will be updated
---> Package curl.x86_64 0:7.19.7-52.el6 will be an update
...
---> Package nss.x86_64 0:3.21.0-0.3.el6_7 will be updated
---> Package nss.x86_64 0:3.21.3-2.el6_8 will be an update

Я думаю, что это может быть конкретное изменение, которое помогло:

$ rpm -q --changelog curl
[...]
* Mon Jan 11 2016 Kamil Dudka <kdudka@redhat.com> 7.19.7-50
- use the default min/max TLS version provided by NSS (#1289205)

Сообщение об ошибке NSS 5938 обычно означает, что сервер прервал ваше соединение. Вы должны проверить журналы на стороне сервера цели curl, чтобы увидеть, почему ваше соединение было разорвано.

Это может быть что-то такое простое, как "не удалось получить обратное имя хоста DNS для X".

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