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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline crabs32  
#1 Оставлено : 14 октября 2020 г. 11:31:54(UTC)
crabs32

Статус: Новичок

Группы: Участники
Зарегистрирован: 07.10.2020(UTC)
Сообщений: 2

Добрый день!
при запуске скрипта


Цитата:
$store = new CPStore();
$store->Open(CURRENT_USER_STORE, "My", STORE_OPEN_READ_ONLY);

$certs = $store->get_Certificates();
$certs = $certs->Find(CERTIFICATE_FIND_SHA1_HASH, "c4a457ca37e7949d85d4f7e442be8f07827aab52", 0);
$cert = $certs->Item(1);

print $cert->get_Thumbprint();
print "\n";


выходит ошибка "PHP Fatal error: Class 'CPStore' not found"

Тестовый сертификат и расширение libcppcades установлены.

Что я упускаю?
Offline Александр Лавник  
#2 Оставлено : 19 октября 2020 г. 9:25:32(UTC)
Александр Лавник

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

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

Сказал «Спасибо»: 53 раз
Поблагодарили: 785 раз в 726 постах
Автор: crabs32 Перейти к цитате
Добрый день!
при запуске скрипта


Цитата:
$store = new CPStore();
$store->Open(CURRENT_USER_STORE, "My", STORE_OPEN_READ_ONLY);

$certs = $store->get_Certificates();
$certs = $certs->Find(CERTIFICATE_FIND_SHA1_HASH, "c4a457ca37e7949d85d4f7e442be8f07827aab52", 0);
$cert = $certs->Item(1);

print $cert->get_Thumbprint();
print "\n";


выходит ошибка "PHP Fatal error: Class 'CPStore' not found"

Тестовый сертификат и расширение libcppcades установлены.

Что я упускаю?

Здравствуйте.

Вы выполнили пункты 10-12 инструкции?
Техническую поддержку оказываем тут
Наша база знаний
Offline ava.vergazov  
#3 Оставлено : 5 июня 2024 г. 13:39:45(UTC)
ava.vergazov

Статус: Новичок

Группы: Участники
Зарегистрирован: 05.06.2024(UTC)
Сообщений: 7
Российская Федерация
Откуда: Великие Луки

Такая же проблема, пункты 10-12 выполнил. Но все равно при попытке обратиться к классу получаю ошибку. У меня проект на laravel. Возможно нужны какие-то дополнительные манипуляции, раз я через фреймворк работаю.
Offline ava.vergazov  
#4 Оставлено : 6 июня 2024 г. 10:56:52(UTC)
ava.vergazov

Статус: Новичок

Группы: Участники
Зарегистрирован: 05.06.2024(UTC)
Сообщений: 7
Российская Федерация
Откуда: Великие Луки

Вот как выглядит мой dockerfile(упустил установку пакетов, все что нужно установил по инструкции)

RUN mkdir -p /tmp/src/dist

COPY dist/linux-amd64_deb.tgz /tmp/src/dist
COPY dist/php8_support.patch.zip /tmp/src/dist

RUN cd /tmp/src/dist/ && \
tar -xf linux-amd64_deb.tgz

RUN cd /tmp/src/dist/linux-amd64_deb && \
./install.sh && \
apt install ./lsb-cprocsp-devel*.deb && \
dpkg -i \
cprocsp-pki-cades*.deb \
cprocsp-pki-phpcades*.deb\
lsb-cprocsp-devel*.deb

RUN cd /bin && \
ln -s /opt/cprocsp/bin/amd64/certmgr && \
ln -s /opt/cprocsp/bin/amd64/cpverify && \
ln -s /opt/cprocsp/bin/amd64/cryptcp && \
ln -s /opt/cprocsp/bin/amd64/csptest && \
ln -s /opt/cprocsp/bin/amd64/csptestf && \
ln -s /opt/cprocsp/bin/amd64/der2xer && \
ln -s /opt/cprocsp/bin/amd64/inittst && \
ln -s /opt/cprocsp/bin/amd64/wipefile && \
ln -s /opt/cprocsp/sbin/amd64/cpconfig

