Skip to content

Instantly share code, notes, and snippets.

@deemru

deemru/HLF Secret

Last active February 25, 2021 16:39
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save deemru/298e7370b7eae4881268cf58b3b758e5 to your computer and use it in GitHub Desktop.
Save deemru/298e7370b7eae4881268cf58b3b758e5 to your computer and use it in GitHub Desktop.
КриптоПро HLF для разработчика

КриптоПро HLF для разработчика

Исходные данные:

Текущее состояние:

  • Плагин cpro.so реализует расширенный функционал стандартного модуля BCCSP, обеспечивая поддержку ГОСТ.
  • При инициализации MSP отрабатывает штатный функционал, который при обнаружении сертификатов ГОСТ переключается на использование в качестве хэша на ГОСТ Р 34.11-2012 и в качестве подписи и проверки подписи на ГОСТ Р 34.10-2012.
  • Работа с построением цепочек доверия и проверкой сертификатов на отзыв пока не реализована (TODO).
  • Поддерживаются только 256-битные версии алгоритмов 2012 года.

Порядок установки:

  • Используем репозиторий выше
  • Устанавливаем плагин (/usr/lib/cpro.so)
  • Устанавливаем КриптоПро CSP >= 4.0
  • Подключаем плагин в файлах orderer.yaml и core.yaml в секции BCCSP:
Default: PLUGIN
PLUGIN:
    Library: /usr/lib/cpro.so
    Config:
    Hash: SHA2
    Security: 256
    FileKeyStore:
    KeyStore: /etc/hyperledger/fabric/msp/keystore 
  • Собираем HyperLedger Fabric:
GOPATH=/go GO_TAGS=pluginsenabled make peer orderer

Пример использования сертификатов:

  • Получение тестового сертификата:
/opt/cprocsp/bin/amd64/cryptcp -creatcert -provtype 80 -rdn "CN=fab1,OU=COP" -cont "\\\\.\\HDIMAGE\\fab1" -ku -du -ex -ca http://cryptopro.ru/certsrv
  • Экспорт сертификата:
/opt/cprocsp/bin/amd64/certmgr -export -dest fab1.pem -base64
  • Расположение сертификатов в admincerts и signcerts

Пример работы без использования Docker

В своих тестах мы используем данный пример: https://github.com/chainforce/native-fabric

Пример работы с Docker

FROM golang:1.12.8
# Install development dependencies
RUN apt-get update \
&& apt-get install -y apt-utils python-dev \
&& apt-get install -y libsnappy-dev zlib1g-dev libbz2-dev libyaml-dev libltdl-dev libtool \
&& apt-get install -y python-pip \
&& apt-get install -y tree jq unzip \
&& apt-get install -y git \
&& rm -rf /var/cache/apt
ENV FABRIC_ROOT=$GOPATH/src/github.com/hyperledger/fabric
ENV FABRIC_CFG_PATH=/etc/hyperledger/fabric
ENV GIT_URL=https://github.com/deemru/fabric.git
ENV GIT_BRANCH=v1.4.1-gost
COPY plugin/cpro.so /usr/lib/
ADD plugin/linux-amd64_deb.tgz /tmp/
RUN cd /tmp/linux-amd64_deb \
&& ./install.sh
RUN mkdir -p $GOPATH/src/github.com/hyperledger $FABRIC_CFG_PATH \
&& cd $GOPATH/src/github.com/hyperledger \
&& git clone $GIT_URL \
&& cd fabric \
&& git checkout $GIT_BRANCH \
&& EXECUTABLES='go git curl' GO_TAGS=pluginsenabled make peer \
&& cp -f .build/bin/peer $GOPATH/bin/peer
# Clone the Hyperledger Fabric code and cp sample config files
RUN cd $GOPATH/src/github.com/hyperledger \
&& cp $FABRIC_ROOT/devenv/limits.conf /etc/security/limits.conf \
&& cp -r $FABRIC_ROOT/sampleconfig/* $FABRIC_CFG_PATH/ \
&& cp $FABRIC_ROOT/examples/cluster/config/configtx.yaml $FABRIC_CFG_PATH/ \
&& cp $FABRIC_ROOT/examples/cluster/config/cryptogen.yaml $FABRIC_CFG_PATH/
CMD ["peer","node","start"]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment