Коллеги, мне надоело копаться в разных частях форума. Поэтому решил собрать информацию по CSP с коментариями обычным языком, возможно кому-то будет полезной.
Так как мне нужна была работа CSP+Nginx, она может быть не полной для вашего случая.# Просмотр лицензии:/opt/cprocsp/bin/amd64/cpconfig -license -view
# Для установки другой лицензии (под root):/opt/cprocsp/bin/amd64/cpconfig -license -set {SERIAL_NUMBER}
- # Если /opt/cprocsp/bin/amd64/cpconfig: Нет такого файла или каталога. тогда сюда: /opt/cprocsp/sbin/amd64/cpconfig . От Андрей *
#################### Контейнеры(ключи) ##################### Посмотреть контейнеры, показывает короткие пути вида "\\.\HDIMAGE\..." имена и полные пути вида "\\.\HDIMAGE\HDIMAGE\\..." /opt/cprocsp/bin/amd64/csptest -keyset -enum_cont -fqcn -verifyc -uniq
# Создать контейнер (новый секретный ключ) При генерации надо много кнопок нажимать. Пароль на контейнер не ставим (оставляем пусто) при работе с Nginx./opt/cprocsp/bin/amd64/csptest -keyset -provtype 80 -newkeyset -container '{container_path}'
# Прим
/opt/cprocsp/bin/amd64/csptest -keyset -provtype 80 -newkeyset -container '\\.\HDIMAGE\container2025'
# Посмотреть свойства контейнера (тип ключа, даты ключа, OID ключа)/opt/cprocsp/bin/amd64/csptest -keyset -container '{container_path}'
# Прим
/opt/cprocsp/bin/amd64/csptest -keyset -container '\\.\HDIMAGE\container2025'
# Посмотреть детально все свойства контейнера (очень много информации, включая линкованные сертификаты которые не истекли)/opt/cprocsp/bin/amd64/csptest -keyset -container '{container_path}' -info
# Прим
/opt/cprocsp/bin/amd64/csptest -keyset -container '\\.\HDIMAGE\container2025' -info
# Убрать/поменять пароль контейнера/opt/cprocsp/bin/amd64/csptest -passwd -change '{new password or empty}' -container '{container_path}' -passwd '{current_password}'
# Прим
/opt/cprocsp/bin/amd64/csptest -passwd -change '' -container '\\.\HDIMAGE\container2025' -passwd '12345678'
# Удалить контейнер. Лучше использовать полный путь вида "\\.\HDIMAGE\HDIMAGE\\..." /opt/cprocsp/bin/amd64/csptest -keyset -deletekeyset -container '{container_path}'
# Прим
/opt/cprocsp/bin/amd64/csptest -keyset -deletekeyset -container '\\.\HDIMAGE\HDIMAGE\\container2025.001\D09E'
# Установка сертификатов из всех контейнеров. Если сертификаты есть в контейнерах - будут установлены в личное хранилище с линковкой к контейнерам. От Захар Тихонов /opt/cprocsp/bin/amd64/csptest -absorb -certs -autoprov
#################### Сертификаты ##################### Посмотреть сертификаты /opt/cprocsp/bin/amd64/certmgr -list
# Посмотреть определенный сертификат /opt/cprocsp/bin/amd64/certmgr -list -thumbprint '{CERT_THUMBPRINT}'
# Прим
/opt/cprocsp/bin/amd64/certmgr -list -thumbprint '7d18631aad54ca3705207ace5005ea8de274a11b'
# Экспортировать сертификата из локального хранилища/opt/cprocsp/bin/amd64/certmgr -export -thumbprint '{CERT_THUMBPRINT}' -dest {CERT_PATH_EXPORT}
# Прим
/opt/cprocsp/bin/amd64/certmgr -export -thumbprint '7d18631aad54ca3705207ace5005ea8de274a11b' -dest /tmp/test.cer
# Установить сертификат без ключа в общее хранилище (uMy)/opt/cprocsp/bin/amd64/certmgr -inst -file {CERT_PATH}
# Прим
/opt/cprocsp/bin/amd64/certmgr -inst -file /tmp/mycert.cer
# Установить сертификат связав с закрытым ключом в общее хранилище (uMy)/opt/cprocsp/bin/amd64/certmgr -inst -file {CERT_PATH} -cont '{container_path}'
# Прим
/opt/cprocsp/bin/amd64/certmgr -inst -file /tmp/mycert.cer -cont '\\.\HDIMAGE\container.name'
# Установить сертификат без ключа в хранилище. Если хранилища не существует, оно создастся автоматически/opt/cprocsp/bin/amd64/certmgr -inst -file {CERT_PATH} -store {STORE_NAME}
# Прим
/opt/cprocsp/bin/amd64/certmgr -inst -file /tmp/mycert.cer -store uTrusted
# Установить сертификат связав с закрытым ключом в хранилище/opt/cprocsp/bin/amd64/certmgr -inst -file {CERT_PATH} -cont '{container_path}' -store uTrusted
# Прим
/opt/cprocsp/bin/amd64/certmgr -inst -file /tmp/mycert.cer -cont '\\.\HDIMAGE\container.name' -store uTrusted
# Установить все сертификаты из файла в хранилище/opt/cprocsp/bin/amd64/certmgr -inst -all -store {STORE_NAME} -file {CERT_PATH}
# Прим
/opt/cprocsp/bin/amd64/certmgr -inst -all -store uroot -file cacer.p7b
# Проверка цепочки сертификатов, можно использовать со -store/opt/cprocsp/bin/amd64/certmgr -list -thumbprint '{CERT_THUMBPRINT}' -chain
# Прим
/opt/cprocsp/bin/amd64/certmgr -list -thumbprint '7d18631aad54ca3705207ace5005ea8de274a11b' -chain
# Чтобы проверить цепочку сертификатов, можно скопировать персональный сертификат в файл, запущено с дебагомCP_PRINT_CHAIN_DETAIL=1 /opt/cprocsp/bin/amd64/cryptcp -copycert -thumbprint '{CERT_THUMBPRINT}' -df {CERT_PATH_COPY}
# Прим
CP_PRINT_CHAIN_DETAIL=1 /opt/cprocsp/bin/amd64/cryptcp -copycert -thumbprint '7d18631aad54ca3705207ace5005ea8de274a11b' -df /tmp/test_chain.cer
#################### CRL ##################### Посмотреть список CRL/opt/cprocsp/bin/amd64/certmgr -list -crl
# Установить CRL. Информация разница на форуме по поводу места установки (uMy или uCA). В документации нет информации./opt/cprocsp/bin/amd64/certmgr -inst -file {CRL_FILE_PATH} -crl
# Прим
/opt/cprocsp/bin/amd64/certmgr -inst -file /tmp/aucbr-D944F67B23B815C9803690ECFE34B2C5F09652A2.crl -crl
# Удалить CRL/opt/cprocsp/bin/amd64/certmgr -delete -crl -keyid '{AuthKeyID}'
# Прим
/opt/cprocsp/bin/amd64/certmgr -delete -crl -keyid 'c91358b14ca7623a7ed23f3ca6e7147c9d70a386'
#################### Физическое расположение ##################### Копировать контейнер (ключ) можно с другого ПК, будет работать как и копирование хранилищ# Посмотреть все созданные хранилища пользователя. Физические пути на локальной машине ls -la /var/opt/cprocsp/users/{USER}/stores/
# Прим
ls -la /var/opt/cprocsp/users/nginx/stores/
# Посмотреть все созданные контейнеры(ключи) пользователя. Физические пути на локальной машине ls -la /var/opt/cprocsp/keys/{USER}
# Прим
ls -la /var/opt/cprocsp/keys/nginx
# Скопировать приватный ключ(контейнер), где {USER} cp -R /tmp/container2025.000 /var/opt/cprocsp/keys/{USER}/
# Поставить права chmod -R 600 /var/opt/cprocsp/keys/{USER}/container2025.000
#################### Логирование ####################Доп. информация для диагностирования ошибок из PDF Руководство администратора безопасности Linux
# Посмотерть тип логирования и формат логирования/opt/cprocsp/sbin/amd64/cpconfig -loglevel {name} -view
# Прим
/opt/cprocsp/sbin/amd64/cpconfig -loglevel capi20 -view
# Выбор типа логирования/opt/cprocsp/sbin/amd64/cpconfig -loglevel {name} -mask {levelmask}
# Прим
/opt/cprocsp/sbin/amd64/cpconfig -loglevel capi20 -mask 0x01
# Выбор формат логирования/opt/cprocsp/sbin/amd64/cpconfig -loglevel {name} -format {levelmask}
# Прим
/opt/cprocsp/sbin/amd64/cpconfig -loglevel capi20 -format 0x01
Тип логирования0x01 - критические ошибки, по умолчанию возведено
0x02 - некритические ошибки
0x04 - информация о вызове функции
0x08 - криптографически важные события: обращения к закрытым ключам, создание и удаление контейнеров
0x10 - отладочная информация
Формат логирования0x01 - выводить имя модуля
0x02 - выводить номер нитки
0x04 - выводить номер линии
0x08 - выводить имя функции
0x10 - выводить само сообщение
0x20 - выводить НЕХ дамп
0x40 - выводить GetLastError
0x80 - выводить идентификатор процесса
0x100 - выводить имя процесса
0x39 - выводить имя модуля + выводить имя функции + само сообщение(
не задокументированный рабочий параметр)Модули capi10 - CryptoAPI 1.0
capi20 - CryptoAPI 2.0
ssp - TLS
cspr - клиентский RPC
cpext - расширения СryptoAPI
cloud - облачный провайдер
csp - ядро CSP
pcsc - считыватели PC/SC
# Прим Nginx. Тип 0x01 Формат 0x39
<capi20>CertCreateCertificateChainEngine!failed: LastError = 0x800B0109
#################### Доп информация хранилища ####################Хранилища по умолчанию. Параметры: 'u' для текущего пользователя, 'm' для хранилища локального компьютераMy — хранилище для пользовательских сертификатов, вляется значением по умолчанию (uMy) если не указано другое
Root — для корневых CA сертификатов
CA — для промежуточных CA сертификатов или CRL
AddressBook — для других пользовательских сертификатов
Cache — хранилище кэша сертификатов/CRL (доступно только чтение и удаление)
#################### Доп информация хранилища + Nginx ####################sspi_certificate {My};# Проверяет
Root + Ca + My# Сертификат с которым мы принимаем(входящие) соединение.
proxy_ssl_certificate {My};# Проверяет
Root + Ca + My# Сертификат с которым мы устанавливаем(исходящие) соединение.
sspi_client_certificate {Trusted};# Проверяет
сертификата клиента(входящие) + CA в Trusted. Если клиентский сертифкат официальный(не самоподписанный), то вместо Trusted, Root
# Проверка сертификата клиента, входящие по mTLS.
proxy_ssl_trusted_certificate {Trusted};# Проверяет
сертификат сервера + CA в Trusted. Если сертифкат сервера официальный(не самоподписанный), то вместо Trusted, Root
# Проверка сертификата сервера куда идут исходящие, исходящие по mTLS.
Подробнее sspi_client_certificate / proxy_ssl_trusted_certificate# {Trusted}
# Устанавливаются только корневые (самоподписанные) сертификаты Удостоверяющих Центров.
# Cертификаты выпущенные этими УЦ или подчиненными этим УЦ будут авторизовываться в mTLS
# Содержимое этого хранилища ограничивает перечень УЦ
#
# {Root}
# Cистемный. Официальные корневые сертификаты. Минцифры (ранее Минкомсвязь и ещё ранее имя в CN было Головной Удостоверяющий Центр) и тд.
от Андрей *Подробнее sspi_certificate / proxy_ssl_certificate# {Root}
# Cистемный. Устанавливаются официальные корневые для построения цепочки доверия c My.
# Если одни и теже сертификаты будут и в пользовательских и в хранилищах машины (mRoot, uRoot) nginx не запустится.
от Николай Батищев# {Ca}
# Cистемный. Устанавливаются официальные промежуточные для построения цепочки доверия c My.
# Если одни и теже сертификаты будут и в пользовательских и в хранилищах машины (mCa, uCa) nginx не запустится.
от Николай Батищев# Ошибки модулей криптопро смотреть в логах(systemctl) при старте Nginx. Так же ошибка может быть в общем error.log. Настройки КриптоПро не влияют на запуск Nginx, он запуститься в любом случае даже если указанные сертификаты не валидны.
#################### КриптоПро + Nginx (странное поведение) ####################
# бывает ошибка криптопро в Nginx при использовании "sspi_certificate или proxy_ssl_certificate", если сертификат выпущен сторонним Центром( например вашей компанией), у вас нет в цепочке промежуточного, а только СА # То СА ужно установить в Root, а серверный нужно установить в uСА + uMy как клиентский , так как он сам себя ставит в цепочку вместо промежуточного(линковать не обязательно).
# Прим.
company_ca.cer
|_____ company_server.cer
#
Root - company_ca.cer
CA - company_server.cer
My - company_server.cer
# Бывает ошибка цепочки при использовании "sspi_certificate или proxy_ssl_certificate", если официальный сертификат выпущен + ЦА или Промежуточным у вас уже установлен, но их серийник отличается # Требуется установить ЦА или Промежуточый с коррентым серийником.
# Прим.1
Root Минкомсвязь России установлен. Serial : 0x00000000000000000000001
|__CA Минцифры России установлен. Serial : 0x40000000000000000000001 . Минцифры России Serial : 0x40000000000000000000002 (не установлен)
|_____My сертификат установлен. Выпущен Минцифры России Serial : 0x40000000000000000000002 (не установлен, нужно установить в СА), который выпущен Выпущен Минкомсвязь России Serial : 0x00000000000000000000001 (установлен)
# Прим.2
Root Минкомсвязь России установлен. Serial : 0x00000000000000000000001. Минкомсвязь России Serial : 0x00000000000000000000002 (не установлен)
|__CA Минцифры России установлен. Serial : 0x40000000000000000000001. Минцифры России Serial : 0x40000000000000000000002 (не установлен)
|_____My сертификат установлен. Выпущен Минцифры России Serial : 0x40000000000000000000002 (не установлен, нужно установить в СА), который выпущен Выпущен Минкомсвязь России Serial : 0x00000000000000000000002 (не установлен, нужно установить в Root)
Отредактировано модератором 23 мая 2025 г. 19:23:19(UTC)
| Причина: Добавлена информация. Прим КриптоПро + Nginx (странное поведение)