Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline vamadir  
#1 Оставлено : 16 мая 2025 г. 12:06:07(UTC)
vamadir

Статус: Участник

Группы: Участники
Зарегистрирован: 22.04.2024(UTC)
Сообщений: 10
Мужчина
Российская Федерация
Откуда: Москва

Поблагодарили: 1 раз в 1 постах
Коллеги, мне надоело копаться в разных частях форума. Поэтому решил собрать информацию по SCP с коментариями обычным языком, возможно кому-то будет полезной.
Так как мне нужна была работа SCP+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
/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

###############################################################################

Хранилища по умолчанию. Параметры: 'u' для текущего пользователя, 'm' для хранилища локального компьютера
My — хранилище для пользовательских сертификатов, вляется значением по умолчанию (uMy) если не указано другое
Root — для корневых CA сертификатов
CA — для промежуточных CA сертификатов или CRL
AddressBook — для других пользовательских сертификатов
Cache — хранилище кэша сертификатов/CRL (доступно только чтение и удаление)

SCP Проверяя цепочку My сертификата, берет значения из сначала из Root, потом CA

###############################################################################

Если сертификат выпущен сторонним Центром( например. вашей компанией), и допустим у вас нет в цепочке промежуточного, а только СА

# Прим
company_server.cer - company_ca.cer
То сompany_ca.cer ужно установить в Root, а company_server.cer нужно установить в uСА, так как он сам себя ставит в цепочку вместо промежуточного(линковать не обязательно). Плюс company_server.cer нужно установить в uMy как клиентский

PS.
Как работают Trusted хранилища для Nginx, не ясно.
В теории в нем дожны хранится только CA из Цепочки сертификата, но оно не работает корректно.
Иногда требуется докинуть туда по мимо CA из Цепочки сертификата, неочевидные сертификаты типо СА минкомсвязь или какой-то другой(методом тыка).
Если неочевидного СА сертификата не хватает, то будет ошибка в логах(systemctl) при старте Nginx, хотя сам Nginx запуститься, но соединения не пройдут. Так же ошибка может быть в общем error.log

Отредактировано пользователем 17 мая 2025 г. 17:00:12(UTC)  | Причина: Изменена информация о физическом копировании

thanks 1 пользователь поблагодарил vamadir за этот пост.
Захар Тихонов оставлено 16.05.2025(UTC)
Offline Захар Тихонов  
#2 Оставлено : 16 мая 2025 г. 15:30:59(UTC)
Захар Тихонов

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 17.08.2015(UTC)
Сообщений: 3,311
Мужчина
Тонга
Откуда: Калининград

Сказал «Спасибо»: 40 раз
Поблагодарили: 583 раз в 560 постах
# Вот хорошая и полезная команда по установке сертификатов из контейнеров - данная команда установит сертификаты с привязкой к закрытому ключу, со всех доступных контейнеров
/opt/cprocsp/bin/amd64/csptest -absorb -certs -autoprov
Техническую поддержку оказываем тут.
Наша база знаний.
Offline vamadir  
#3 Оставлено : 16 мая 2025 г. 19:42:35(UTC)
vamadir

Статус: Участник

Группы: Участники
Зарегистрирован: 22.04.2024(UTC)
Сообщений: 10
Мужчина
Российская Федерация
Откуда: Москва

Поблагодарили: 1 раз в 1 постах
Автор: Захар Тихонов Перейти к цитате
# Вот хорошая и полезная команда по установке сертификатов из контейнеров - данная команда установит сертификаты с привязкой к закрытому ключу, со всех доступных контейнеров
/opt/cprocsp/bin/amd64/csptest -absorb -certs -autoprov

Добавил.

А можно немного подробнее про команду? Несколько раз видел на форуме, но не доконца понимаю когда применять.
absorb линкуем все сертификаты из контеров с ключами, тут не понятно. В контейнере же по умолчанию только ключи и линк на сертификат в хранилище?
Какое свойство должно быть у контейнера с сертификатом?

Отредактировано пользователем 16 мая 2025 г. 20:15:52(UTC)  | Причина: Не указана

Offline Андрей *  
#4 Оставлено : 16 мая 2025 г. 21:04:20(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 13,678
Мужчина
Российская Федерация

Сказал «Спасибо»: 572 раз
Поблагодарили: 2302 раз в 1803 постах
Автор: vamadir Перейти к цитате
Автор: Захар Тихонов Перейти к цитате
# Вот хорошая и полезная команда по установке сертификатов из контейнеров - данная команда установит сертификаты с привязкой к закрытому ключу, со всех доступных контейнеров
/opt/cprocsp/bin/amd64/csptest -absorb -certs -autoprov

