Установка крипто про csp и php расширений на Centos 7

Обновлено 01.02.2017

крипто про csp

Добрый день уважаемые читатели и подписчики блога, сегодня я хочу вам рассказать как производится установка крипто про csp и php расширений на Centos 7. Кто не в курсе Крипто про это программный комплекс криптографических утилит, созданный на основе CA Windows, но под российские стандарты. Его основные функции, это организация структуры PKI и работа с ЭЦП (электронно-цифровыми подписями). Сама установка crypto pro csp и cadescom в операционных системах Windows дело очень простое, а вот в терминале CentOS 7, уже повеселее. Ниже мы рассмотрим подробную инструкцию, как это делать.

Как установить Крипто про и расширения для языка PHP

И так, напоминаю, что мы с вами уже слегка знакомились с crypto pro, точнее с его последствиями, после установки, а именно решалась ошибка 80072EE2 при обновлении Windows, где приходилось его удалять и вычищать систему, сегодня задача обратная, установка, да не просто, а в терминале Centos 7. Ставить мы будем специальное расширение. Расширение для языка PHP предназначено для встраивания криптографических операций в серверные приложения на языке PHP с использованием сертифицированного СКЗИ КриптоПро CSP.

Расширение предоставляет программный интерфейс, аналогичный КриптоПро ЭЦП Browser plug-in, для выполнения следующих криптографических операций:

  • работа с сертификатами;
  • создание и проверка подписи форматов CAdES BES, CAdES-T, CAdES-X Long Type 1;
  • шифрование и расшифрование данных.

Вот по этой ссылке http://cpdn.cryptopro.ru/default.asp?url=content/cades/phpcades.html, выложен алгоритм установки крипто про csp на CentOS 7, но в очень сжатом виде, прочитав его у меня осталось очень много вопросов, я если честно был не приятно удивлен, что на этот вопрос, практически нет никакой информации, особенно на официальном сайте.

Собираем libphpcades

Для того, чтобы собрать libphpcades, у вас во первых, должна быть установлена CentOS 7. Далее мы должны установить пакеты boost-devel и php-devel, приступаем, добавляем репозиторий и ставим boost-devel.

sudo wget http://repo.enetres.net/enetres.repo -O /etc/yum.repos.d/enetres.repo
sudo yum install boost-devel

Следующим шагом, мы ставим пакет php-devel с помощью команды.

yum install php-devel

Далее ставим lsb пакет (Linux Standard Base)

yum install lsb

Далее переходим в папку root, если вы не в ней, с помощью команды

cd root

И скачиваем дистрибутив крипто про csp 4

wget https://www.cryptopro.ru/sites/default/files/private/csp/40/9842/linux-amd64.tgz

Остальные версии можно посмотреть на официальном сайте  Крипто ПРО. Для скачивания вам нужно будет зарегистрироваться.Установка крипто про csp на Centos 7-1

Далее распаковываете архив с помощью tar и даете возможность запускать скрипт install.sh

chmod +x ./install.sh

Все теперь, можно устанавливать самый главный компонент libphpcades, сам крипто про csp 4

./install.sh

Далее после установки, прописываем переменные окружения, или перемещаемся в папку /opt/cprocsp/

export PATH="$PATH:$(ls -d /opt/cprocsp/{s,}bin/*|tr '\n' ':')"

Затем до установим, еще два пакета cprocsp-rdr-gui-gtk и lsb-cprocsp-devel

yum install cprocsp-rdr-gui-gtk-64-4.0.0-4.x86_64.rpm
yum install lsb-cprocsp-devel-5.0.0-4.noarch

Затем следует установить пакет cprocsp-pki-2.0.0-cades.rpm из состава КриптоПро ЭЦП SDK. Скачиваем архив, лтбо вручную и потом через ssh передаем, либо скачиваем через wget. Скачивайте КриптоПро ЭЦП SDK 2.0, именно ее, так как она содержит пакет cprocsp-pki-2.0.0-cades.rpm.

Установка крипто про csp на Centos 7-2

https://www.cryptopro.ru/sites/default/files/products/cades/current_release_2_0/cades_linux_amd64.tar.gz

Посмотреть список пакетом, можно командой

rpm -qa|grep cpro

  • lsb-cprocsp-kc1-64-4.0.0-4.x86_64
  • cprocsp-pki-cades-2.0.0-1.x86_64
  • lsb-cprocsp-base-4.0.0-4.noarch
  • lsb-cprocsp-capilite-64-4.0.0-4.x86_64
  • cprocsp-curl-64-4.0.0-4.x86_64
  • lsb-cprocsp-devel-5.0.0-4.noarch
  • lsb-cprocsp-rdr-64-4.0.0-4.x86_64
  • cprocsp-rdr-gui-gtk-64-4.0.0-4.x86_64
  • cprocsp-pki-plugin-2.0.0-1.x86_64

