gpt4 book ai didi

php - 将 Python 中的 SSL 套接字迁移到 PHP

转载 作者:太空宇宙 更新时间:2023-11-03 14:22:51 26 4
gpt4 key购买 nike

我有这段 Python 代码。它应该按原样工作 - 连接到远程服务器并发送数据包并检查响应的延迟时间。

    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)    s.settimeout(20)    ssl_sock = ssl.wrap_socket(s,                               keyfile="client_MY.key",                               certfile="client_MY.crt",                               ca_certs="CA_MY_chain.crt",                               cert_reqs=ssl.CERT_REQUIRED)        ssl_sock.connect(('111.111.111.111', 2500)) # fake IP addy    # ... onward to sending & receiving a packet...

编辑:在获得正确的 IP 地址后,上面的 python 代码运行并成功返回一个数据包。

编辑:在添加“verify_peer_name”之后,PHP 代码现在返回一个有效的套接字。

现在我需要转换一些使用 pack() 构建消息的 python 代码

以下是我迄今为止将 Python 转换为 PHP 所做的工作:

    $transport = "ssl";    $ip = "111.111.111.111";    $port = "2500";    $timeout = 5;    $local_pk   = "client_MY.key";    $local_cert = "client_MY.crt"; // Path to certificate    $cafile     = "CA_MY_chain.crt";    //dd("openssl s_client -connect $ip:$port -cert $local_cert -key $local_pk -CAfile $cafile -showcerts -state");    // openssl s_client -connect 111.111.111.111:2500 -cert client_MY.crt -key client_MY.key -CAfile CA_MY_chain.crt -showcerts -state        $context = stream_context_create(            array(                $transport=>array(                    'local_cert'=> $local_cert,                    'local_pk'=> $local_pk,                    'cafile'=>$cafile,                    'verify_peer'=>true,                    'verify_peer_name'=>false                )            )        );    if ($socket = stream_socket_client(        "$transport://$ip:$port",        $errno,        $errstr,        $timeout,        STREAM_CLIENT_CONNECT,        $context)    ) {        fwrite($socket, "\n");        echo fread($socket,8192);        fclose($socket);    } else {        echo "ERROR: $errno - $errstr\n";    }

我的问题是:我是否正确地将代码移植/迁移到 PHP?我也不知道用什么来代替“cert_reqs”。我也不确定我是否正确完成了 key /证书文件。

我已经在 CLI 上尝试了注释掉的 openssl 调用,但它没有做任何事情。这就像远程登录到邮件服务器。除了无论我输入什么,都不会返回任何内容。在我按下 ctrl-c 后,出现了一堆 echo 。

最佳答案

成功。重要的部分是从客户那里获得正确的 IP 地址和端口。它也可能是 111.111.111.111:2500。然后添加

也很重要
'verify_peer_name'=>false

并创建了一个套接字。

关于php - 将 Python 中的 SSL 套接字迁移到 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59227748/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com