我在 Ubuntu 14.04 上使用 PHP 7.0 ppa:ondrej/php
。我正在与 API 交互,并希望确保我的 PHP/CURL 代码与正确的服务器进行安全交互(不存在任何窥探、MITM、篡改等风险)。
我做了一些研究,没有看到关于这个主题的任何完整的建议。
以下是我注意到的有关默认配置的一些事项:
和openssl.cafile
值为openssl.capath
空。
我相信CURLOPT_SSL_VERIFYPEER
默认为 TRUE,并且 cURL 提供了默认证书包(14.04 有 cURL 7.35,并且自 7.10 以来也是如此)。
看起来许多“坏” SSL 的例子都是浏览器和整个安全世界认为不安全的东西,但 PHP/CURL 的默认配置接受了。
使用badssl.com和我写的脚本我开始测试哪些错误的 SSL 配置会触发错误,我很惊讶其中有多少不会触发错误。
一些可能的解决方案:
- 跟踪配置选项以使 php/curl 在接受的内容方面更加严格。这可能不完全可行。
- 在 PHP 中添加更多代码以更仔细地检查证书(感觉不好)
- 也许 PHP/CURL 不会将所有这些都识别为无效,这是可以接受的
我正在寻找有关这些问题的答案:)