Добавил.

А можно немного подробнее про команду? Несколько раз видел на форуме, но не доконца понимаю когда применять.
absorb линкуем все сертификаты из контеров с ключами, тут не понятно. В контейнере же по умолчанию только ключи и линк на сертификат в хранилище?
Какое свойство должно быть у контейнера с сертификатом?


в контейнере могут быть не только ключи и атрибуты, но и сертификат,
утилита получает список контейнеров, запрашивает у каждого сертификат, если он есть - записывает его в личное и добавляет ссылку на контейнер.
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#5 Оставлено : 16 мая 2025 г. 21:11:49(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 13,678
Мужчина
Российская Федерация

Сказал «Спасибо»: 572 раз
Поблагодарили: 2302 раз в 1803 постах
Автор: vamadir Перейти к цитате

# Просмотр лицензии:
/opt/cprocsp/bin/amd64/cpconfig -license -view

# Для установки другой лицензии (под root):
/opt/cprocsp/bin/amd64/cpconfig -license -set {SERIAL_NUMBER}



а если вдруг...

Цитата:
bash: /opt/cprocsp/bin/amd64/cpconfig: Нет такого файла или каталога

тогда сюда:
/opt/cprocsp/sbin/amd64/cpconfig
Техническую поддержку оказываем тут
Наша база знаний
Offline vamadir  
#6 Оставлено : 17 мая 2025 г. 16:44:34(UTC)
vamadir

Статус: Участник

Группы: Участники
Зарегистрирован: 22.04.2024(UTC)
Сообщений: 10
Мужчина
Российская Федерация
Откуда: Москва

Поблагодарили: 1 раз в 1 постах
Автор: Андрей * Перейти к цитате
Автор: vamadir Перейти к цитате

# Просмотр лицензии:
/opt/cprocsp/bin/amd64/cpconfig -license -view

# Для установки другой лицензии (под root):
/opt/cprocsp/bin/amd64/cpconfig -license -set {SERIAL_NUMBER}



а если вдруг...

Цитата:
bash: /opt/cprocsp/bin/amd64/cpconfig: Нет такого файла или каталога

тогда сюда:
/opt/cprocsp/sbin/amd64/cpconfig


Добавил
Offline Николай Батищев  
#7 Оставлено : 19 мая 2025 г. 14:49:33(UTC)
Николай Батищев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.11.2013(UTC)
Сообщений: 76
Мужчина
Албания
Откуда: Тирана

Сказал «Спасибо»: 3 раз
Поблагодарили: 13 раз в 12 постах
В хранилище Trusted нужно ставить только корневые сертификаты. Промежуточных в нем быть не должно.
Техническую поддержку оказываем тут
Общие консультации в телеграм
Наша база знаний
Offline vamadir  
#8 Оставлено : 20 мая 2025 г. 17:29:17(UTC)
vamadir

Статус: Участник

Группы: Участники
Зарегистрирован: 22.04.2024(UTC)
Сообщений: 10
Мужчина
Российская Федерация
Откуда: Москва

Поблагодарили: 1 раз в 1 постах
Автор: Николай Батищев Перейти к цитате
В хранилище Trusted нужно ставить только корневые сертификаты. Промежуточных в нем быть не должно.


А можно по подробней? Понятно что в Trusted только СА. А какие именно должны быть СА?
Как пример, сертификат выпущен ЦБ его СА минцифры, почему Trusted падает без СА минкомсвязь? Хотя минкомсвязь не участвует в цепочке. Т.е. у меня в Trusted (СА минцифры + СА минкомсвязь) (Это реальный пример с прод стенда)

Так же не понятно, если сертификат выпущен моей компанией. То с одним СА моей компании, Trusted падает. Приходится докидывать туда разные СА от КриптоПро и проверять методом тыка с чем будет работать

Так же я не могу понять логику работы Trusted хранилищ, но методом тыка выяснил, что для работы Trusted
1. Сертификат СА должен быть установлен не только в Trusted, но и в Root
2. Цепочка(Промежуточных) от СА должна быть установлена в uCA
Только при данных действиях Trusted хранилище запускается без ошибок

Отредактировано пользователем 20 мая 2025 г. 17:38:10(UTC)  | Причина: Не указана

Offline Андрей *  
#9 Оставлено : 20 мая 2025 г. 19:45:43(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 13,678
Мужчина
Российская Федерация

Сказал «Спасибо»: 572 раз
Поблагодарили: 2302 раз в 1803 постах
root - самоподписанный
ca - выпустил root
my - выпустил ca\root