Далее делаем следующее.

  • В файле /opt/cprocsp/src/phpcades/Makefile.unix указать путь к исходным текстам нужной версии PHP в переменной PHPDIR, но перд этим вы должны скачать исходные файлы php, нужной версии. Смотрим какая версия php у вас установлена.

php -v

PHP 5.6.30 (cli) (built: Jan 19 2017 08:09:42)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
You have mail in /var/spool/mail/root

установка libphpcades

Затем идете на официальный сайт php http://php.net/releases/ и находите там нужную вам версию, у меня это 5.6.3

установка libphpcades-2

У меня файл Makefile.unix выглядит вот  так:

Установка libphpcades

Теперь находясь в /opt/cprocsp/src/phpcade в зависимости от разрядности системы выполнить:

Для 64 битной системы

eval `/opt/cprocsp/src/doxygen/CSP/../setenv.sh --64`; make -f Makefile.unix

или для 32 битной системы

eval `/opt/cprocsp/src/doxygen/CSP/../setenv.sh --32`; make -f Makefile.unix

У вас должна начаться собираться libphpcades, но бывают и грабли как в моем случае. Были вот такого типа:

[root@bx1 phpcades]# eval `/opt/cprocsp/src/doxygen/CSP/../setenv.sh --64`; make -f Makefile.unix
g++ -DLINUX -DUNIX -DHAVE_LIMITS_H -DHAVE_STDINT_H -I/opt/cprocsp/include/ -I/opt/cprocsp/include/cpcsp -I/opt/cprocsp/include/pki -I/opt/cprocsp/include/pki/atl -I/opt/cprocsp/include/pki/cppcades -I/opt/cprocsp/include/pki/cplib -I/root/php -I/root/php/main -I/root/php/Zend -I/root/php/TSRM -DSIZEOF_VOID_P=8 -fPIC -DPIC -c -o PHPCadesCPSigners.o PHPCadesCPSigners.cpp
PHPCadesCPSigners.cpp:1: error: expected constructor, destructor, or type conversion before string constant
In file included from /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/new:40,
from /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/ext/new_allocator.h:33,
from /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/x86_64-redhat-linux/bits/c++allocator.h:34,
from /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/allocator.h:48,
from /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/string:43,
from /opt/cprocsp/include/pki/cplib/StringProxy.h:50,
from /opt/cprocsp/include/pki/cplib/DateTime.h:31,
from /opt/cprocsp/include/pki/cppcades/CPPCadesDate.h:4,
from /opt/cprocsp/include/pki/cppcades/CPPCadesCPSigner.h:9,
from PHPCadesCPSigner.h:4,
from PHPCadesCPSigners.cpp:3:
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/exception:35: error: expected declaration before end of line
make: *** [PHPCadesCPSigners.o] Error 1
You have mail in /var/spool/mail/root

или вот такое

[root@bx1 phpcades]# eval `/opt/cprocsp/src/doxygen/CSP/../setenv.sh --64`; make -f Makefile.unix
No compiler specified... trying to guess
/opt/cprocsp/src/doxygen/CSP/../setenv.sh: line 107: type: g++: not found
/opt/cprocsp/src/doxygen/CSP/../setenv.sh: line 125: type: clang++: not found
Nothing is found
g++ -DLINUX -DUNIX -DHAVE_LIMITS_H -I/ -I/cpcsp -I/pki -I/pki/atl -I/pki/cppcades -I/pki/cplib -I/root/php -I/root/php/main -I/root/php/Zend -I/root/php/TSRM -DSIZEOF_VOID_P= -fPIC -DPIC -c -o PHPCadesCPSigners.o PHPCadesCPSigners.cpp
make: g++: Command not found
make: *** [PHPCadesCPSigners.o] Error 127

Error 127 решается установкой yum install gcc-c++

Еще может быть ошибка error: expected constructor, destructor, or type conversion before, тут есть синтаксическая ошибка смотрите файл.

