You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何验证开启SSL校验的cURL请求传输数据是否加密

问题背景
  • 持有example.com与domain.com两个网站,二者DNS均托管在Cloudflare平台,已开启Cloudflare免费SSL/TLS加密服务,两个站点均配置为Full加密模式并强制开启HTTPS重写
  • example.com托管在WebHostingA服务商,domain.com托管在HosterB服务商
  • 业务需求为通过domain.com站点获取example.com/test.php的接口内容
现有实现代码

domain.com/get-contents.php 代码

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://example.com/test.php');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, TRUE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, TRUE);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); 
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, ['username' => 'Bob']);
$response = curl_exec($ch);
var_dump($response);

example.com/test.php 代码

if (isset($_POST['username']) && ctype_alpha($_POST['username'])) {
    echo($_POST['username'] . " You got my contents!");
} else {
    echo("Nope!");
}
问题描述

当前代码运行正常,可以成功获取example.com/test.php的返回结果Bob You got my contents!。但代码中未手动为cURL配置任何证书,需要确认:

  1. 如何验证从domain.com发出的请求、example.com返回的响应全程为加密传输
  2. 如何最终实现两个网站之间的安全数据传输
解答

你不用手动给cURL配置证书,不管是Linux还是Windows服务器环境,系统本身都会内置全球信任的根CA证书库。你代码里已经开启了CURLOPT_SSL_VERIFYPEER = TRUE和CURLOPT_SSL_VERIFYHOST = TRUE两个核心校验开关,只要cURL请求没有抛出证书相关错误,就说明TLS握手阶段已经完成合法证书校验,传输链路本身已经是加密状态。

可以通过以下方法实打实验证传输加密状态:

  • 登录domain.com所在的HosterB服务器,命令行执行curl -v -X POST -d "username=Bob" https://example.com/test.php查看调试日志。只要日志里出现SSL certificate verify ok记录,以及类似SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384的TLS连接信息,就证明证书校验通过、链路使用的是合规加密。
  • 在两台服务器上分别抓包验证:用tcpdump抓取对应网卡的443端口流量,抓出的数据包如果全是乱码,无法直接识别POST的username=Bob字段或者接口返回的明文内容,就说明传输内容是加密的;如果能直接读到明文,才代表加密失效。
  • 查看Cloudflare后台的访问分析日志,两个站点的访问记录会标注请求使用的协议,只要标记为HTTPS、TLS版本为1.2及以上,也能佐证链路加密状态正常。

如果要把两个站点之间的传输安全做扎实,补几个配置即可:

  • 在Cloudflare后台将两个站点的最低TLS版本调整为1.2,禁用TLS1.0、TLS1.1等老旧版本,同时关闭弱加密套件,避免TLS降级攻击。
  • 不要关闭cURL的两个证书校验选项,很多人遇到证书报错就直接把两个参数设为FALSE,这等于完全跳过证书校验,根本防不住中间人攻击。
  • 建议把Cloudflare的SSL加密模式从Full调整为Full (Strict)。Full模式下Cloudflare回源时仅要求源站443端口存在证书,不会校验证书是否合法有效;Full (Strict)模式会严格校验源站证书的有效性,补上Cloudflare到源站这段链路的安全短板。
  • 如果需要更高安全等级,可以在example.com源站加一层访问控制,仅放行Cloudflare官方IP段访问test.php接口,同时给接口加上自定义请求头签名校验,就算接口地址泄露,第三方也无法伪造合法请求。

内容的提问来源于stack exchange,提问作者Kiwa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 04:36:23