我正在构建一个应用程序,我计划使用OpenSSL来保护数据传输。
我计划只让客户验证服务器的证书。我对如何保护服务器的证书感到困惑。我想加密包含私钥的服务器证书,但我不想使用任何硬编码密钥进行此加密。
使用SSL的应用程序遵循哪些常见做法?
答案 0 :(得分:5)
为确保我们的术语直截了当,通用术语中的“SSL证书”实际上由两部分组成:
公共证书组件由您选择的CA(证书颁发机构)签名,之后可以自由分发。它不需要保护或加密,实际上它将作为SSL协商的一部分发送给连接到您的服务器的客户端。
应保护私钥组件。在大多数情况下,这只是作为加密文件存储在服务器上。高档解决方案使用专用的“防篡改”加密硬件(HSM - 硬件安全模块)来存储私钥。这些范围从基于智能卡的解决方案到具有m / n控制等的多键,网络设备等。与HSM相关的风险(更不用说成本)我不会在这里讨论。
许多应用程序只是将私钥保留在磁盘上。有几个选项可以保护密钥文件:
与往常一样,存在安全权衡。特别是,如果您在私钥文件上使用受密码保护的加密,并且遇到意外的应用程序重启(例如停电),则需要有人在重新启动时为应用程序提供密码。将密码存储在由系统初始化脚本读取的文件中(至少由两个Web服务器供应商鼓励)在真实安全性方面几乎没有增加。很难建议不加密私钥密钥文件,但如果你是小商店中唯一的管理员/技术人员,你一定要考虑如果服务器在你不可用时重新启动会发生什么,以及你的业务可能会有什么成本。
答案 1 :(得分:0)
不太确定你要问的是什么。服务器证书发送给您,客户端;您通过检查其签名验证证书(使用SHA-1而不是MD5,MD5已被破解。)您从CA获得的密钥是公共方面; CA和服务器证书持有者将自己的私钥保留给自己。您可以验证证书,因为公钥足以解密使用私钥加密的邮件。因此,您不必担心在保持证书加密的情况下。
答案 2 :(得分:0)
我对如何保护服务器证书感到困惑。
您无需保护服务器的证书。这是一份公开文件
我想加密包含私钥的服务器证书
服务器的证书不包含私钥。
但我不想使用任何硬编码密钥进行此加密。
您无需进行任何加密。您需要保护的唯一服务器资产是其私钥,该私钥与其证书完全不同。在OpenSSL的情况下,它甚至可以是不同的文件。