Пакет для работы с proxy-сертификатами и MyProxy

Инсталляция

Затягиваем на свою машину файл http://rep.grid.kiae.ru/gridnnn/rhel5.repo и помещаем его в /etc/yum.repos.d. Далее с помощью YUM ставим два пакета, ngrid-proxytool и ca_GridNNN. Сама утилита называется proxytool и находится в /usr/bin.

Есть RPM-пакеты ngrid-proxytool-debuginfo, который экспортирует отладочные символы для proxytool. Если у вас возникают проблемы и вы их можете повторить под отладчиком, то debuginfo-пакеты могут сильно помочь понять, где именно и что было плохо в коде.

История версий RPM-пакетов, относительно версий в Subversion.

Сборка из исходных кодов

Репозиторий клонируется из репозитория Subversion, https://svn.ngrid.ru/proxytool/trunk.

Если вы собираете Proxytool с Globus Toolkit, который был компилирован локально или это была двоичная сборка от globus.org, то команды сборки такие:

make
make PREFIX=/your/favorite/prefix install

Если вы собираете Proxytool c Globus Toolkit, который происходит из репозиториев EPEL (для сборки вам потребуются RPM-пакеты myproxy и myproxy-devel; для работы -- только myproxy), то сборка производится командами

make WITH_EPEL=y
make PREFIX=/your/favorite/prefix install

Поддержка VOMS

Proxytool умеет работать с VOMS; реализация на момент r907 может вставлять в каждый proxy-сертификат расширения VOMS только для одной виртуальной организации; сейчас в сертификат вставляются аттрибуты всех групп, в которых пользователь есть для данной VO -- это всегда делается сервером VOMS и не может быть переделано, ибо предписывается стандартом. Реализация полного выбора нужных FQAN (ролей) делается с помощью ключа -V<VO>:<FQAN>; в рамках работы с одним proxy-сертификатом возможно опрашивать только один VOMS-сервер.

До устранения проблемы #580 или обнаружения проблем в самом Proxytool, все команды, которые запрашивают несколько ролей, будут возвращать только первый из FQAN-ов.

Для общения с VOMS у нас сейчас используется реализация из org.glite.security.voms, она доступна в репозитории EPEL:

Достаточно поставить оба пакета только для "родной" комбинации операционной системы и архитектуры (версии для CentOS 4 -- для Globus Toolkit, собранного для RHAS 4).

Настройка данных для VOMS

Proxytool ищет файлы с конфигурацией серверов виртуальных организаций в /etc/grid-security/vomses, в каталоге /etc/grid-security/vomsdir лежат описания DN серверов VOMS и УЦ, которые подписали эти сертификаты. Внутри дистрибутива Proxytool есть сценарий tools/voms-installer.sh, который создает конфигурацию VOMS-серверов для виртуальных организаций "testbed" и "gridnnn".

Если говорить коротко, то у каждой виртуальной организации внутри каталога /etc/grid-security/vomses должен быть файл, называющийся также, как и виртуальная организация, и имеющий внутри следующее содержимое (пример для VO gridnnn):

"gridnnn" "voms.ngrid.ru" "15002" "/C=RU/O=NanoGrid/OU=hosts/OU=sinp.msu.ru/CN=voms.ngrid.ru" "gridnnn" "24"

А внутри каталога /etc/grid-security/vomsdir для каждой VO должен быть каталог, называющийся как сама VO и имеющий внутри файлы, с расширением ".lsc" (например, /etc/grid-security/vomsdir/testbed/voms.ngrid.ru.lsc):

/C=RU/O=NanoGrid/OU=hosts/OU=sinp.msu.ru/CN=voms.ngrid.ru
/C=RU/O=NanoGrid/CN=NanoGrid CA

voms-installer.sh делает чуть хитрее: он создает файл /etc/grid-security/vomsdir/voms.ngrid.ru.lsc, а в подкаталогах для каждой VO cоздает символическую ссылку на этот файл. Получается то же самое, только изменять DN сервера VOMS и CA становится удобнее, поскольку не нужно менять файл для каждой VO, а достаточно переписать только один мастер-файл.

Использование, локальные команды

init

Создает локальный proxy-сертификат из ключевой пары.

Параметры командной строки:

  • -k файл: задает месторасположение закрытого ключа;
  • -c файл: задает месторасположение сертификата;
  • -p файл: выходной файл для proxy-сертификата;
  • -P | #fd: указывает, что пароль для закрытого ключа нужно брать из указанного файла или из указанного файлового дескриптора;
  • -v HH:MM: задает время действия proxy-сертификата;
  • -b число: задает размер закрытого ключа proxy-сертификата в битах;
  • -V <имя_VO>:<FQAN>: задает имя виртуальной организации и FQAN, для которых будет получаться VOMS-расширение.

info

Выдает информацию о локальном proxy-сертификате.

Параметры командной строки:

  • -p файл: задает месторасположение proxy-сертификата.

destroy

Уничтожает proxy-сертификат.

Параметры командной строки:

  • -p файл: задает месторасположение proxy-сертификата.

Использование, команды для общения с MyProxy

Имя сервера MyProxy (и порт, если он не является стандартным) также могут быть указаны в переменной окружения MYPROXY_HOST. Это верно для всех команд, взаимодействующих с MyProxy.

store

Помещает proxy-сертификат на сервер MyProxy.

