我正在尝试编写一个bash例程来测试用户的输入是否是我的证书数据库的正确密码。
最初我想象我首先在需要密码的证书数据库上执行良性certutil或pk12util操作。然后测试返回代码以查看它是否成功。
但是,certutil的密码参数需要一个密码文件(这是不可取的)。我可以使用pk12util导出一个certifcate和私钥进行测试(不太满意周围的额外pk12文件)。
有关其他方法测试数据库密码的建议吗?
PR
答案 0 :(得分:1)
使用certutil的密码文件和mktemp(1)
。这将生成一个临时文件,该文件只能由当前用户(可能是已知密码的人)读取。
还要在脚本中添加trap "rm $tmpfile" EXIT
,以确保在脚本因任何原因退出时删除密码。
如果仍然不够安全,则必须编写一个在证书DB上运行的小型C程序。
答案 1 :(得分:0)
尝试使用Process Substitution
。实施例
read -s -p "Enter Password: " pass
if certutil -f <(echo "$pass"); then
# Password correct, do stuff here
else
# Password incorrect, do stuff here
fi