我正在使用pythons gnupg来解密我用python下载的文件:
gpg = gnupg.GPG(gnupghome="/home/myname/.gnupg")
with open('updates/'+filelist[i],'r') as f:
print "Decrypting "+fn
status=gpg.decrypt_file(f, passphrase="passphrase",output='updates/'+fn)
print 'ok: ', status.ok
print 'stderr: ',status.stderr
这说'秘密密钥不可用'失败了。但是,当我从终端运行gpg -d filename时,文件解密没有任何错误。我使用了gpg -K并检查了用于加密文件的秘密证书/密钥是否已导入+信任等。
这一切都在Ubuntu Server 12.04上运行。
有人可以建议我如何解决这个错误吗?
答案 0 :(得分:2)
请注意,GnuPG是gpg
的“真实”名称,它只是二进制文件的名称。 python API名为python-gnupg。
问题很可能是由缺少访问权限引起的。正如您已经意识到的那样,每个系统用户都有自己的GnuPG主目录(因此您提供了另一个用户的GnuPG目录),其他人无法访问。确保您的Web服务器用户(可能www-data
)有权访问/home/myname/.gnupg
,更好地导出私钥并从Web服务器的用户重新导入它(GnuPG不喜欢广泛的访问权限,可能会发送警告或否则不管怎么办。)
您可以通过运行sudo -u www-data 'gpg --home-dir /home/myname/.gnupg -d filename
来测试这是否真的是问题(因此,在网络服务器的用户下运行gpg
)。