Applicable to:
- Plesk for Linux
Symptoms
The following error is shown while trying to perform curl request to any https service:
# curl -I -v https://api.example.com
* About to connect() to api.example.com port 443 (#0)
* Trying fe20:2880:f012:1:face:b00c:0:1...
* Connected to api.example.com (fe20:2880:f012:1:face:b00c:0:1) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* Unable to initialize NSS database
* Initializing NSS with certpath: none
* Unable to initialize NSS
* Closing connection 0
curl: (77) Problem with the SSL CA cert (path? access rights?)
The user has chrooted shell.
Cause
Missing SSL libraries in a chrooted environment.
Resolution
Connect to the server via SSH and copy the following libraries to your domain's chrooted environment:
# cp /lib64/libsoftokn3.so /var/www/vhosts/example.com/usr/lib64/
# cp /usr/lib64/libsqlite3.so.0 /var/www/vhosts/example.com/usr/lib64/
# cp /usr/lib64/libsqlite3.so.0.8.6 /var/www/vhosts/example.com/usr/lib64/
# cp /usr/lib64/libfreeblpriv3.so /var/www/vhosts/example.com/usr/lib64/
If the issue persists, copy strace utility to chrooted user and find what libraries are missing in an environment:
# cp /usr/bin/strace /var/www/vhosts/example.com/usr/bin/
# su chrooted_user
# strace curl -I -v https://api.example.com
Comments
12 comments
hi
I have same error on centos 7 php 5.6 curl https request
how can I fix it?
Константин, решение описано для данного случая в статье. Если у вас возникли какие то дополнительные проблемы - опишите их.
есть тривиальный пхп скрипт, который запрашивает https страницу
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
//curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
//curl_setopt($ch, CURLOPT_CAINFO, 'cacert.pem');
curl_setopt($ch, CURLOPT_SSLVERSION, 3);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$returnInfo = curl_exec($ch);
скрипт запускается на центос7, и я получаю такую ошибку
Initializing NSS with certpath: sql:/etc/pki/nssdb
* Unable to initialize NSS database
* Initializing NSS with certpath: none
* Unable to initialize NSS
* Closing connection 0
этот же скрипт нормально отрабатывает на центос6(там тоже nss только ниже версия) и на убунту 16
что делал на центос7- снес пхп и ставил 5.6, 7.0, 7.1, копировал /etc/pki/nssdb с центос6 на центос7 но ничего не помогло
в итоге удалил каталог /etc/pki/nssdb на центос7 и заработало
вопрос-как правильно решить мою проблему?
@Константин, вышеупомянутая инструкция не решила проблему? Вы включили chrooted environment для пользователя под которым выполняется данный скрипт?
пхп скрипт выполняет апач
в статье не понятное решение-
у меня нету такого пути для копирования,
@Константин
Здравствуйте,
во всех командах "example.com" нужно заменить на реальное название домена, на котором наблюдается подобное поведение.
Если у Вас отсутствует
То перед копированием установите утилиту strace командой:
у меня нету пути
/var/www/vhosts
ls /var/www
cgi-bin error html icons usage
find / -type d -name vhosts не нашло
@Константин
/var/www/vhosts - это стандартное расположение доменов в Plesk.
Возможно, на Вашем сервере, домены перенесены в другую папку, это могло быть сделано с применением данной статьи.
В таком случае /var/www/vhosts/example.com следует заменить на на директорию, где фактически находится домен на Вашем сервере.
Также рассмотрите возможность создать заявку в Техническую Поддержку Plesk.
у меня панель sentora а не плеск
но разве это зависит от панели?
@Константин
У различных хостинг панелей расположение директорий виртуальных хостов может отличаться.
В данной статье описано решение в случае если chroot включен для подписки в Plesk.
Пожалуйста обратитесь в техническую поддержку Sentora для выяснения причины на Вашем сервере.
хотелось бы понять принцип решения проблемы
панель это же по сути лишь средство управления сервером
я например не пойму как копирование файлов so в каталог сайта
/example.com/usr/lib64/ поможет решить проблему?
врядли апач будет там их искать
@Константин
Сhrooted environment предполагает отсутствие доступа куда-либо, кроме файлов, содержащихся в каталоге домена.
NSS - библиотеки для работы SSL, TLS.
При активации Chrooted environment на подписке библиотеки должны находиться в директории подписки (для Plesk это /var/www/vhosts/example.com/usr/lib64/), иначе доступ до этих библиотек будет отсутствовать.
Также обратите внимание, что недавно был выпущен Plesk 17.8, попробовать его можно совершенно бесплатно, триальная лицензия активируется сразу после установки на 14 дней.
Для дальнейшего решения проблемы с Sentora обратитесь в их техническую поддержку.
Please sign in to leave a comment.