curl: (77) pbm с сертификатом SSL CA (путь? Права доступа?)

Стандартное де-юре расположение временных файлов задается в переменной среды TMPDIR .

Эта переменная должна представлять путь к каталогу, доступному для программ, которым требуется место для создания временных файлов.

Фактически, многие системы не определяют TMPDIR . Стандартное фактическое расположение временных файлов - / tmp . Поэтому проверьте TMPDIR , и если он не установлен, используйте / tmp . В сценарии оболочки вы можете использовать $ {TMPDIR: - / tmp} , или, если вам удобнее,

if [ -z "$TMPDIR" ]; then TMPDIR=/tmp; fi

или справиться с set -u

: "${TMPDIR:=/tmp}"

Вы можете предположить что это место доступно для записи, но оно может быть доступно для чтения и записи всем, поэтому:

  • Когда вы создаете обычный файл, всегда убедитесь, что вы не перезаписываете существующий файл, который может вам не принадлежать. Не используйте для этого перенаправление оболочки. Проверять владение отдельно небезопасно, потому что злоумышленник может перемещать символические ссылки во время работы вашей программы, чтобы обмануть проверки. Кроме того, вы не можете полагаться на конкретное имя, которого не существует; Чтобы предотвратить одновременную программу от создания отказа в обслуживании путем создания файла с тем же именем непосредственно перед вами, используйте случайное имя. Вы можете использовать утилиту mktemp (широко распространена, присутствует в GNU, BusyBox, BSD, но не POSIX) или библиотечную функцию mkstemp C. Под капотом open или creat должны вызываться с флагом O_EXCL .
  • Вы можете создать каталог с помощью mkdir . Это безопасно от обмана прав собственности, потому что при этом не будет повторно использоваться существующий файл, но он подвержен тому же отказу в обслуживании, что и обычные файлы, поэтому вы должны использовать случайное имя. mktemp -d - отличный способ сделать это.
  • Вы можете создать сокет (для этого нет стандартной утилиты оболочки). Как и в случае с каталогом, он защищен от обмана владельцев, но не от отказа в обслуживании.
    Linux учитывает разрешения для именованных сокетов, но есть варианты Unix, которые этого не делают. Вот почему сокеты в / tmp обычно создаются в подкаталогах.

Программы, которые создают подкаталог / tmp (или $ TMPDIR , если установлен) и создают в нем именованный сокет, включают серверы X11, ssh-agent, gpg-agent, KDE, emacs,… (это только те, которые существуют на машине, на которой я публикую это). Как видите, вы попадете в хорошую компанию.

2
14.03.2016, 12:34
2 ответа

Вы можете попробовать переустановить пакет ca-сертификатов и пакет openssl на своем сервере:

$ sudo yum reinstall ca-certificates openssl
5
27.01.2020, 21:56

У меня это сработало (на машине CentOS 6):

mkdir /usr/src/ca-certificates && cd /usr/src/ca-certificates

wget http://mirror.centos.org/centos/6/os/x86_64/Packages/ca-certificates-2015.2.6-65.0.1.el6_7.noarch.rpm

rpm2cpio ca-certificates-2015.2.6-65.0.1.el6_7.noarch.rpm | cpio -idmv

cp -pi ./etc/pki/tls/certs/ca-bundle.* /etc/pki/tls/certs/

Ответьте «да», чтобы перезаписать файлы.

Для проверки:

curl -vvv https://www.unixy.net
0
27.01.2020, 21:56

Теги

Похожие вопросы