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

我试图validation包含在.zip文件中的信任存储。 我已经能够validation它在我的工作站(其中有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 201514.3.30(1)-release /bin/bash版本

任何人都可以摆脱为什么我的服务器不validation相同的文件对?

OpenSSL中的错误意味着它找不到你指定的文件:

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

如果你在没有设置环境variables的情况下运行openssl,或者从另一个进程启动openssl,就会发生这种情况。

首先,尝试指定完整path到您的truststosre.zip.dgst文件,如果它不会帮助 – 您应该检查是否启动openssl的用户(即如果它是在一个PHP脚本内启动,那将是www-data用户)有足够的权限来访问文件。

www-data用户的命令是:

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

如果用户没有足够的权限 – 你会得到Permission denied错误。

PS仔细观察揭示了一个可能的巧妙解决scheme,其中涉及修复最广泛types的IT相关的错误 – 错误types:

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