PHP cURL SSL 密码套件顺序

标签 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

最佳答案

您可以像上面建议的那样指定希望 cURL 使用 CURLOPT_SSL_CIPHER_LIST 的密码套件,但是如果 cURL 是针对 OpenSSL 编译的,那么您需要以 OpenSSL 使用的格式指定密码。

Apache 配置对 cURL 没有影响。

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

例如:

curl_setopt($curl, CURLOPT_SSL_CIPHER_LIST, 'ECDHE-RSA-AES128-GCM-SHA256,ECDHE-ECDSA-AES128-SHA');

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

关于PHP cURL SSL 密码套件顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34243096/

相关文章:

php - 如何安全地将数据传输到服务器?

php - php中多张图片上传中以前和当前选择的图片总数

php - 如何通过 .htaccess 设置 PHP 包含路径?

ssl - 寻找有关 "HTTP to HTTPS"的分步指南

apache - htaccess 更改 url

apache - Dockerized Apache服务器未公开端口80

ssl - 如何在 Zeppelin 中设置 SSL

php - 使用 openssl sha1 -sign 和 PHP 的 openssl_sign 时,CloudFront 签名 URL 的签名不同

php - MySql查询计算瞬间峰值数量

php - 如何以编程方式更改 woocommerce 中各处的产品名称?