PHP cURL SSL密码套件订单

时间:2015-12-12 17:54:48

标签: php apache ssl curl

Cloudflare使用ECDHE_ECDSA和AES_128_GCM的密码套件作为其https证书。使用PHP cURL时,您可以指定密码套件:

curl_setopt($curl, CURLOPT_SSL_CIPHER_LIST, 'ecdhe_ecdsa_aes_128_sha');

但是,如果cURL请求正在请求ecdhe_ecdsa_aes_128_sha以外的其他内容,那对我没有帮助。

设置了以下Apache配置,但PHP cURL似乎不尊重这一点:

SSLHonorCipherOrder On
SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS

有没有办法为PHP cURL指定密码套件订单?

环境信息:

[vagrant@devopsgroup ~]$ php -i | grep SSL
SSL => Yes
SSL Version => NSS/3.15.4
OpenSSL support => enabled
OpenSSL Library Version => OpenSSL 1.0.1e-fips 11 Feb 2013
OpenSSL Header Version => OpenSSL 1.0.1e-fips 11 Feb 2013
Native OpenSSL support => enabled

1 个答案:

答案 0 :(得分:2)

您可以像上面建议的那样指定cURL与curl_setopt($curl, CURLOPT_SSL_CIPHER_LIST, 'ECDHE-RSA-AES128-GCM-SHA256,ECDHE-ECDSA-AES128-SHA'); 一起使用的密码套件,但如果针对OpenSSL编译cURL,则需要以OpenSSL使用的格式指定密码。

Apache配置对cURL没有影响。

由于cURL是使用OpenSSL构建的,请尝试使用OpenSSL ciphers中的密码名称。

例如:

{{1}}

这个答案也很有用:https://unix.stackexchange.com/questions/208437/how-to-convert-ssl-ciphers-to-curl-format