OpenSSL dgst:打开签名文件时出错

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

有人能解释一下为什么我的服务器没有验证相同的文件对吗?

答案1

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)是否有足够的权限访问该文件。

用户的命令www-data是:

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

如果用户没有足够的权限 - 您将收到Permission denied错误。

PS 仔细观察就会发现一个可能的巧妙解决方案,它涉及修复最普遍的 IT 相关错误类型 - 输入错误:

当您尝试验证 PC 上的文件时,它被称为truststore.zip.dgst,而您在远程服务器上访问truststo**s**re.zip.dgst。尝试删除它“s”我敢打赌它会立即开始发挥作用!

相关内容