Что еще добавить? Зачем смешивать хранилища?

Если речь про квалифицированные сертификаты:
root - сертификаты корневые - Минцифры
ca - сертификаты АУЦ (ЦБ\ФНС\ФК...), не корневые.
Техническую поддержку оказываем тут
Наша база знаний
Offline vamadir  
#10 Оставлено : 20 мая 2025 г. 21:06:58(UTC)
vamadir

Статус: Участник

Группы: Участники
Зарегистрирован: 22.04.2024(UTC)
Сообщений: 10
Мужчина
Российская Федерация
Откуда: Москва

Поблагодарили: 1 раз в 1 постах
Автор: Андрей * Перейти к цитате

Что еще добавить? Зачем смешивать хранилища?


Вот пример.
certmgr -list -store trusted
Certmgr 1.1 (c) "Crypto-Pro", 2007-2021.
Program for managing certificates, CRLs and stores.
WARNING: Legacy parameter: "-store trusted"
=============================================================================
1-------
Issuer : E=dit@minsvyaz.ru, C=RU, S=77 Москва, L=г. Москва, STREET="улица Тверская, дом 7", O=Минкомсвязь России, OGRN=1047702026701, INN=007710474375, CN=Минкомсвязь России
Subject : E=dit@minsvyaz.ru, C=RU, S=77 Москва, L=г. Москва, STREET="улица Тверская, дом 7", O=Минкомсвязь России, OGRN=1047702026701, INN=007710474375, CN=Минкомсвязь России
Serial : 0x4E6D478B26F27D657F768E025CE3D393
SHA1 Thumbprint : 4bc6dc14d97010c41a26e058ad851f81c842415a
SubjKeyID : c254f1b46bd44cb7e06d36b42390f1fec33c9b06
Signature Algorithm : ГОСТ Р 34.11-2012/34.10-2012 256 бит
PublicKey Algorithm : ГОСТ Р 34.10-2012 256 бит (512 bits)
Not valid before : 06/07/2018 12:18:06 UTC
Not valid after : 01/07/2036 12:18:06 UTC
PrivateKey Link : No
2-------
Issuer : E=dit@digital.gov.ru, C=RU, S=77 Москва, L=г. Москва, STREET="Пресненская набережная, дом 10, строение 2", O=Минцифры России, OGRN=1047702026701, INNLE=7710474375, CN=Минцифры России
Subject : E=dit@digital.gov.ru, C=RU, S=77 Москва, L=г. Москва, STREET="Пресненская набережная, дом 10, строение 2", O=Минцифры России, OGRN=1047702026701, INNLE=7710474375, CN=Минцифры России
Serial : 0x00951FA3477C61043AADFA858627823442
SHA1 Thumbprint : 2f0cb09be3550ef17ec4f29c90abd18bfcaad63a
SubjKeyID : c91358b14ca7623a7ed23f3ca6e7147c9d70a386
Signature Algorithm : ГОСТ Р 34.11-2012/34.10-2012 256 бит
PublicKey Algorithm : ГОСТ Р 34.10-2012 256 бит (512 bits)
Not valid before : 08/01/2022 13:32:39 UTC
Not valid after : 08/01/2040 13:32:39 UTC
PrivateKey Link : No
Identification Kind : Personal presence
=============================================================================

[ErrorCode: 0x00000000]

Без trusted не работает Gost mTLS,
Без Минкомсвязь России в trusted. Ошибка <capi20>CertCreateCertificateChainEngine!failed: LastError = 0x800B0109
Без Минцифры России в Root, и ЦБ в uСА. Клиент на входящих отваливается по mTLS, даже с учетом trusted


Nginx
server { # Входящие запросы Gost mTLS

listen 2012 sspi;
server_name in.company.ru;

sspi_certificate 0x40601D00AE4F2110E4EF33.......;
sspi_verify_client on;
sspi_client_verify_local_crl_only on;
sspi_client_certificate trusted;
sspi_protocols TLSv1.2;
....

}

server { # исходящие запросы Gost mTLS
listen 8083;
server_name out.company.ru;
proxy_ssl_protocols TLSv1.2;
proxy_ssl_ciphers GOST2012-GOST8912-GOST8912:HIGH;

proxy_ssl_server_name on;
proxy_ssl_name other.ru;
proxy_sspi on;
proxy_ssl_verify on;
proxy_ssl_verify_local_crl_only on;
proxy_ssl_trusted_certificate trusted;
proxy_ssl_certificate 0x40601D00AE4F2110E4EF33.......;
....
}
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest (2)
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.