【问题标题】:php gnupg get_key failed errorphp gnupg get_key 失败错误
【发布时间】:2016-06-12 20:02:19
【问题描述】:

我正在尝试用 PHP 中的 PGP(gnupg) 解密一条简单的消息。 但我总是收到这个错误:get_key failed。 在堆栈溢出上,我看到很多人遇到这个问题,但我无法解决它。 我遵循了本教程,其中包括如何设置文件的权限:http://46dogs.blogspot.nl/2007/11/setting-up-gnupg-gpg-for-use-with-php.html

这是我正在使用的脚本。我的 PGP 密钥不包含阶段短语:

<?php
putenv("GNUPGHOME=/home/user/.gnupg/");
$gpg = new gnupg();
$gpg -> addencryptkey("2ADA21BDC9C96556EA0758F04A935AE0010AE203");
$encrypted_text = $gpg -> encrypt("just a test");
//echo $encrypted_text;

$gpg = new gnupg();
$gpg->seterrormode(gnupg::ERROR_EXCEPTION);
try{
$gpg -> adddecryptkey("2ADA21BDC9C96556EA0758F04A935AE0010AE203","");
$decrypted_text = $gpg -> decrypt($encrypted_text);
} catch (Exception $e) {
    echo $e;
}
echo $decrypted_text;
?> 

文件(pubring.gpg、trustdb.gpg 和 secring.gpg)的权限与教程完全相同(仅用户更改为 nginx)。
加密部分起作用。但是解密不起作用。

有谁知道怎么回事?

我正在运行 Centos 和 php5。

【问题讨论】:

  • 嗨!你想通了吗?我也面临同样的问题。
  • @Harsh 我放弃了...
  • 虽然使用 PHP7 和 Alpine Linux(在 Docker 内部),但我也遇到了这个问题

标签: php encryption nginx centos


【解决方案1】:

线程中的代码很好,但请记住,您的 nginx 用户与 user 不同,并且 nginx 访问其 gnupg 密钥时会遇到问题,因为(默认情况下)/home/user/.gnupg 只是 OWNER(user 登录)无障碍。 最简单的事情是为 nginx 用户设置主目录并为此创建自己的 gnupg 密钥。否则只有当你使用user 登录终端时,运行这个 php 才会成功(因为 /home/user/.gnupg)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-29
    • 2018-11-28
    • 1970-01-01
    • 1970-01-01
    • 2019-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多