[beego]Beego使用明文密钥进行进行证书设置

2024-06-26 559 views
7

https证书设置,beego要求通过指定证书和明文秘钥文件进行tls证书设置。

使用明文密钥进行tls证书设置

密钥要进行加密

回答

9

我没太理解你的意思。根据我的理解,我们这边是通过设置HTTPSCertFileHTTPSKeyFile两个配置项来指定证书和密钥。并没有什么明文密钥进行证书设置? 或者你可以写个简单的demo给我看一下?

2

HTTPSKeyFile是明文的,没有进行加密

2

其实我不太理解真实需求,一般HTTPSKeyFile是明文部署的,因为使用密码加锁的话,密码也还是要存储在某处,而不是程序启动的时候每次都输入一遍的。

8

@flycash 我理解是题主提到HTTPSKeyFile秘钥是敏感信息,不能直接明文存储,需要加密保护。 如果是要对HTTPSKeyFile秘钥明文进行加密保护,是否可以考虑实现两层秘钥管理机制对敏感信息进行保护?

  1. 首先生成工作密钥,通过AES等算法对HTTPSKeyFile明文进行保护,将HTTPSKeyFile密文存储为文件。
  2. 然后再通过根密钥对工作秘钥进行加密保护,同样将工作密钥的密文存储为文件
  3. 最后通过对根秘钥进行分散存储等方式,实现对根密钥的保护
  4. 在完成上述加密保护存储为文件后,登录时再进行解密,最终获取HTTPSKeyFile的明文进行tls认证
1

我其实我都没理解。我简单的以为,题主的意思是说,我们不能在内存里面直接明文存储这种文件。

3

因为最后要拿明文去认证,所以明文应该会有某个时刻是存在于内存中的。 个人建议比较安全的一个做法是采用defer语句,在认证结束后立即将敏感信息的变量内存置0,减少泄露的可能性。这个改动可能应该不大。

另外,解密这部分可能不需要beego来做而是用户来做?如果是这样,用户解密拿到的明文字节数组或string而不再是文件名,beego是否可以考虑提供一个类似于tls.X509KeyPair的接口给用户直接传入明文信息呢?不过这似乎对beego的Run函数有些影响。如果保留原来的文件名配置方式,则意味着用户在解密完还得将明文写入文件了。

1

建议参考nginx的https配置:https://www.cnblogs.com/chnmig/p/10343890.html nginx同样没有对密钥相关文件有加密的操作。 正常的服务器的话,没有加密的必要性,如果是因为你配置了访问目录引起密码文件泄露的安全问题的话,可以禁止相关密钥文件访问,或者移动到不可对外访问的目录。

目前能做的是先关闭此issue。 有其他问题可以提供demo代码给到我们协助排查问题,我们会尽力解决,感谢你的支持!