我们最近切换到Ubuntu 16.04并在那里用于php 7.0
没有我遇到我们的一个PHP脚本的问题,这个脚本使用成熟的邮件界面更新成熟并向他们发送GPG签名邮件,他们用它们进行身份验证。但是现在php cli开始提示使用密钥来使用密码。如何防止这个密码短语问题我试图从密钥中删除密码短语,但这没有帮助。
我的php代码如下所示:
$gpgkey = "some thubprint of a key";
$gpgpwd = "Secret";
$res = gnupg_init();
gnupg_addsignkey($res,$gpgkey,$gpgpwd);
$updatemessages = "test";
$signedupdatemessages = gnupg_sign($res, $updatemessages);
希望有人知道溶解
亲切的问候,
Bas van den Dikkenberg
答案 0 :(得分:0)
Ubuntu 16.04发布了一个相当新版本的GnuPG,它不允许在没有进一步麻烦的情况下设置没有pinentry的密码短语。这是因为相当大(因此容易出现安全问题)GnuPG应用程序不应该能够访问私钥和密码短语,因此这些操作被提取到较小的gpg-agent
(现在正在查询密码短语)。
删除密码/将其设置为空密码应该运行良好,请务必为正确的用户设置密码(GnuPG具有每个系统用户的密钥库)。
setting a passphrase is using the gpg-preset-passphrase
utility的“GnuPG-2.0-way”,通常安装在/usr/lib/gnupg2/gpg-preset-passphrase
中,用于Debian和派生的发行版。您需要通过将allow-preset-passphrase
添加到~/.gnupg/gpg-agent.conf
并运行
/usr/lib/gnupg2/gpg-preset-passphrase -c [keygrip]
在STDIN上提供密码短语( not 使用echo
或-P
选项时,所有其他系统用户都可以使用这两种方式读取密码!)。可以通过运行gpg2 --with-keygrip --list-secret-keys
来获取keygrip。