RUN cd /tmp/src && \
PHP_BUILD=`php -i | grep 'PHP Extension => ' | awk '{print $4}'` && \
EXT_DIR=`php -i | grep 'extension_dir => ' | awk '{print $3}'` && \
sed -i "s#PHPDIR=/php#PHPDIR=/usr/include/php/$PHP_BUILD#g" /opt/cprocsp/src/phpcades/Makefile.unix


RUN cd /tmp/src/dist && \
unzip php8_support.patch.zip && \
cp php8_support.patch /opt/cprocsp/src/phpcades

RUN cd /opt/cprocsp/src/phpcades && \
patch -p0 < ./php8_support.patch

RUN cd /opt/cprocsp/src/phpcades && \
eval `/opt/cprocsp/src/doxygen/CSP/../setenv.sh --64`; make -f Makefile.unix

RUN ln -s /opt/cprocsp/src/phpcades/libphpcades.so /usr/lib/php/20230831/libphpcades.so

RUN echo "extension=libphpcades.so" > /etc/php/8.3/cli/conf.d/20-libphpcades.ini

В процессе установки явных ошибок не увидел, после запуска контейнера, консоль не ругается, вижу вот такой лог:

2024-06-06 07:37:03,869 INFO Set uid to user 0 succeeded
2024-06-06 10:37:03 2024-06-06 07:37:03,878 INFO supervisord started with pid 1
2024-06-06 10:37:04 2024-06-06 07:37:04,885 INFO spawned: 'php' with pid 16
2024-06-06 10:37:05 2024-06-06 07:37:05,887 INFO success: php entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2024-06-06 10:37:06
2024-06-06 10:37:06 INFO Server running on [http://0.0.0.0:80].
2024-06-06 10:37:06
2024-06-06 10:37:06 Press Ctrl+C to stop the server
2024-06-06 10:37:06
2024-06-06 10:42:05 2024-06-06 07:42:04 ................................................... ~ 1s
2024-06-06 10:42:05 2024-06-06 07:42:04 /favicon.ico ...................................... ~ 1s

Так же в консоли попробовал запустить команду php --re php_CPCSP. Вывел описание класса:

Extension [ <persistent> extension #37 php_CPCSP version 0.1 ] {

- Constants [185] {
Constant [ int MEMORY_STORE ] { 0 }
Constant [ int LOCAL_MACHINE_STORE ] { 1 }
Constant [ int CURRENT_USER_STORE ] { 2 } ..... и т.д.

Что я упускаю? Класс все равно не видит

Offline ava.vergazov  
#5 Оставлено : 10 июня 2024 г. 10:55:08(UTC)
ava.vergazov

Статус: Новичок

Группы: Участники
Зарегистрирован: 05.06.2024(UTC)
Сообщений: 7
Российская Федерация
Откуда: Великие Луки

Вроде что-то заработало. Пытаюсь сейчас заставить работать пример https://docs.cryptopro.r...pcades/phpcades-samples. Хочу сперва получить список установленных сертификатов. Задампил то что возвращает SetupCertificates(). Метод вернул мне пустой объект CPCertificates. Так понимаю метод, в хранилище uMy не видит сертификатов.
Я установил самоподписанный сертификат по инструкции https://www.altlinux.org...%D0%B0%D1%82%D0%BE%D0%B2

certmgr -list -store uMy, видит сертификат, код из примера - нет.

Вывод certmgr -list -store uMy:

# certmgr -list -store uMy
Certmgr Ver:5.0.13000 OS:Linux CPU:AMD64 (c) "Crypto-Pro", 2007-2024.
Program for managing certificates, CRLs and stores.
=============================================================================
1-------
Issuer : S=Some State, L=VL, O=Medtime, OU=Main, CN=Artem
Subject : S=Some State, L=VL, O=Medtime, OU=Main, CN=Artem
Serial : 0x244488FB9141155789F4A4A0A0F64DE6FACF8C70
SHA1 Thumbprint : 82166bcd644e0ac050e9733e7bdfc0e3980198a3
SubjectKeyID : c659105e79e98e7e85b3d74769b6cb2b99983480
Signature Algorithm : sha256RSA
PublicKey Algorithm : RSA (2048 bits)
Not valid before : 10/06/2024 07:34:56 UTC
Not valid after : 10/06/2025 07:34:56 UTC
PrivateKey Link : No
Offline nickm  
#6 Оставлено : 10 июня 2024 г. 12:21:46(UTC)
nickm

Статус: Активный участник

Группы: Участники
Зарегистрирован: 31.05.2016(UTC)
Сообщений: 2,019

Сказал(а) «Спасибо»: 504 раз
Поблагодарили: 347 раз в 328 постах
Автор: ava.vergazov Перейти к цитате
certmgr -list -store uMy, видит сертификат, код из примера - нет.

Вывод certmgr -list -store uMy:

Код:
#  certmgr -list -store uMy

Ваш код выполняется от root?

Offline ava.vergazov  
#7 Оставлено : 10 июня 2024 г. 15:36:37(UTC)
ava.vergazov

Статус: Новичок

Группы: Участники
Зарегистрирован: 05.06.2024(UTC)
Сообщений: 7
Российская Федерация
Откуда: Великие Луки

Нет не от root, но все равно сертификат видит.

Попробовал установить сертификат и привязать его к контейнеру. (вот по этой документации - https://www.altlinux.org...E%D0%9F%D1%80%D0%BE_CSP)

Результат тот-же.

В консольке вывожу certmgr -list -store uMy, получаю:

root@6b33a328a01c:/tmp/src/dist# certmgr -list -store uMy
Certmgr Ver:5.0.13000 OS:Linux CPU:AMD64 (c) "Crypto-Pro", 2007-2024.
Program for managing certificates, CRLs and stores.
=============================================================================
1-------
Issuer : E=support@cryptopro.ru, C=RU, L=Moscow, O=CRYPTO-PRO LLC, CN=CRYPTO-PRO Test Center 2
Subject : E=ivanov@bank.ru, CN=Ivanov
Serial : 0x1200642D56E9232E5842031183000200642D56
SHA1 Thumbprint : 4f11b5bdc201afeedb6a6706658a5802d210f3d4
SubjectKeyID : 7133ae7abbca6a42ce519254617f9598332629cb
Signature Algorithm : ГОСТ Р 34.11-2012/34.10-2012 256 бит
PublicKey Algorithm : ГОСТ Р 34.10-2012 256 бит (512 bits)
Not valid before : 10/06/2024 11:58:24 UTC
Not valid after : 10/08/2024 12:08:24 UTC
PrivateKey Link : Yes
Container : HDIMAGE\\test.000\2EF8
Provider Name : Crypto-Pro GOST R 34.10-2012 KC1 CSP
Provider Info : Provider Type: 80, Key Spec: 1, Flags: 0x0
CA cert URL : http://testca.cryptopro....Test%20Center%202(2).crt
OCSP URL : http://testca.cryptopro.ru/ocsp/ocsp.srf
CDP : http://testca.cryptopro....Test%20Center%202(2).crl


Задампленый SetupCertificates() возвращает - "CPCertificates {#275} // app/Http/Controllers/TestController.php:71"

Offline ava.vergazov  
#8 Оставлено : 13 июня 2024 г. 12:08:47(UTC)
ava.vergazov

Статус: Новичок

Группы: Участники
Зарегистрирован: 05.06.2024(UTC)
Сообщений: 7
Российская Федерация
Откуда: Великие Луки

Коллеги, сможете помощь оказать?

Сейчас ситуация следующая: подключил библиотеку и установил тестовый сертификат. При попытке выполнить код из примера, получаю ошибку - Cannot find object or property. (0x80092004)
Как я понимаю, проблема начинается с того, что метод SetupCertificates() мне ничего не возвращает. Хотя должен вернуть список установленных сертификатов.
Offline ava.vergazov  
#9 Оставлено : 18 июня 2024 г. 14:29:55(UTC)
ava.vergazov

Статус: Новичок

Группы: Участники
Зарегистрирован: 05.06.2024(UTC)
Сообщений: 7
Российская Федерация
Откуда: Великие Луки

И еще вопрос, библиотеку обязательно собирать вместе с исходниками PHP? Или я могу php поставить через apt.
Offline ava.vergazov  
#10 Оставлено : 21 июня 2024 г. 9:47:54(UTC)
ava.vergazov

Статус: Новичок

Группы: Участники
Зарегистрирован: 05.06.2024(UTC)
Сообщений: 7
Российская Федерация
Откуда: Великие Луки

Отбой, решил вопрос. Проблема была с правами, разобрался, все работает.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.