Назад | Перейти на главную страницу

OpenSSL dgst: ошибка при открытии файла подписи

Я пытаюсь проверить доверенное хранилище, содержащееся в .zip-файле. Мне удалось проверить это на своей рабочей станции (на которой установлена ​​ubuntu с OpenSSL 1.0.1f 6 Jan 2014).

openssl dgst -ecdsa-with-SHA1 -verify <(openssl x509 -sha1 -in signature-certificate.pem -noout -pubkey) -signature truststore.zip.dgst truststore.zip                                                                                                  

Как уже говорилось, это работает на моей рабочей станции, однако, запустив это на моем сервере, я получаю эту ошибку:

Error opening signature file truststosre.zip.dgst
3069867216:error:02001002:system library:fopen:No such file or directory:bss_file.c:165:fopen('truststosre.zip.dgst','rb')
3069867216:error:2006D080:BIO routines:BIO_new_file:no such file:bss_file.c:168:

Я должен упомянуть, что на «сервере» есть OpenSSL 1.0.2 22 Jan 2015 и /bin/bash версия 14.3.30(1)-release

Может ли кто-нибудь пролить свет на то, почему мой сервер не проверяет одну и ту же пару файлов?

Ошибка в OpenSSL означала, что он не смог найти указанный вами файл:

3069867216:error:02001002:system library:fopen:No such file or directory:bss_file.c:165:fopen('truststosre.zip.dgst','rb')

Это может произойти, если вы запускаете openssl без установки переменных окружения или когда openssl запускается из другого процесса.

Прежде всего, попробуйте указать полный путь к вашему truststosre.zip.dgst файл, если не поможет - проверьте, запустил ли openssl пользователь (т.е. если он запущен внутри PHP-скрипта, то это будет www-data user) имеет достаточно прав для доступа к файлу.

Команда для www-data пользователь будет:

sudo -u www-data cat /path/to/truststosre.zip.dgst

Если у пользователя недостаточно прав - вы получите Permission denied ошибка.

P.S. При более внимательном рассмотрении можно увидеть возможное гениальное решение, которое включает в себя исправление самой распространенной ошибки, связанной с ИТ - опечатки:

Когда вы пытаетесь проверить файл на своем ПК, он называется truststore.zip.dgst, а на удаленном сервере вы получаете доступ truststo**s**re.zip.dgst. Попробуй удалить это "s" и я уверен, что он сразу заработает!