В данной статье я рассматриваю Рутокен 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-кода для доступа к Рутокену.