Certmgr команда не найдена linux

Работа с КриптоПро на linux сервере

Скопировать в корень дискеты или флэшки сертификат и приватный ключ (из каталога 999996.000 , 999996 — название (alias) контейнера):

cp -R /path/to/key/999996.000 /media/flashdrive/ cp /path/to/cert/client.cer /media/flashdrive/

Выполнить команду по копированию ключа с флэшки на диск, ключ попадет в пользовательское хранилище My .

gate@example.com — то, что прописано в поле E сертификата (можно посмотреть командой keytool —printcert -file /path/to/cert/client.cer ):

csptest -keycopy -src '\\.\FLASH\gate@example.com' -dest '\\.\HDIMAGE\999996'

С жесткого диска

Скопировать приватный ключ в хранилище (контейнер), где — имя пользователя linux:

cp -R /path/to/key/999996.000 /var/opt/cprocsp/keys/username>/

Поставить «минимальные» права:

chmod 600 /var/opt/cprocsp/keys/username>/999996.000/*

Узнать реальное название контейнера:

csptest -keyset -enum_cont -verifycontext -fqcn

Ассоциировать сертификат с контейнером, сертификат попадет в пользовательское хранилище My :

certmgr -inst -file /path/to/file/client.cer -cont '\\.\HDIMAGE\999996'

Если следующая ошибка, нужно узнать реальное название контейнера (см. выше):

Failed to open container \\.\HDIMAGE\ [ErrorCode: 0x00000002]

Установить сертификат УЦ из-под пользователя root командой:

certmgr -inst -store uroot -file /path/to/file/CA.cer

Проверка успешности установки закрытого ключа

PrivateKey Link

Если выводится PrivateKey Link: Yes. Container: HDIMAGE\\999996.000\D7BB , то есть и сертификат, и приватный ключ, а если выводится PrivateKey Link: No — связи нет, и использовать такой контейнер для подписи не удастся.

Добавление тестового сертификата

Добавление работает только на той же машине, и в тот же контейнер, где был сформированы следующий запрос на добавление:

cryptcp -creatrqst -dn 'cn=test' -cont '\\.\hdimage\test' test.csr

Ввести пароль на контейнер test123 .

cryptcp -creatrqst -dn 'e=email@test.ru,cn="тест тест",c=rus,l="москва",o="текст тест"' -cont '\\.\hdimage\myname' myname.csr
cryptcp -instcert -cont '\\.\hdimage\test' certnew.cer

Ввести пароль на контейнер. По-умолчанию: 12345678

Удаление сертификата

Проверка сертификата

1------- Issuer : E=cpca@cryptopro.ru, C=RU, L=Москва, O=ООО КРИПТО-ПРО, CN=УЦ KPИПTO-ПPO Subject : E=info@site.ru, C=RU, L=г. Москва, O="ООО ""Верес""", OU=Руководство, CN=Иванов Иван Иванович, T=Генеральный директор Serial : 0x75F5C86A000D00016A5F SHA1 Hash : 0x255c249150efe3e48f1abb3bc1928fc8f99980c4 Not valid before : 08/12/2014 09:04:00 UTC Not valid after : 08/12/2019 09:14:00 UTC PrivateKey Link : No

Подписание пустого файла (размер 0) проходит успешно, но при просмотре сертификатов этого файла выдается ошибка:

Can't open certificate store: '/tmp/tmp.G8cd13vzfZ.sig'. Error: No certificate found. /dailybuilds/CSPbuild/CSP/samples/CPCrypt/Certs.cpp:312: 0x2000012D [ErrorCode: 0x2000012d]

Просмотр всех атрибутов сертификата

В cryptcp нет необходимых инструментов для получения всех атрибутов сертификата. Поэтому следует использовать openssl , но настроив его.

certmgr -list -f file.sig | grep 'SHA1 Hash'

В цикле извлекаем сертификаты:

cryptcp -nochain -copycert -thumbprint 255c249150efe3e48f1abb3bc1928fc8f99980c4 -f file.sig -df certificate.der -der
openssl x509 -in certificate.der -inform der -text -noout
openssl_conf = openssl_def # Это в начало файла #Все что ниже в конец [openssl_def] engines = engine_section [engine_section] gost = gost_section [gost_section] engine_id = gost dynamic_path = /usr/lib/ssl/engines/libgost.so # заменить реальным файлом default_algorithms = ALL CRYPT_PARAMS = id-Gost28147-89-CryptoPro-A-ParamSet
openssl ciphers | tr ":" "\n" | grep -i gost GOST2001-GOST89-GOST89 GOST94-GOST89-GOST89

Экспорт сертификатов на другую машину

Закрытые ключи к сертификатам находятся тут: /var/opt/cprocsp/keys . Поэтому эти ключи переносятся просто: создаем архив и переносим на нужную машину в тот же каталог.

Экспорт самих сертификатов (если их 14):

for i in `seq 1 14`; do echo $i | certmgr -export -dest $i.cer; done

Переносим эти файлы на машину и смотрим, какие контейнеры есть:

csptest -keyset -enum_cont -verifycontext -fqcn

И как обычно, связываем сертификат и закрытый ключ:

certmgr -inst -file 1.cer -cont '\\.\HDIMAGE\container.name'

Если закрытый ключ и сертификат не подходят друг к другу, будет выведена ошибка:

Can not install certificate Public keys in certificate and container are not identical

Если нет закрытого ключа, то просто ставим сертификат:

Подписание документа ЭЦП

cryptcp -sign (КПС1) -nochain -pin pincode src.txt dest.txt.sig

Пример создания ЭЦП (по SHA1 Hash):

cryptcp -sign -thumbprint 255c249150efe3e48f1abb3bc1928fc8f99980c4 -nochain -pin test test.txt test.txt.sig
[ReturnCode: x] Описание Возвращаемый код завершения в баше $?
0 успешно 0
0x8010006b Введен неправильный PIN 107
0x2000012d Сертификат не найден 45
0x20000065 Не удалось открыть файл 101

Проверка подписи ЭЦП

Для верифицирования сертификатов нужен сертификат удостоверяющего центра и актуальный список отзыва сертификатов, либо настроенный для этого revocation provider.

Корневой сертификат УЦ, список отзыва сертификата является одним из реквизитов самого сертификата.

Контрагенты когда открывают подписи в КриптоАРМ используют revocation provider, он делает проверки отзыва сертификата онлайн. Как реализована проверка в Шарепоинте не знаю. Знаю только что используется библиотека Крипто.Net

Проверка конкретной подписи из локального хранилища по его хешу:

cryptcp -verify -thumbprint 255c249150efe3e48f1abb3bc1928fc8f99980c4 -nochain test.txt.sig

Проверить, взяв сертификат из file1.sig , подпись файла file2.sig . Практически, надо использовать один и тот же файл:

cryptcp -verify -norev -f file1.sig file2.sig
Certificates found: 2 Certificate chains are checked. Folder './': file.xls.sig. Signature verifying. Signer: Старший инженер, Иванов Иван Иванович, Отдел закупок, ООО «Верес», Москва, RU, info@site.ru Signature's verified. Signer: Генеральный директор, Сидоров Иван Петрович, Руководство, ООО «Кемоптика», Москва, RU, info@site.ru Signature's verified. [ReturnCode: 0]
[ReturnCode: x] Текст Описание Возвращаемый код завершения в баше $?
0 Успешно 0
0x80091004 Invalid cryptographic message type Неправильный формат файла 4
0x80091010 The streamed cryptographic message is not ready to return data Пустой файл 16

Получение исходного файла

Получение исходного файла (сообщения):

cryptcp -verify -nochain file.sig file.txt

Будет ругаться на сертификат (так как не будет проверки), но подпись удалит. Вариант с проверкой:

cryptcp -verify -nochain -f file.sig file.sig file.txt

Настройка службы точного времени

apt-get install ntp ntpdate

Необходимо добавить сервера:

# You do need to talk to an NTP server or two (or three). #server ntp.your-provider.example server ntp1.stratum2.ru server ntp2.stratum2.ru

Источник

Как исправить ошибку “команда не найдена” в Linux

Существуют различные причины, по которым оболочка Linux выдает ошибку «команда не найдена». Вот как это исправить.

Если вы являетесь пользователем Linux, вы, скорее всего, сталкивались с ошибкой “команда не найдена” в терминале Linux.

Часто, когда вы сталкиваетесь с этой ошибкой, вы получаете предложение установить программу, однако существует несколько потенциальных причин ошибки «команда не найдена».

Понимание переменных среды и чувствительности к регистру

Прежде чем мы приступим к устранению распространенных причин ошибки, важно оценить несколько важных свойств команд Linux.

В отличие от Windows, все команды, имена файлов и каталогов в системах Linux и Unix чувствительны к регистру. Это означает, что все команды и их соответствующие аргументы или параметры должны отображаться точно так, как они обозначены. Конечно, большинство команд написаны строчными буквами.

Переменные среды играют важную роль в Linux. Они содержат ценную информацию о вашем сеансе входа в систему и другие важные детали.

Когда вы запускаете команду в Linux, ваша система будет искать в ваших текущих переменных, в частности в переменной PATH, чтобы найти команду или программу, которую вы хотите запустить. Если команда не найдена, вы получите сообщение об ошибке, что она не найдена.

1. Проверьте наличие синтаксических ошибок

Вы должны запускать все команды Linux точно так, как они отображаются в регистре. Например, оболочка обрабатывает “ls” и “LS” как разные команды в Linux.

Кроме того, если ваша команда содержит аргументы, убедитесь, что вы используете правильный регистр. Команда ssh для переадресации портов принимает формат:

Аргументы “L” и “N” в этом случае должны быть прописными, иначе вы получите сообщение об ошибке.

В некоторых случаях для параметров или аргументов может потребоваться предшествующий дефис (-) или двойной дефис (—), а некоторые аргументы, возможно, потребуется заключить в кавычки или скобки.

Убедитесь, что вы используете правильную команду. Дважды проверьте написание команды, которую вы пытаетесь использовать, и убедитесь, что вы используете правильный регистр.

2. Укажите путь к вашему исполняемому файлу

Скрипты играют жизненно важную роль в Linux, поскольку они позволяют автоматизировать рутинные задачи. Если вы пишете свою собственную программу Bash или используете некоторые сторонние программы, вам нужно будет указать полный путь к программе для ее успешного выполнения.

Например, когда вы загружаете Open Virtualization Format Tool, вы можете установить его в любой каталог по своему вкусу. Теперь, когда вы пытаетесь запустить команду ovftool из каталога, отличного от того, в котором она была установлена, вы получите сообщение об ошибке “команда не найдена”.

Чтобы выполнить команду правильно, вам необходимо указать полный путь к исполняемому файлу программы. Если, например, вы установили ovftool в каталог / opt / ovf , то для запуска ovftool вам нужно будет использовать следующую команду:

Кроме того, обратите внимание на косые черты. В отличие от Windows, которая использует обратные косые черты, Linux использует прямые косые черты. Используйте функцию автозаполнения вкладок вашего терминала, чтобы избежать опечаток в именах каталогов.

3. Используйте переменные среды

Если вы обнаружите, что указывать целый каталог для команды утомительно, подумайте о добавлении исполняемого файла программы в переменную среды PATH.

Чтобы добавить исполняемый файл программы в PATH, просто запустите команду в следующем формате:

Переменные среды записываются в файл ~/.bashrc в Bash или в файл ~/.zshrc , если вы используете оболочку Z.

Чтобы обновить и применить внесенные изменения к файлу ~/.bashrc без выхода из системы, выполните исходную команду следующим образом:

Вы можете проверить, успешно ли добавлен путь к вашей программе в переменную PATH с помощью команды:

Источник

Читайте также:  Tl wn822n arch linux
Оцените статью
Adblock
detector