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