[root@bx1 phpcades]# eval `/opt/cprocsp/src/doxygen/CSP/../setenv.sh --64`; make -f Makefile.unix
make: Warning: File `Makefile.unix' has modification time 92 s in the future
g++ -DLINUX -DUNIX -DHAVE_LIMITS_H -DHAVE_STDINT_H -I/opt/cprocsp/include/ -I/opt/cprocsp/include/cpcsp -I/opt/cprocsp/include/pki -I/opt/cprocsp/include/pki/atl -I/opt/cprocsp/include/pki/cppcades -I/opt/cprocsp/include/pki/cplib -I/root/php -I/root/php/main -I/root/php/Zend -I/root/php/TSRM -DSIZEOF_VOID_P=8 -fPIC -DPIC -c -o PHPCadesCPSigners.o PHPCadesCPSigners.cpp
In file included from stdafx.h:70,
from PHPCadesCPSigners.cpp:1:
/root/php/main/php.h:85:1: warning: "assert" redefined
In file included from /usr/include/boost/assert.hpp:54,
from /usr/include/boost/align/detail/align.hpp:12,
from /usr/include/boost/align/align.hpp:17,
from /usr/include/boost/smart_ptr/detail/array_allocator.hpp:12,
from /usr/include/boost/smart_ptr/detail/array_count_impl.hpp:12,
from /usr/include/boost/smart_ptr/make_shared_array.hpp:12,
from /usr/include/boost/smart_ptr/make_shared.hpp:18,
from /usr/include/boost/make_shared.hpp:15,
from /opt/cprocsp/include/pki/atl/atlcrypt2.inl:8,
from /opt/cprocsp/include/pki/atl/atlcrypt2.h:2262,
from stdafx.h:35,
from PHPCadesCPSigners.cpp:1:
/usr/include/assert.h:88:1: warning: this is the location of the previous definition
In file included from stdafx.h:35,
from PHPCadesCPSigners.cpp:1:
/opt/cprocsp/include/pki/atl/atlcrypt2.h:21: error: expected constructor, destructor, or type conversion before '<' token
In file included from /opt/cprocsp/include/pki/atl/atlcrypt2.h:46,
from stdafx.h:35,
from PHPCadesCPSigners.cpp:1:
/opt/cprocsp/include/pki/atl/atlmem.h:23: error: expected declaration before end of line
make: *** [PHPCadesCPSigners.o] Error 1
You have mail in /var/spool/mail/root

 

  • Узнать путь к расширениям в вашей системе:
    Командная оболочка
     php -i | grep extension_dir
    
  • Cоздать в директории с расширениями символическую ссылку на собранную libphpcades
  • В файле php.ini добавить расширение:
    Командная оболочка
    extension=libphpcades.so
    
    

Теперь давайте посмотрим лицензию Крипто ПРО CSP с помощью команды

cpconfig -license -view

Установить лицензию Крипто ПРО CSP в CentOS 7, можно вот так.

cpconfig -license -set ваша_лицензия

Автор - Сёмин Иван

6 Responses to Установка крипто про csp и php расширений на Centos 7

  1. Дмитрий:

    Добрый день. Сможете помочь все это установить нам на CentOS за отдельную плату?
    Задача стоит в подписании по ГОСТ xml файла, отправка его по API ответ приходит тоже подписанный, нужно снять подпись. Все это на php

  2. Иван Семин:

    Дмитрий, я не программист, вам лучше подыскать знающего человека, я лишь показал административную составляющую.

  3. Николай:

    wget http://repo.enetres.net/enetres.repo -O /etc/yum.repos.d/enetres.repo
    —2018-05-07 09:40:32— http://repo.enetres.net/enetres.repo
    Распознаётся repo.enetres.net (repo.enetres.net)… 109.234.83.181
    Подключение к repo.enetres.net (repo.enetres.net)|109.234.83.181|:80… ошибка: Время ожидания соединения истекло.
    Повтор.

    —2018-05-07 09:42:42— (попытка: 2) http://repo.enetres.net/enetres.repo
    Подключение к repo.enetres.net (repo.enetres.net)|109.234.83.181|:80… ошибка: Время ожидания соединения истекло.
    Повтор.

    —2018-05-07 09:44:54— (попытка: 3) http://repo.enetres.net/enetres.repo
    Подключение к repo.enetres.net (repo.enetres.net)|109.234.83.181|:80… ^C

  4. Евгений:

    Вроде все делаю по инструкции. Но не собирается. Кроме того не могу найти где взять lsb-cprocsp-devel-5.0.0-4.noarch устанавливается только devel-4.*. Сможете проконсультиовать за до плату по сборке libphpcades для php 7.1 на centos 7 (только серверную часть, с php будем разибраться сами) ?

  5. Алекс:

    Евгений, установите devel-4.*., она тоже прокатывает ))

    на всякий случай подсказка: чтоб расширение с исходником ПХП собралось, недостаточно скачать исходник ПХП, нужно ещё выполнить в его каталоге команду ./configure

  6. Ильнур:

    Добрый день. Кто может помочь с этим делом за отдельную плату?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *