Skip to content

Latest commit

 

History

History
113 lines (81 loc) · 5.07 KB

INSTALL.md

File metadata and controls

113 lines (81 loc) · 5.07 KB

Компиляция расширения КриптоПро для PHP

  1. Скачать КриптоПро CSP, например КриптоПро CSP 5.0 для Linux (x64, rpm)
  2. Скачать КриптоПро ЭЦП Browser plug-in, например для Linux 64 бита
  3. Если используется PHP 7+, то дополнительно потребуется скачать php7_support.patch

В листинге ниже предполагается расположение указанных файлов в домашнем каталоге.

# установить дополнительные зависимости для сборки расширения PHP
yum install boost-devel php-devel lsb gcc-c++

# установить КриптоПро CSP
cd ~
tar zxf linux-amd64.tgz
cd linux-amd64
./install.sh

# установить КриптоПро ЭЦП Browser Plug-in
cd ~
tar xzf cades_linux_amd64.tar.gz
cd cades_linux_amd64

yum install cprocsp-pki-2.0.0-amd64-cades.rpm 
yum install cprocsp-pki-2.0.0-amd64-phpcades.rpm
yum install lsb-cprocsp-devel-5.0.11455-5.noarch.rpm

# указать путь до исходных файлов в конфигурационном файле
#   * PHPDIR=/root/php
vi /opt/cprocsp/src/phpcades/Makefile.unix

# скачать исходные коды PHP текущей версии
cd ~
export PHP_VERSION=$(php -r "echo phpversion();")
wget https://www.php.net/distributions/php-${PHP_VERSION}.tar.gz -O php.tar.gz
tar xzf php.tar.gz
mv php-${PHP_VERSION} php

# подготовить PHP к сборке
cd php
./configure

# применить патч к PHP версии 7.0 и выше
cp ~/php7_support.patch /opt/cprocsp/src/phpcades/
cd /opt/cprocsp/src/phpcades/
patch -p0 < ./php7_support.patch

# выполнить сборку расширения
cd /opt/cprocsp/src/phpcades
eval `/opt/cprocsp/src/doxygen/CSP/../setenv.sh --64`; make -f Makefile.unix

# копировать или создать ссылку на libphpcades.so в папке расширений
# php -i | grep extension_dir # (подсмотреть путь хранения расширений)
ln -s /opt/cprocsp/src/phpcades/libphpcades.so /usr/lib64/php/modules/phpcades.so

# добавить расширение в список загрузки
#   + extension=phpcades.so
vi /etc/php.ini

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

php --re php_CPCSP

Установка сертификата с приватным ключом

При выполнении листинга ниже предполагается, что в PATH содержится путь до исполняемых файлов КриптоПРО CSP /opt/cprocsp/bin/amd64/ и /opt/cprocsp/sbin/amd64/.

Метод прямого запроса

TODO

Метод экспорта и импорта c HDIMAGE

Для наглядности, установка сертификата производится для пользователя john и именем контейнера \\.\HDIMAGE\c0197fed-f095-c6c4-245c-c47915aecd5f

На машине-источнике:

# 0. просмотреть установленные сертификаты
certmgr -list

# 1. экспорт сертификата
#   a. выбрать нужный сертификат
#   b. записать значение Container, например 'HDIMAGE\\c0197fed.000\F698'
#   c. ввести номер выбраного сертификата
certmgr -export -dest certificate.cer

# 2. экспорт контейнера, например для 'HDIMAGE\\c0197fed.000\F698' рабочим каталогом будет 'c0197fed.000'
cp -R /var/opt/cprocsp/keys/$(whoami)/c0197fed.000 <destination_host>/var/opt/cprocsp/key/john

На целевой машине:

# поправить права доступа к контейнеру
sudo chown -R john:john /var/opt/cprocsp/key/john/c0197fed.000
chmod 600 /var/opt/cprocsp/key/john/c0197fed.000/*

# проверить видимость контейнера
csptest -keyset -enum_cont -verifycontext -fqcn

# связать сертификат с контейнером, например '\\.\HDIMAGE\c0197fed-f095-c6c4-245c-c47915aecd5f'
certmgr -inst -store uMy -file /home/john/certificate.cer -cont '\\.\HDIMAGE\c0197fed-f095-c6c4-245c-c47915aecd5f'

# проверить подписание на произвольном файле
cryptcp -signf -dn E=john@doe.com document.pdf
cat document.pdf.sgn