У вас стоит задача интегрироваться с удалённым сервисом, который работает по ГОСТу и "только через КРИПТО-КОМ", а вы хотите использовать OpenSSL с gost? На форуме "Сигнал-КОМ" вы видите кучи сообщений, что "ключи из формата КРИПТО-КОМ нельзя конвертировать в формат OpenSSL-гост-совместимых"? На самом деле конвертация возможна.
tl;dr: http://gostcrypto.com/demo-sc-keys.html
Как сконвертировать уже имеющиеся ключи из проприетарного в ортодоксальный формат?
Я не параноик
Идёте на http://gostcrypto.com/demo-sc-keys.html и указав файлы контейнера типа "mk.db3", "masks.db3", "kek.opq", "rand.opq" и файл приватного ключа по типу "Keys\00000001.key", нажмите кнопку "Export PrivateKey".
В текущей версии gostcrypto.com ключ будет не совсем PEM-совместимым, т.к. используется длина более 64 символов:
-----BEGIN PRIVATE KEY-----
MEYCAQAwHQYGKoUDAgITMBMGByqFAwICIwEGCCqFAwcBAQICBCIEIG0GEmE3dhrHzm1KfFDpKBWEmMydwcmP0hNKvXXbEbLO
-----END PRIVATE KEY-----
Чтобы сделать его PEM-совместимым просто добавьте новую строку после 64 символа:
-----BEGIN PRIVATE KEY-----
MEYCAQAwHQYGKoUDAgITMBMGByqFAwICIwEGCCqFAwcBAQICBCIEIG0GEmE3dhrH
zm1KfFDpKBWEmMydwcmP0hNKvXXbEbLO
-----END PRIVATE KEY-----
Я параноик или хочу cli-версию
На момент публикации этой статьи gostcrypto не node-фицирована и есть попытка её node-фикации в пул-реквесте. Там же cli-утилита для экспорта в PEM-compatible формат.
Ставим её и пробуем экспортировать ключ:
sudo npm install -g https://github.com/garex/nodejs-gost-crypto/archive/nodefy.tar.gz
cd /tmp
wget https://www.contact-sys.com/files/redactor/files/TestContactKey.zip
unzip TestContactKey.zip -d TestContactKey
gost-export-signalcom-key --pse TestContactKey --key Keys/00000001.key
В результате мы получаем в STDOUT:
-----BEGIN PRIVATE KEY-----
MEYCAQAwHQYGKoUDAgITMBMGByqFAwICIwEGCCqFAwcBAQICBCIEIG0GEmE3dhrH
zm1KfFDpKBWEmMydwcmP0hNKvXXbEbLO
-----END PRIVATE KEY-----
И в STDERR:
OK: Private SignalCom key successfully exported in STDOUT in "PEM" format.