如何配置libssl以使用TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256密码套件?

时间:2016-04-07 14:18:08

标签: ssl encryption

目前,我正在使用基于服务器的应用程序,该应用程序使用libssl进行ssl实现。当我使用RSA证书时,一切正常,但当我使用Elliptic Curve密钥和我的证书时,我无法连接到服务器。当我尝试卷曲时,它会出现以下错误

  

NSS错误-12286(SSL_ERROR_NO_CYPHER_OVERLAP)

     

无法与对等方安全通信:没有通用的加密算法。

     

关闭连接0

使用" openssl s_client"命令,我才知道服务器只提供" ECDH-ECDSA-AES256-GCM-SHA384"但是curl或chrome无法识别这个密码套件。

生成证书的步骤是:

  

openssl ecparam -name prime256v1 -genkey -noout -out ecCert.key

     

openssl req -new -key ecCert.key -out ecCert.csr -subj /CN=servername.com

     

openssl x509 -req -in ecCert.csr -CA ./rootCA.pem -CAkey ./rootCA.key -CAcreateserial -sha256 -out ecCert.crt -days 500

     

cat ecCert.crt ecCert.key> ecCert.pem

有没有办法配置服务器的加密方法?

P.S。 我使用openssl版本" OpenSSL 1.0.2g 2016年3月1日"

我还尝试使用SSL_CTX_set_cipher_list(ctx,ciphers)设置密码列表

1 个答案:

答案 0 :(得分:3)

  

我还尝试使用SSL_CTX_set_cipher_list(ctx,ciphers)设置密码列表

这实际上是正确的方法。 OpenSSL语法中的相关密码是ECDHE-ECDSA-AES128-GCM-SHA256。但请注意,为了在服务器端使用任何类型的ECC密码,您还需要设置要与SSL_CTX_set_tmp_ecdh一起使用的曲线。

有关更广泛的信息,请参阅jww在Server with ECDHE key and cert not working的优秀答案。