我使用 openssl 命令在 Fedora CLI 服务器上创建了一个自签名证书
openssl req -x509 -sha256 -newkey rsa:2048 -nodes -keyout key.pem -out cert.pem -days 100
据我了解,TLS 的工作原理如下:
- 客户端向服务器发送密码套件首选项
- 服务器选择密码套件,并将证书和(rsa)公钥发送给客户端
- 客户端生成一个预主密钥(大部分是随机数)。使用给定的公钥对其进行加密,并将其发送到服务器。
- 客户端和服务器各自生成主密钥和会话密钥。会话密钥是提供“安全通道”的对称密钥。
问题 1. 如何找出会话密钥使用的对称加密算法?
问题2.这个openssl命令跟该命令有什么关系openssl ciphers
?
问题 3. TLS 是否隐式使用 Diffie Hellman?我是否在使用 Diffie Hellman?
问题 4. 我看到网上有一篇文章建议禁用某些密码。我该怎么做?
任何帮助都将不胜感激,谢谢
编辑
问题 5. 因此,如果我的应用程序(例如,Apache HTTP Server)同时使用 TLS 和 x509 证书,并且客户端使用 https 请求连接到该服务器,那么商定的密码套件是否会是这样的:TLS_RSA_WITH_NULL_SHA?(我刚刚从我的命令中放入了这些元素)
答案1
我认为您对 X.509 证书和 TLS 感到困惑。TLS 只是证书的一个应用(但也是最大的应用)。
- 会话密钥算法取决于应用程序。例如,如果您将证书与 Apache Web 服务器一起使用以进行 TLS,则可能的算法列表将在 Apache 的配置文件中配置。配置 Web 服务器以使用您的证书和私钥后,您可以使用各种工具检查使用了哪些算法,例如
openssl s_client
或nmap
,或者您的服务器是否可以使用以下网站从 Internet 访问:SSL 实验室 - 没有,除了它们都以 开头
openssl
。OpenSSL 是一个用于处理多种加密技术的工具包。上面的命令生成了一个密钥对和一个 X.509 证书;该openssl ciphers
命令使用与配置 Apache 等应用程序时相同的“密码字符串”逻辑列出 SSL/TLS 密码套件,从而提供了一种方便的方法来测试这些设置。该openssl
程序还可用于加密/解密文件、计算消息摘要和随机数等。 - TLS 可以使用服务器和客户端同意的多种算法。您没有使用 Diffie-Hellman 创建 X.509 证书。该证书可能用于 TLS,它可能使用 Diffie-Hellman 的普通形式(整数)或椭圆曲线形式。
- 启用和禁用密码通常由应用程序(例如 Apache)而不是证书控制,尽管存在一些特殊情况(例如 DSA 证书与 RC4 不兼容)。