如何生成带有 DH 参数的证书

use*_*782 3 encryption cryptography ssl-certificate diffie-hellman tls1.2

我需要支持 Diffie Hellman 加密,现在为了测试这一点,我需要创建一个带有 DH 密钥参数的证书,例如。密钥长度 - 2048 等

现在据我了解 DH 不适用于自签名证书,所以基本上我需要创建一个由一些受信任的第三方颁发的包含 DH 密钥参数的证书。

我搜索了很多,但似乎找不到正确的方向,我在哪里可以找到使用 DH 参数创建证书的方法。

有人能指出我正确的方向吗?提前致谢!!

gus*_*to2 17

我需要支持 Diffie Hellman 加密

DH 是密钥交换(或密钥协商)协议,而不是加密。DH 用于安全地生成两方之间的公共密钥,其他算法用于加密本身。

我需要创建一个带有 DH 密钥参数的证书,例如。密钥长度 - 2048 等

证书中没有类似于 DH 参数的内容。

DH 只是使用公钥的方式之一。您可以生成指定长度(例如2048位)的DH公钥并执行DH交换,但与证书参数无关。(您不是要生成密钥对,而不是证书吗?)。

事实上,DH 密钥交换需要其他参数(p,g),但这些参数是协议的一部分,而不是证书的一部分。在 TLS 中,甚至 DH 参数也可以是随机的,并通过证书的公钥进行身份验证 - 这称为临时 Diffie-Hellman 密钥交换。

您可以单独生成 DH 参数 (p, g):

 openssl dhparam -out dhparams.pem 4096
Run Code Online (Sandbox Code Playgroud)

有人能指出我正确的方向吗?

现在我假设您想使用 DH 建立加密通道 (TLS)。最简单的方法是为库指定允许的 SSL 参数。这是一个httpd 配置示例,您可以在其中强制执行 DH 密钥交换。每个合理的 SSL 框架或服务器都可以选择设置参数。

如果您想自己进行 DH 密钥交换(而不是作为 TLS 的一部分),我建议您为您的编程语言使用现成的成熟库。