Vapor 的 crypto.json - 部署安全?
Vapor's crypto.json - deployment-safe?
我在 vapor
中看到,crypto.json
作为使用 vapor toolbelt
创建的任何项目的一部分
{
"hash": {
"method": "sha256",
"key": "password"
},
"cipher": {
"method": "chacha20",
"key": "passwordpasswordpasswordpassword",
"iv": "password"
}
}
是否应该为部署更新其中的任何一个?
是的,绝对不要使用默认密码或哈希密钥部署您的应用程序。有两种解决方法。
1:机密文件夹
您可以通过在 secrets
文件夹中提供 crypto.json
来轻松完成此操作。
Config/secrets/crypto.json
{
"hash": {
"method": "sha256",
"key": "<16 characters>"
},
"cipher": {
"method": "aes256",
"key": "<32 characters>"
}
}
默认情况下,Config/secrets
文件夹位于 .gitignore
中,永远不应提交给版本控制。
2:配置中的环境变量
如果难以将 Config/secrets/crypto.json
文件添加到您的生产服务器,您可以改用环境变量。
Config/production/crypto.json
{
"hash": {
"method": "sha256",
"key": "$HASH_KEY"
},
"cipher": {
"method": "aes256",
"key": "$CIPHER_KEY"
}
}
此文件不包含密钥,可以安全地提交给版本控制。
只需确保您的应用 运行 --env=production
(出于许多其他原因,包括性能,您应该已经这样做了)
我在 vapor
中看到,crypto.json
作为使用 vapor toolbelt
{
"hash": {
"method": "sha256",
"key": "password"
},
"cipher": {
"method": "chacha20",
"key": "passwordpasswordpasswordpassword",
"iv": "password"
}
}
是否应该为部署更新其中的任何一个?
是的,绝对不要使用默认密码或哈希密钥部署您的应用程序。有两种解决方法。
1:机密文件夹
您可以通过在 secrets
文件夹中提供 crypto.json
来轻松完成此操作。
Config/secrets/crypto.json
{
"hash": {
"method": "sha256",
"key": "<16 characters>"
},
"cipher": {
"method": "aes256",
"key": "<32 characters>"
}
}
默认情况下,Config/secrets
文件夹位于 .gitignore
中,永远不应提交给版本控制。
2:配置中的环境变量
如果难以将 Config/secrets/crypto.json
文件添加到您的生产服务器,您可以改用环境变量。
Config/production/crypto.json
{
"hash": {
"method": "sha256",
"key": "$HASH_KEY"
},
"cipher": {
"method": "aes256",
"key": "$CIPHER_KEY"
}
}
此文件不包含密钥,可以安全地提交给版本控制。
只需确保您的应用 运行 --env=production
(出于许多其他原因,包括性能,您应该已经这样做了)