Подробный гайд по просмотру сертификатов на Rutoken Lite в Astra Linux - Часть 2
Вариант 4. Командная строка: получить дату окончания
Это самый надёжный способ для диагностики.
4.1. Проверить, что токен виден через PKCS#11
pkcs11-tool --module "$MOD" --list-slots
Должен быть слот с токеном.
Если слотов несколько, можно указать индекс слота, например:
pkcs11-tool --module "$MOD" --slot-index 0 --list-objects --type cert --login
Но обычно достаточно просто:
pkcs11-tool --module "$MOD" --list-objects --type cert --login
4.2. Посмотреть список сертификатов на токене
pkcs11-tool --module "$MOD" --list-objects --type cert --login
Будет запрошен PIN-код пользователя токена.
Примерный вывод может быть таким:
Certificate Object; type = X.509 cert
label: Ivanov
subject: DN: CN=Ivanov, O=Example
ID: 01
Важные поля:
label:
ID:
Они понадобятся для чтения сертификата. Если без --login список пустой, обязательно попробуйте с --login.
4.3. Извлечь сертификат во временный файл
Если в выводе был, например:
ID: 01
Выполните:
pkcs11-tool --module "$MOD" --read-object --type cert --id 01 --login --output-file /tmp/rutoken-cert-01.der
Если объект имеет не ID, а понятную метку, можно использовать:
pkcs11-tool --module "$MOD" --read-object --type cert --label 'Имя метки' --login --output-file /tmp/rutoken-cert.der
4.4. Посмотреть дату окончания
Обычно сертификат сохраняется в DER-формате:
openssl x509 -inform DER -in /tmp/rutoken-cert-01.der -noout -subject -issuer -dates
Только дата окончания:
openssl x509 -inform DER -in /tmp/rutoken-cert-01.der -noout -enddate
Вывод будет примерно таким:
notAfter=Nov 7 10:00:00 2027 GMT
Если нужно посмотреть подробнее:
openssl x509 -inform DER -in /tmp/rutoken-cert-01.der -noout -text
4.5. Проверить, истёк ли сертификат
Проверить, действителен ли сертификат сейчас:
openssl x509 -inform DER -in /tmp/rutoken-cert-01.der -noout -checkend 0
Код возврата:
echo $?
0— сертификат ещё действителен;1— сертификат истёк.
Проверить, действителен ли сертификат ещё 30 дней:
openssl x509 -inform DER -in /tmp/rutoken-cert-01.der -noout -checkend $((30*24*3600))
Если код возврата 0, сертификат будет действителен минимум 30 дней.
5. Быстрая команда для одного сертификата
Если известен ID сертификата, можно сделать почти одной строкой:
pkcs11-tool --module "$MOD" --read-object --type cert --id 01 --login --output-file /dev/stdout \
| openssl x509 -inform DER -noout -subject -issuer -enddate
Или, если нужно только notAfter:
pkcs11-tool --module "$MOD" --read-object --type cert --id 01 --login --output-file /dev/stdout \
| openssl x509 -inform DER -noout -enddate
6. Скрипт для вывода всех сертификатов и сроков действия
Можно использовать такой скрипт:
#!/usr/bin/env bash
MOD="/usr/lib/librtpkcs11.so"
for id in $(pkcs11-tool --module "$MOD" --list-objects --type cert --login | awk '/ID:/ {print $2}'); do
FILE="/tmp/rutoken-cert-$id.der"
echo "=== Чтение сертификата ID: $id ==="
pkcs11-tool --module "$MOD" --read-object --type cert --id "$id" --login --output-file "$FILE"
echo "Данные сертификата:"
openssl x509 -inform DER -in "$FILE" -noout -subject -issuer -enddate
if openssl x509 -inform DER -in "$FILE" -noout -checkend 0 >/dev/null; then
echo "Статус: сертификат действителен"
else
echo "Статус: сертификат истёк"
fi
echo
done
Не забудьте поправить путь к MOD, если у вас он другой.
Важно: скрипт может несколько раз запрашивать PIN-код, потому что каждый вызов pkcs11-tool открывает отдельную сессию.
7. Если нужен именно графический просмотр уже извлечённого сертификата
Можно установить просмотрщик сертификатов из пакета gcr:
sudo apt install gcr
Скопировать файл с расширением .crt:
cp /tmp/rutoken-cert-01.der /tmp/rutoken-cert-01.crt
Открыть:
gcr-viewer /tmp/rutoken-cert-01.crt
Либо просто дважды кликнуть по файлу .crt в файловом менеджере, если графическая среда поддерживает просмотр сертификатов.
8. Что делать с rutoken-linux-gui-manager
Если rutoken-linux-gui-manager видит токен, но не показывает содержимое, возможно, дело в одном из следующих моментов:
- Не загружена или не найдена PKCS#11-библиотека Рутокен.
- Нет доступа к
pcscd. - Токен занят другим процессом.
- Приложение не умеет корректно работать именно с данной версией драйвера/токена.
- Сертификаты на токене не представлены как объекты, которые видит это приложение.
Диагностика:
sudo systemctl restart pcscd
Затем запустите менеджер из терминала и посмотрите ошибки:
rutoken-linux-gui-manager
Если есть режим отладки, попробуйте:
rutoken-linux-gui-manager --debug
или:
rutoken-linux-gui-manager --verbose
Также проверьте, не открыт ли токен уже в другом приложении: Firefox, Chromium, Thunderbird, CryptoPro, другой менеджер, скрипт.
Если командная строка через pkcs11-tool сертификаты видит, а rutoken-linux-gui-manager нет, значит проблема, скорее всего, в самом графическом менеджере. В этом случае проще использовать Firefox или команды.
9. Если сертификаты не видны через pkcs11-tool
Если команда:
pkcs11-tool --module "$MOD" --list-objects --type cert --login
Не показывает сертификаты, возможны такие варианты:
- На токене действительно нет объектов-сертификатов.
- Сертификат хранится не как X.509-объект, а как часть закрытого контейнера.
- Токен используется как контейнер КриптоПро или другого СКЗИ.
- Не установлена нужная библиотека Рутокен.
- Не хватает прав на доступ к
pcscd.
В последнем случае можно проверить группы:
groups
Иногда помогает добавление пользователя в группу pcscd, если она есть в системе:
sudo usermod -aG pcscd "$USER"
После этого нужно выйти и зайти заново.
10. Если токен используется с КриптоПро
Если в системе установлен КриптоПро CSP и сертификат хранится как контейнер КриптоПро, то pkcs11-tool может не видеть сертификат как объект. Тогда лучше использовать средства КриптоПро.
Сначала посмотрите, есть ли КриптоПро:
ls /opt/cprocsp/bin
Путь может быть, например:
/opt/cprocsp/bin/amd64
или:
/opt/cprocsp/bin/x86_64
Список контейнеров можно посмотреть так:
/opt/cprocsp/bin/amd64/csptest -keyset -enum_cont -verifyc -fqcn
или, в зависимости от архитектуры:
/opt/cprocsp/bin/x86_64/csptest -keyset -enum_cont -verifyc -fqcn
Дальше для просмотра сертификатов контейнера используются certmgr или cryptcp, точный синтаксис зависит от версии КриптоПро и способа хранения контейнера.
Если используется именно КриптоПро, дата окончания сертификата обычно смотрятся через его штатные средства или через установленный сертификат в системе/контейнере.
11. Минимальный рабочий алгоритм
Если нужно быстро получить дату окончания, выполните:
sudo apt install -y pcscd libccid opensc openssl
sudo systemctl enable --now pcscd
MOD="$(find /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib64 /usr/local/lib \( -name 'librtpkcs11*.so' -o -name 'librtpkcs11*.so.*' \) 2>/dev/null | sort | head -n1)"
echo "$MOD"
pkcs11-tool --module "$MOD" --list-objects --type cert --login
Допустим, увидели:
ID: 01
Тогда:
pkcs11-tool --module "$MOD" --read-object --type cert --id 01 --login --output-file /tmp/rutoken-cert.der
openssl x509 -inform DER -in /tmp/rutoken-cert.der -noout -enddate
Вывод будет примерно таким:
notAfter=Dec 31 21:59:59 2027 GMT
12. Важно
Если нужен именно графический вид:
- Добавьте
librtpkcs11.soв Firefox как устройство безопасности. - Откройте сертификаты токена в Firefox.
- Посмотрите срок действия в свойствах сертификата.
Если графический менеджер не работает или нужен быстрый результат:
pkcs11-tool --module /usr/lib/librtpkcs11.so --list-objects --type cert --login
pkcs11-tool --module /usr/lib/librtpkcs11.so --read-object --type cert --id 01 --login --output-file /tmp/cert.der
openssl x509 -inform DER -in /tmp/cert.der -noout -enddate
Это самый надёжный способ получить дату окончания сертификата на Rutoken Lite в Linux.
Информация предоставлена в ознакомительных целях. Применение описанных настроек в системах, должно осуществляться только после согласования с ответственными за информационную безопасность и в соответствии с требованиями ФСТЭК, ФСБ и иных уполномоченных органов.