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
答案 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