[openvpn] Аутентификация по Рутокен

В данной статье я рассматриваю Рутокен S.

Вот несколько нюансов, без которых авторизация по токену может не работать:

  • сам конфиг openvpn’a не имеет значения, важно что бы клиентская (серверная не обязательно) часть поддерживала pkcs11 (как минимум версия 2.4.4 под Windows это поддерживат; узнать это можно по выводу openvpn —version : если в выводе есть  enable_pkcs11=yes, значит поддерживает )
  • правильное форматирование токета на момент написания статьи было доступно только из-под Windows (если вы форматировали его из-под других ОС, он может не работать)
  • для работы токена нужна библиотека rtPKCS11ECP.dll, так называемый pkcs11-providers (нужно скачивать отдельно с сайта)
  • сертификат клиента в формате p12, а так же сертификат клиента должен иметь расширение (Extended Key Usage Client Authentication); по-умолчанию, в версии 2.4.4 это уже присутствует

1) Форматируем токен, задаём PIN-коды (они будут использоваться при подключении в пункте4). Далее формируем p12-сертификат на сервере openvpn и импортируем его в токен.

2) Проверяем, что, что сертификат успешно импортирован и доступен через openvpn (первый вызов команды до импорта, второй — после):

C:\Program Files\OpenVPN\bin>openvpn.exe --show-pkcs11-ids c:\Windows\System32\rtPKCS11.dll

The following objects are available for use. Each object shown below may be used as parameter to --pkcs11-id option please remember to use single quote mark.

C:\Program Files\OpenVPN\bin>openvpn.exe --show-pkcs11-ids c:\Windows\System32\rtPKCS11.dll

The following objects are available for use. Each object shown below may be used as parameter to --pkcs11-id option please remember to use single quote mark.

Certificate
       DN:             C=US, ST=CA, L=SanFrancisco, O=DOMAIN.COM, OU=IT, CN=client5, name=EasyRSA, emailAddress=it@domain.com
       Serial:         07
       Serialized id:  Aktiv\x20Co\x2E/Rutoken\x20S\x2064K/456b78ac/company/4245145463637383922827637956276321386133316363424

Если есть ошибки, скорее всего указан неправильный путь к rtPKCS11.dll или сама библиотека повреждена.

3) Добавлем в конфигурационный файл клиента такие строки:

pkcs11-providers c:\\windows\\system32\\rtPKCS11.dll
pkcs11-id 'Aktiv\x20Co\x2E/Rutoken\x20S\x2064K/456b78ac/company/4245145463637383922827637956276321386133316363424'
pkcs11-pin-cache 300

где pkcs11-id — значение Serialized id (то есть значение ID контейнера, в котором на Рутокен ЭЦП хранятся ключ и сертификат пользователя) из предыдущего пункта.

Примечание.

В конфигурационном файле клиента вместо параметров key, cert указаны параметры pkcs11*. Все остальные сертификаты (ta.key, ca.crt) должны быть прописаны.

4) После подключения через openvpn у вас появится диалоговое окно с запросом на ввод PIN-кода для доступа к Рутокену.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *