Создание ключа GnuPG для apache

Вот сценарий, мы используем GnuPG для шифрования данных между двумя веб-серверами. 1 находится на RHEL. GnuPG будет доступен через скрипты cgi для шифрования и дешифрования. Поэтому мне нужен брелок, доступ к которому имеет пользователь apache. Это оказалось для меня трудным для Red Hat, и я смог легко настроить эту настройку на Ubuntu. Вот что я пытался, может быть, у кого-то есть лучший / более простой способ достичь этого.

Я стал пользователем Apache

su -s /bin/bash apache 

при запуске

 gpg --gen-key 

он не смог создать каталог .gnupg в / var / www, поэтому я создал это и установил для владельца apache.apache. теперь, когда вы создаете ключи, я получаю

 can't connect to `/var/www/.gnupg/S.gpg-agent': No such file or directory gpg-agent[26949]: command get_passphrase failed: Operation cancelled gpg: cancelled by user gpg: Key generation canceled. 

поэтому я создал этот файл, немного прочитав man-страницу (и некоторые поисковые запросы)

 mknod -m 700 S.gpg-agent p 

теперь я получаю

 can't connect to `/var/www/.gnupg/S.gpg-agent': Connection refused gpg-agent[26949]: command get_passphrase failed: Operation cancelled gpg: cancelled by user gpg: Key generation canceled. 

После этого я не смог никуда уйти, поскольку я попадаю в районы, о которых я мало что знаю. Я предполагаю, что это связано с тем, что apache на самом деле не является пользователем с момента создания профиля bash и т. Д. Итак, где я могу перейти отсюда?

3 Solutions collect form web for “Создание ключа GnuPG для apache”

Вы пытались создать нового пользователя и вместо этого использовать команду sudo? Если вы опасаетесь, что это может быть проблема с разрешением, и более простой способ – удалить узел агента из / var / www до того, как мы знаем, доступен пользователю gpg, может быть, директорию / tmp. Вы можете вручную указать местоположение узла агента, изменяя переменную env GPG_AGENT_INFO.

Вероятно, это проблема с разрешением файла устройства. pinentry не использует наследуемые файловые дескрипторы, но пытается получить доступ к переданному TTY напрямую, что не работает.

Вы можете запустить tty в оболочке, а затем ls -l /dev/pts/1 с результатом, и вы, вероятно, заметите, что у apache нет доступа к нему.

Вы также можете запустить

 strace -o gpg.strace -f -e trace=open gpg --gen-key 

и, вероятно, найдет что-то вроде

 open("/dev/pts/1", O_RDONLY) = -1 EACCES (Permission denied) 

Опасное решение состоит в том, чтобы (временно) предоставить apache доступ к root консоли … ( chown apache /dev/pts/1 ). Лучшее решение – сделать реальный логин как apache .

Это влияет только на генерацию ключей. Вы также можете создать пару ключей в качестве другого пользователя, экспортировать его и импортировать в учетную запись apache .

Я подозреваю, что это регресс в отношении этой ошибки https://rhn.redhat.com/errata/RHBA-2011-1096.html

Из исправлений:

Это обновление устраняет следующую ошибку:

  • До этого обновления возникла проблема при вводе пароля с помощью утилиты pinentry-curses; вместо диалогового окна ввода пароля было отображено сообщение об ошибке, если pinentry-curses выполнялся под пользователем, отличным от пользователя, которому принадлежит текущий tty. Эта ошибка была исправлена ​​в этом обновлении, так что теперь не отображается сообщение об ошибке, а pinentry-curses запрашивает пароль, как ожидалось. (BZ # 677665)

Проблема заключается в том, что когда вы su или sudo, tty по-прежнему принадлежит первоначальному владельцу tty, который взрывает булавки.

Отмечу, что мы не смогли создать gpg-ключи, как вчера любой пользователь, кроме root, в системе Cent 6. Чтобы сгенерировать ключи, нам пришлось регистрироваться как root, создавать ключи, копировать .gpg-каталог в домашний каталог пользователя и изменять право собственности.

  • Каков синтаксис файлов /etc/yum.repos.d/*.repo официальных репозиториев RHEL?
  • Установите ANARCI на RHEL 6
  • Обновление ядра Red Hat 9 (Shrike) вручную
  • Получить имя окна в Red Hat GNOME
  • systemd Ошибка при выполнении сценария нереста EXEC: разрешение отклонено
  • Как найти данные установки последнего исправления безопасности?
  • Что не так в этом скрипте bash?
  • Как я могу открыть сетевой интерфейс non-boot (ONBOOT = no) с помощью iproute2?
  • На RHEL 6 у меня, похоже, установлен EPEL, но он не отображается в yum. Как я могу активировать его?
  • Мониторинг питания системы Lenovo x3650 m5 (8871) на RHEL7
  • Какова цель UUID для сетевых адаптеров?
  • Interesting Posts

    Как обновить динамический DNS под OpenWRT?

    Я хотел бы сделать конечный загрузочный USB с несколькими дистрибутивами на нем. Как?

    Способ получения эхо-сигнала TCP / UDP в диапазоне портов

    Можно ли добавить функцию внутри функции?

    Почему default setfacl не работает для вложенных каталогов?

    Существует ли общий способ построения 32-битных проектов на 64-битной системе?

    Управление средой, переданной дочернему процессу bash

    Запустить ssh-соединение при запуске

    Не удается подключиться к домашнему WiFi – проблема DHCP?

    В Unix, как мне получить вывод из команды diff, чтобы выглядеть как справочная страница? Где я могу нажать «b» или «f», чтобы читать дальше или назад?

    Файл cat: отпечатки перед запросом «user: /»

    Кто-нибудь получил какие-либо показатели производительности, сравнивающие IIS и .NET с Cherokee и Mono?

    Bactrack5 + VMWare + Ошибка GNOME

    Некоторая документация для процесса «ext4-rsv-convert»?

    Объединение текстовых файловых каталогов

    Linux и Unix - лучшая ОС в мире.