Установка крипто про csp и php расширений на Centos 7
Добрый день уважаемые читатели и подписчики блога, сегодня я хочу вам рассказать как производится установка крипто про 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 yum install boost-devel
Следующим шагом, мы ставим пакет php-devel с помощью команды.
Далее ставим lsb пакет (Linux Standard Base)
Далее переходим в папку root, если вы не в ней, с помощью команды
И скачиваем дистрибутив крипто про csp 4
wget https://www.cryptopro.ru/sites/default/files/private/csp/40/9842/linux-amd64.tgz
Остальные версии можно посмотреть на официальном сайте Крипто ПРО. Для скачивания вам нужно будет зарегистрироваться.
Далее распаковываете архив с помощью tar, и даете возможность запускать скрипт install.sh
Все теперь, можно устанавливать самый главный компонент libphpcades, сам крипто про csp 4
Далее после установки, прописываем переменные окружения, или перемещаемся в папку /opt/cprocsp/
Затем до установим, еще два пакета cprocsp-rdr-gui-gtk и lsb-cprocsp-devel
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.
Посмотреть список пакетом, можно командой
- 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 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
Затем идете на официальный сайт php http://php.net/releases/ и находите там нужную вам версию, у меня это 5.6.3
У меня файл Makefile.unix выглядит вот так:
Теперь находясь в /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
или вот такое
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: 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 с помощью команды
Установить лицензию Крипто ПРО CSP в CentOS 7, можно вот так.
Добрый день. Сможете помочь все это установить нам на CentOS за отдельную плату?
Задача стоит в подписании по ГОСТ xml файла, отправка его по API ответ приходит тоже подписанный, нужно снять подпись. Все это на php
Дмитрий, я не программист, вам лучше подыскать знающего человека, я лишь показал административную составляющую.
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
Вроде все делаю по инструкции. Но не собирается. Кроме того не могу найти где взять lsb-cprocsp-devel-5.0.0-4.noarch устанавливается только devel-4.*. Сможете проконсультиовать за до плату по сборке libphpcades для php 7.1 на centos 7 (только серверную часть, с php будем разибраться сами) ?
Евгений, установите devel-4.*., она тоже прокатывает ))
на всякий случай подсказка: чтоб расширение с исходником ПХП собралось, недостаточно скачать исходник ПХП, нужно ещё выполнить в его каталоге команду ./configure
Добрый день. Кто может помочь с этим делом за отдельную плату?