我拥有 2 个网站,example.com
和 domain.com
。两个 DNS 均托管在 Cloudflare 上。 Cloudflare 在其仪表板上提供免费的 SSL/TLS 加密。这两个网站都设置为强制 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 你得到了我的内容!
)。然而,我担心的是我不必在 cURL 代码中提供任何类型的证书。如何检查从 domain.com
发送的内容是否已加密以及从 example.com
收到的内容是否已加密?我的目标是在这两个网站之间安全地传输数据。
P粉5054505052024-01-17 11:07:00
首先你使用了https
方案,这意味着curl使用tls连接。 https://example.com/test.php
和 http://example.com/test.php
是不同的 url,curl 本身不会更改方案.
第二 - 在某些情况下,服务器端可能会重定向到纯 http。为了确保没有重定向并且连接是加密的,您可以尝试使用 curl_getinfo()
函数并检查 CURLINFO_EFFECTIVE_URL
和 CURLINFO_SSL_VERIFYRESULT
字段像这样:
$r = curl_getinfo($ch, CURLINFO_SSL_VERIFYRESULT); $url = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
$r
应为 0,$url
应以 https://
开头。
您还可以在任何此服务器上使用 tcpdump 来记录请求并尝试检查转储是否有任何纯数据。
[server1]# tcpdump -l -n -s 0 -w dump.pcap host server2.ip.addres
您将看到连接的端口并将捕获的数据记录到 dump.pcap 文件中。如果端口之一是 443 - 您的流量是使用 tls 发送的。您也可以稍后在wireshark中分析dump.pcap文件或仅使用strings
命令。