[英]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.