Python - GPG 解密有效,但 GNUPG 不行



我正在使用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文件名时,文件解密没有任何错误。 我使用了gpg -K并检查了用于加密文件的秘密证书/密钥是否已导入+受信任等。

这一切都在 Ubuntu Server 12.04 上运行。

谁能建议我如何解决此错误?

请注意,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来测试这是否真的是问题所在(因此,在 Web 服务器的用户下运行gpg)。

最新更新