繁体   English   中英

Laravel-无法从.env文件获取.pem公钥数据

[英]Laravel - Can't get .pem public key data from .env file

我有一个使用Laravel构建的webapp,我需要使用.pem文件中的公钥来验证一些数据。 密钥保存在.env文件中,并使用env()帮助器通过config/app.php进行检索。 由于.pem密钥需要位于具有特定长度的单独行中,因此我使用\\ n字符将密钥保持在一行中。 问题是,当我使用\\ n字符时,该变量未缓存并且无法访问它。 当我删除\\ n字符时,我可以检索变量,但是openssl_get_privatekey($key); 返回false。 我究竟做错了什么? 这是Laravel还是一些一般的PHP问题?

PHP的dotenv软件包似乎不支持多行环境变量。

理想情况下,您应该将.pem文件保留为文件,并通过路径引用它,例如:

PEM_FILE=/path/to/file.pem

并在配置中:

return [
    //...
    "key" => file_get_contents(env('PEM_FILE'))

这是有道理的,因为通常证书通常应放在服务器上的专用证书路径中。 如果缓存配置,则.pem文件的实际内容在部署时仅读取一次。

但是,如果必须将其放入dotenv中,则可以执行以下操作:

在.env中

PEM_KEY="-----BEGIN RSA PRIVATE KEY-----\n…\n-----END DSA PRIVATE KEY-----"

在配置中:

return [
    //...
    "key" => str_replace("\\n", "\n", env('PEM_KEY')), 

因为密钥通常是base64,所以我认为\\n .pem文件中不会自然出现\\n

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM