我已将客户端 SSL 证书作为文件存储在数据库中,并将其私钥密码存储在需要证书的每个 Web 服务的列中(不使用证书存储)。我喜欢这个的原因是我不必担心如果代码移动到另一台服务器 (Dev/QA/Prod),则用户有权访问证书。由于证书存储在集中位置,我不必在每台机器上都安装它。此外,业务人员可以在不干预开发人员的情况下随时上传证书,并且 QA 和生产环境的证书会有所不同。现在我担心的是,将证书存储在数据库中会损害安全性,而不是将其存储在证书存储中?
最佳答案
从安全的角度来看,将私钥和密码放置在数据库中的策略会将所有 key 的权利交给数据库管理员、软件作者和系统管理员。
将私钥的密码放在系统上而不是数据库中只会将完全控制权交给系统管理员和软件作者。
另一种解决方案是将私钥存储在硬件设备 (HSM) 中,并且仅将引用存储在您的数据库中。然后,您的软件将使用像 PKCS#11 这样的硬件加密 API 来执行 SSL 客户端握手加密,而您的私钥根本不会在系统内存或磁盘上。
关于ssl - 在不影响安全性的情况下存储客户端 SSL 证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3268278/