Php Gnupg给出了;获取“U键失败”;尽管使用了有效的密钥
我想将PGP加密集成到我的web应用程序中,在寻找要使用的内容(扩展、库等)之后,我决定使用用于php的gnupg扩展。现在,我的一个桌面文件夹中确实有一个PGP密钥,我尝试使用它的指纹作为Php Gnupg给出了;获取“U键失败”;尽管使用了有效的密钥,php,gnupg,pgp,Php,Gnupg,Pgp,我想将PGP加密集成到我的web应用程序中,在寻找要使用的内容(扩展、库等)之后,我决定使用用于php的gnupg扩展。现在,我的一个桌面文件夹中确实有一个PGP密钥,我尝试使用它的指纹作为addencryptkey的字符串,我收到的错误是get_key failed,我不明白为什么,我的PGP密钥是有效的 因此,有两个非常相似的问题: , , 基于这些,我对代码进行了一些更新,但没有成功,下面是它当前的样子: putenv("GNUPGHOME=/home/user/Desktop/Key
addencryptkey
的字符串,我收到的错误是get_key failed
,我不明白为什么,我的PGP密钥是有效的
因此,有两个非常相似的问题:
,
,
基于这些,我对代码进行了一些更新,但没有成功,下面是它当前的样子:
putenv("GNUPGHOME=/home/user/Desktop/Keys/.gnupg/");
$pgp = new gnupg();
$pgp->addencryptkey("F0E2DF9C82ECE67935171F4939D8599A923820D9");
echo $pgp->geterror();
在putenv
中指定的文件夹中,我将公钥保存在.asc
文件中。我看不出真正的问题是什么,除非它只适用于存储在服务器上的密钥?我只是想分享我对这个问题的修复。鉴于这是最近关于这个话题的一个问题,我认为最好在这里与大家分享
当时我能够很好地加密消息(带有gnupgpecl扩展的php7.4)
为了解决get\u key\u failed
错误,在设置/导入我的密钥后,我将整个.gnupg
目录复制到我的Web服务器的根目录(/var/www/html,在我的情况下)并更新其权限,以便Web服务器可以访问它
putenv("GNUPGHOME=/var/www/html/.gnupg");
我认为这可以解决问题,但是在尝试解密消息时遇到了一个新错误:
Uncaught Exception: decrypt failed
解决这个问题的唯一方法是确保我的密钥对没有密码。PHP GNUPG文档中的一些评论表明,不管怎样,adddecryptkey()
上的第二个参数passphrase都会被忽略。然而,在我的例子中,解密只对没有密码短语集的私钥起作用
这在我的本地实例(Ubuntu18)和部署到运行AmazonLinux2的EC2实例上都有效