我有两个网站,example.com
和domain.com
。两个DNS都托管在Cloudflare上。Cloudflare提供免费的SSL/TLS加密的仪表板。这两个网站都设置为完全加密模式,强制HTTPS重写。example.com
在WebHostingA上,domain.com
在hostb上
我想用domain.com
来获取example.com/test.php
的内容。
Code on: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代码中提供任何类型的证书。我如何检查我从domain.com
发送的内容是否加密,我从example.com
接收的内容是否加密?我的目标是在这两个网站之间安全地传输数据。
首先,您使用https
方案,这意味着使用tls进行curl连接。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
您将看到连接的端口,并将捕获的数据记录到转储。pcap文件。如果其中一个端口是443 -您的流量是使用tls发送的。稍后还可以分析dump。
在wireshark中设置pcap文件或使用strings
命令。