Статус: Новичок
Группы: Участники
Зарегистрирован: 29.08.2024(UTC) Сообщений: 2 
|
Добрый день. Необходима помощь в настройки ключей. Цель - собрать образ, который сможет подписывать обращения к национальному каталогу и честному знаку. Собираю в докере образ PHP8.2 + phpcades. Всё по минимуму - без fpm и всё от рута. Код:
FROM ubuntu:22.04
RUN apt update && apt install mc nano libboost-dev libxml2-dev git -y
RUN apt install software-properties-common ca-certificates lsb-release apt-transport-https -y
RUN LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php -y
RUN apt update && DEBIAN_FRONTEND="noninteractive" TZ="Europe/Moskow" apt install php8.2 php8.2-dev -y
# TODO user - сделать по необходимости
#RUN useradd -G www-data -d /home/crypt crypt
#WORKDIR /home/crypt
#RUN su crypt && cd ~
# https://docs.cryptopro.ru/cades/phpcades/phpcades-install?id=%d0%9f%d1%80%d0%b8%d0%bc%d0%b5%d1%80-%d1%81%d0%b1%d0%be%d1%80%d0%ba%d0%b8
COPY linux-amd64_deb.tgz .
# установить минимальный набор пакетов КриптоПро CSP, пакет lsb-cprocsp-devel версии 5.0 и пакет cprocsp-pki-cades
RUN tar xzf linux-amd64_deb.tgz
WORKDIR linux-amd64_deb
RUN ./install.sh lsb-cprocsp-devel cprocsp-pki-cades
# Скачать исходный код phpcades
RUN git clone https://github.com/CryptoPro/phpcades.git
WORKDIR phpcades
# указать путь к директории с заголовочными файлами PHP в переменной PHPDIR.
RUN sed -i -e 's/PHPDIR=\/php/PHPDIR=\/usr\/include\/php\/20220829\//' ./Makefile.unix
# применить файл патча для php8
RUN patch -p0 < ./php8_support.patch
# Перейти в директорию с исходниками расширения и выполнить команду
RUN eval `/opt/cprocsp/src/doxygen/CSP/../setenv.sh --64`; make -f Makefile.unix
# Создать в директории с расширениями символическую ссылку на собранную библиотеку libphpcades.so.
RUN cp ./libphpcades.so /usr/lib/php/20220829
# добавить расширение
RUN touch /etc/php/8.2/mods-available/libphpcades.ini
RUN echo "extension=libphpcades.so" >> /etc/php/8.2/mods-available/libphpcades.ini
RUN ln -s /etc/php/8.2/mods-available/libphpcades.ini /etc/php/8.2/cli/conf.d/20-libphpcades.ini
# Лицензия (https://github.com/Jumas-Cola/cryptopro/tree/master)
WORKDIR /opt/cprocsp/sbin/amd64/
#RUN cpconfig -license -set <серийный_номер>
RUN ./cpconfig -license -view
# Установка корневых сертификатов
WORKDIR ~
RUN mkdir certificates && curl -sS http://cpca.cryptopro.ru/cacer.p7b > certificates/cacer.p7b
# RUN /opt/cprocsp/bin/amd64/certmgr -inst -all -store uroot -file certificates/cacer.p7b - доделать
# Установка своих сертификатов
COPY bundle.zip .
RUN unzip -q bundle.zip
RUN cp -R a90d6ff5.000 /var/opt/cprocsp/keys/root/ # перенос контейнера
RUN /opt/cprocsp/bin/amd64/certmgr -inst -file public.cer # сертификат
RUN /opt/cprocsp/bin/amd64/certmgr -inst -file public.cer -cont '\\.\HDIMAGE\'"a90d6ff5-3599-481f-b2f7-5dd3cc9bd73f" #подвязка сертификата в контейнере
Далее в контейнере ставлю корневые сертификаты Код:
root@3c026277f8da:/app# /opt/cprocsp/bin/amd64/certmgr -inst -all -store uroot -file certificates/cacer.p7b
Certmgr Ver:5.0.13000 OS:Linux CPU:AMD64 (c) "Crypto-Pro", 2007-2024.
Program for managing certificates, CRLs and stores.
Installing:
=============================================================================
1-------
Issuer : E=cpca@cryptopro.ru, C=RU, L=Москва, O=ООО КРИПТО-ПРО, CN=УЦ KPИПTO-ПPO
Subject : E=cpca@cryptopro.ru, C=RU, L=Москва, O=ООО КРИПТО-ПРО, CN=УЦ KPИПTO-ПPO
Serial : 0x0FDD104EE49490BF80E711BE040559F1FE
SHA1 Thumbprint : c8e00fe58abd9bea94d0b8048f53e3e57448a430
SubjectKeyID : 72f05086b2809fad0239e0c393160ee2b3a77a26
Signature Algorithm : ГОСТ Р 34.11/34.10-2001
PublicKey Algorithm : ГОСТ Р 34.10-2001 (512 bits)
Not valid before : 09/03/2017 11:43:24 UTC
Not valid after : 09/03/2032 11:43:24 UTC
PrivateKey Link : No
2-------
Issuer : E=cpca@cryptopro.ru, C=RU, S=Москва, L=Москва, O="ООО ""КРИПТО-ПРО""", CN=УЦ КРИПТО-ПРО (ГОСТ 2012)
Subject : E=cpca@cryptopro.ru, C=RU, S=Москва, L=Москва, O="ООО ""КРИПТО-ПРО""", CN=УЦ КРИПТО-ПРО (ГОСТ 2012)
Serial : 0x0278A81A01F7AAEDBC418C69A4B26871D6
SHA1 Thumbprint : ec338e87c8a34be5ec53df164ddee40934176fb3
SubjectKeyID : 2f0f30ee1b2e93dae26d835df02636b8119486dd
Signature Algorithm : ГОСТ Р 34.11-2012/34.10-2012 512 бит
PublicKey Algorithm : ГОСТ Р 34.10-2012 512 бит (1024 bits)
Not valid before : 31/10/2019 16:59:08 UTC
Not valid after : 31/10/2034 16:59:08 UTC
PrivateKey Link : No
3-------
Issuer : E=cpca@cryptopro.ru, C=RU, S=Москва, L=Москва, O="ООО ""КРИПТО-ПРО""", CN=УЦ КРИПТО-ПРО (ГОСТ 2012)
Subject : E=cpca@cryptopro.ru, C=RU, S=Москва, L=Москва, O="ООО ""КРИПТО-ПРО""", CN=УЦ КРИПТО-ПРО (ГОСТ 2012)
Serial : 0x00DD104EE49490C280E711C10F7871BE9B
SHA1 Thumbprint : ae71dcfac7a211a78f415f5ecbf72986fb673563
SubjectKeyID : 06d84904600b6340c01fc6368563b09638e04a9b
Signature Algorithm : ГОСТ Р 34.11-2012/34.10-2012 512 бит
PublicKey Algorithm : ГОСТ Р 34.10-2012 512 бит (1024 bits)
Not valid before : 23/03/2017 11:59:49 UTC
Not valid after : 23/03/2032 11:59:49 UTC
PrivateKey Link : No
4-------
Issuer : E=cpca@cryptopro.ru, C=RU, S=Москва, L=Москва, O="ООО ""КРИПТО-ПРО""", CN=УЦ КРИПТО-ПРО (ГОСТ 2012)
Subject : E=cpca@cryptopro.ru, C=RU, S=Москва, L=Москва, O="ООО ""КРИПТО-ПРО""", CN=УЦ КРИПТО-ПРО (ГОСТ 2012)
Serial : 0x01E3FBF60031A9579540CA4145DB0C179C
SHA1 Thumbprint : 5269538f37d31c44f2ec22941941c864297a3e1a
SubjectKeyID : fdf55268ab6b48aa7efb695f722a7a1709b09a37
Signature Algorithm : ГОСТ Р 34.11-2012/34.10-2012 512 бит
PublicKey Algorithm : ГОСТ Р 34.10-2012 512 бит (1024 bits)
Not valid before : 03/08/2018 14:49:15 UTC
Not valid after : 03/08/2033 14:49:15 UTC
PrivateKey Link : No
5-------
Issuer : E=cpca@cryptopro.ru, C=RU, S=Москва, L=Москва, O="ООО ""КРИПТО-ПРО""", CN=УЦ КРИПТО-ПРО (ГОСТ 2012)
Subject : E=cpca@cryptopro.ru, C=RU, S=Москва, L=Москва, O="ООО ""КРИПТО-ПРО""", CN=УЦ КРИПТО-ПРО (ГОСТ 2012)
Serial : 0x0317BE3301C1AC17A948CF46A8C4F46F4D
SHA1 Thumbprint : 425fe75d8f3b23b13c508ba834428d365c07436b
SubjectKeyID : 1d5c58c03feb4407cf888dafae5382bb778ed464
Signature Algorithm : ГОСТ Р 34.11-2012/34.10-2012 512 бит
PublicKey Algorithm : ГОСТ Р 34.10-2012 512 бит (1024 bits)
Not valid before : 31/01/2021 18:30:28 UTC
Not valid after : 31/01/2036 18:30:28 UTC
PrivateKey Link : No
=============================================================================
CPCSP: Warning: installing a root certificate with an unconfirmed thumbprint is a security risk. Do you want to install this certificate?
Subject: УЦ KPИПTO-ПPO
Thumbprint (sha1): C8E00FE58ABD9BEA94D0B8048F53E3E57448A430
(o)OK, (c)Cancel
o
CPCSP: Warning: installing a root certificate with an unconfirmed thumbprint is a security risk. Do you want to install this certificate?
Subject: УЦ КРИПТО-ПРО (ГОСТ 2012)
Thumbprint (sha1): EC338E87C8A34BE5EC53DF164DDEE40934176FB3
(o)OK, (c)Cancel
o
CPCSP: Warning: installing a root certificate with an unconfirmed thumbprint is a security risk. Do you want to install this certificate?
Subject: УЦ КРИПТО-ПРО (ГОСТ 2012)
Thumbprint (sha1): AE71DCFAC7A211A78F415F5ECBF72986FB673563
(o)OK, (c)Cancel
o
CPCSP: Warning: installing a root certificate with an unconfirmed thumbprint is a security risk. Do you want to install this certificate?
Subject: УЦ КРИПТО-ПРО (ГОСТ 2012)
Thumbprint (sha1): 5269538F37D31C44F2EC22941941C864297A3E1A
(o)OK, (c)Cancel
o
CPCSP: Warning: installing a root certificate with an unconfirmed thumbprint is a security risk. Do you want to install this certificate?
Subject: УЦ КРИПТО-ПРО (ГОСТ 2012)
Thumbprint (sha1): 425FE75D8F3B23B13C508BA834428D365C07436B
(o)OK, (c)Cancel
o
[ErrorCode: 0x00000000]
Далее запускаю тест Код:<?php
$content = "test content";
$tsp_addres = "http://testca.cryptopro.ru/tsp/tsp.srf";
$store = new CPStore();
$store->Open(CURRENT_USER_STORE, "my", STORE_OPEN_READ_ONLY);
$certs = $store->get_Certificates();
$cert = $certs->Item(1);
if (!$cert) {
printf("Certificate not found\n");
return;
}
$signer = new CPSigner();
$signer->set_TSAAddress($tsp_addres);
$signer->set_Certificate($cert);
$sd = new CPSignedData();
$sd->set_Content($content);
try {
$sm = $sd->Sign($signer, 0, ENCODE_BASE64);
printf("Signature is:\n");
printf($sm);
printf("\n");
$sd->Verify($sm, 0, VERIFY_SIGNATURE_ONLY);
printf("Verify OK\n");
} catch (Exception $e) {
printf('%s: %s %s', $e->getLine(), $e->getMessage(), PHP_EOL);
}
Соответственно получаю ошибку: Код:
25: A certificate chain could not be built to a trusted root authority.
(0x800B010A)
Насколько могу оценить - сертификат стоит верно Код:root@3c026277f8da:/app# /opt/cprocsp/bin/amd64/certmgr -list
Certmgr Ver:5.0.13000 OS:Linux CPU:AMD64 (c) "Crypto-Pro", 2007-2024.
Program for managing certificates, CRLs and stores.
=============================================================================
1-------
Issuer : ИНН ЮЛ=7707329152, E=uc@tax.gov.ru, ОГРН=1047707030513, C=RU, S=77 Москва, L=г. Москва, STREET="ул. Неглинная, д. 23", O=Федеральная налоговая служба, CN=Федеральная налоговая служба
Subject : ......вырезано....
Serial : 0x022098B200DCB0178F41CDA30D03E2B4AB
SHA1 Thumbprint : 3023747826747ab72540498a63123a597e6b13fd
SubjectKeyID : 6e513902008c2b8749b76acd06a3dec15328444f
Signature Algorithm : ГОСТ Р 34.11-2012/34.10-2012 256 бит
PublicKey Algorithm : ГОСТ Р 34.10-2012 256 бит (512 bits)
Not valid before : 18/12/2023 10:40:15 UTC
Not valid after : 18/03/2025 10:50:15 UTC
PrivateKey Link : Yes
Container : HDIMAGE\\a90d6ff5.000\D03C
Provider Name : Crypto-Pro GOST R 34.10-2012 KC1 CSP
Provider Info : Provider Type: 80, Key Spec: 1, Flags: 0x0
Identification Kind : Without personal presence by qualified signature
OCSP URL : http://pki.tax.gov.ru/ocsp03/ocsp.srf
CA cert URL : http://pki.tax.gov.ru/crt/ca_fns_russia_2023_01.crt
CA cert URL : http://c0000-app005/crt/ca_fns_russia_2023_01.crt
CA cert URL : http://uc.nalog.ru/crt/ca_fns_russia_2023_01.crt
CDP : http://pki.tax.gov.ru/cdp/d156fb382c4c55ad7eb3ae0ac66749577f87e116.crl
CDP : http://c0000-app005/cdp/d156fb382c4c55ad7eb3ae0ac66749577f87e116.crl
CDP : http://uc.nalog.ru/cdp/d156fb382c4c55ad7eb3ae0ac66749577f87e116.crl
Extended Key Usage : 1.3.6.1.5.5.7.3.2 Проверка подлинности клиента
1.3.6.1.5.5.7.3.4 Защищенная электронная почта
1.2.643.2.2.34.34.1.3.7777
=============================================================================
[ErrorCode: 0x00000000]
Что мне нужно проверить и что сделать чтобы обнаружить проблему?
|