我注意到许多不同的网络和邮件服务器软件允许或要求您在单个 .pem 文件中提供 TLS 证书(包括服务器证书、CA 中间证书和 CA 根证书)和私钥。
因此,服务器会将证书发送给每个尝试连接的客户端,但当然,您希望保证私钥的安全和保密。那么,当它们都在同一个文件中时,这如何工作?软件是否知道只发送证书部分,而从不发送私钥,即使它们在同一个文件中?
谢谢。
答案1
软件是否知道只发送证书部分而不发送私钥,即使它们在同一个文件中?
是的。
答案2
因此,服务器会将证书发送给每个尝试连接的客户端,但是,当然,您希望保证私钥的安全和保密。
如果你不信任你提供 PEM 文件的软件,你可以在将密钥写入 PEM 文件之前对其进行加密。这将阻止任何人在没有密码的情况下使用它。
OpenSSLrsa
命令使用 来-in
指定输入文件,并-out
指定加密的输出文件。您还需要将密码传递给它。示例命令如下所示:
openssl rsa -AES256 -in key.pem -out encryptedKey.pem
系统将提示您输入密码。现在,您可以将encryptedKey.pem附加到您的公共证书PEM中,并且可以确信它将不会受到最坚定的攻击者的攻击。
请注意,这使用 AES256 密码。您有责任使用现代且安全的密码。
当您需要在命令行中使用该密钥时,OpenSSL 将提示您输入密码。像 pyOpenSSL 这样的库已经覆盖了签名,这些签名使用密码和密码来加密密钥,并且仅使用密码来解密加密的密钥。