用于定义密码顺序的openssl函数

时间:2017-12-06 06:35:32

标签: c++ c ssl encryption openssl

我有一个轻型http服务器(嵌入式软件解决方案)。这个http服务器调用openssl函数来处理https连接。

我想让https服务器优先考虑一些密码。因为根据以下link,当DH密码被优先处理时,https连接更安全:

  

而不是使用RSA方法来交换会话密钥   应该使用Elliptic Curve Diffie-Hellman(ECDHE)密钥交换。   请注意,您仍然可以使用RSA公钥密码系统作为   加密算法,不作为密钥交换算法。 ECDHE是   比普通的DH(Diffie-Hellman)快得多,但都创造了会话   只有SSL连接中涉及的实体才能访问的密钥。   因为会话密钥没有链接到服务器的密钥对,所以   仅服务器的私钥不能用于解密任何SSL会话。

     

要启用Perfect Forward Secrecy,您必须执行以下操作:

     

1-重新排序密码套件以放置ECDHE(椭圆曲线   列表顶部的Diffie-Hellman)套件,其次是DHE   (Diffie-Hellman)套房。

     

2-配置服务器以启用其他非DH密钥交换密码   来自SSL客户端提供的密码套件列表中的套件。

如何更改openssl服务器上的密码顺序以使DH密码首先出现?

1 个答案:

答案 0 :(得分:2)

在OpenSSL文档中,此处的相关函数调用是SSL_set_cipher_list

这里使用的OpenSSL推荐字符串是HIGH:!aNULL:!kRSA:!PSK:!SRP:!MD5:!RC4,因为!kRSA禁止使用RSA作为密钥交换,并强制使用短暂的DH,它提供了你在你描述的完美前向保密。问题

作为免责声明,上面的密码字符串可能不是今天推荐的字符串,这正是OpenSSL文档中推荐的。