Параметры командной строки:

  • -k файл: задает месторасположение закрытого ключа;
  • -c файл: задает месторасположение сертификата;
  • -P | #fd: указывает, что пароль для proxy-сертификата на MyProxy нужно брать из указанного файла или из указанного файлового дескриптора;
  • -v HH:MM: задает время действия proxy-сертификата, который будет находиться на сервере MyProxy;
  • -M HH:MM: задает максимальное время действия делегированных с MyProxy сертификатов;
  • -m узел: задает имя сервера MyProxy в формате узел:порт или просто как имя узла;
  • -n: указывает, что proxy-сертификат, делегируемый на MyProxy, не будет защищен паролем;
  • -l login: задает имя пользователя для сервера MyProxy; по-умолчанию используется DN пользовательского сертификата;
  • -N DN: разрешает пользователю с данным DN обновлять локальный proxy-сертификат, используя сервер MyProxy; операция обновления не требует ввода пароля к сертификату на MyProxy;
  • -T DN: разрешает пользователю с данным DN получать сертификат с сервера MyProxy; для получения сертификата требуется ввести пароль.

Параметры -N и -T могут быть указаны несколько раз.

fetch

Забирает делегированный proxy-сертификат с сервера MyProxy. Для делегирования необходимо знать пароль, который пользователь указал при помещении долгосрочного proxy-сертификата на сервис MyProxy.

Данный режим прежде всего предназначен для Web UI, чтобы он мог забирать первоначальный proxy-сертификат пользователя, имея на руках свой сертификат, DN сертификата пользователя и пароль для MyProxy.

Параметры командной строки:

  • -k файл: задает месторасположение закрытого ключа;
  • -c файл: задает месторасположение сертификата;
  • -C | #fd: указывает, что пароль для закрытого ключа, определяемого опцией -k (или -c, в случае использования PKCS#12), нужно брать из указанного файла или из указанного файлового дескриптора;
  • -p файл: выходной файл для proxy-сертификата;
  • -P | #fd: указывает, что пароль для proxy-сертификата на MyProxy нужно брать из указанного файла или из указанного файлового дескриптора;
  • -v HH:MM: задает время действия proxy-сертификата, делегируемого с MyProxy;
  • -m узел: задает имя сервера MyProxy в формате узел:порт или просто как имя узла;
  • -n: указывает, что пароль для MyProxy пуст;
  • -l login: задает имя пользователя для сервера MyProxy; по-умолчанию используется DN пользовательского сертификата;
  • -V <имя_VO>:<FQAN>: задает имя виртуальной организации и FQAN, для которых будет получаться VOMS-расширение.

Пример использования:

proxytool fetch -m nghoop.grid.kiae.ru -p proxy.out -l '/C=RU/O=NanoGrid/OU=user/OU=grid.kiae.ru/CN=Vasya' -P '#4'

В данном случае proxytool попытается вытащить с сервера nghoop.grid.kiae.ru proxy-сертификат для пользователя Vasya и положить его в файл proxy.out. Пароль для MyProxy будет считываться из файлового дескриптора номер 4; он должен быть открыт к моменту запуска proxytool.

renew

Обновляет существующий proxy-сертификат пользователя, используя для этого сервис MyProxy. Пароля для обновления вводить не нужно. Если в сертификате есть расширения VOMS, то они тоже обновляются.

Данный режим предназначен для обновления proxy-сертификата пользователя на всех сервисах, которым это нужно, и у которых уже есть действительный proxy-сертификат для данного пользователя. В дополнение к этому, может выбираться ключевая пара, которой клиент будет аутентифицироваться (обычно, это сертификат узла, который делает renew): см. ключи -c, -k и -C.

Параметры командной строки:

  • -k файл: задает месторасположение закрытого ключа;
  • -c файл: задает месторасположение сертификата;
  • -C | #fd: указывает, что пароль для закрытого ключа, определяемого опцией -k (или -c, в случае использования PKCS#12), нужно брать из указанного файла или из указанного файлового дескриптора;
  • -p файл: файл с существующим proxy-сертификатом; при успешном обновлении, в этот файл будет помещен новый proxy-сертификат;
  • -v HH:MM: задает время действия proxy-сертификата, делегируемого с MyProxy;
  • -m узел: задает имя сервера MyProxy в формате узел:порт или просто как имя узла;
  • -l login: задает имя пользователя для сервера MyProxy; по-умолчанию используется DN пользовательского сертификата.

Пример использования:

proxytool renew -m nghoop.grid.kiae.ru -p proxy.out

Всё просто: сертификат, лежащий в файле proxy.out, обновляется. Или нет, но это уже кому как повезет ;))

Использование, команды, специфичные для VOMS

list-roles

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

Параметры командной строки:

  • -p файл: расположение proxy-сертификата пользователя;
  • -V имя_VO: задает имя виртуальной организации, для которой будет получаться VOMS-расширение.

Пример использования:

$ ./proxytool list-roles --vo gridnnn
/gridnnn

add-roles

Добавляет к существующему proxy-cертификату VOMS-расширения для указанной VO.

Параметры командной строки:

  • -p файл: входной и выходной файл для proxy-сертификата;
  • -v HH:MM: задает время действия proxy-сертификата;
  • -b число: задает размер закрытого ключа proxy-сертификата в битах;
  • -V <имя_VO>:<FQAN>: задает имя виртуальной организации и FQAN, для которых будет получаться VOMS-расширение.

Общие замечания

Если пароль читается из файла или файлового дескриптора, то в качестве содержимого пароля берется только первая прочитанная строка без завершающего символа '\n'.