我有这个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代码工作并成功返回一个数据包。
编辑:PHP代码现在返回一个有效的套接字,在添加verify_peer_name之后。
现在我需要转换一些Python代码,使用pack()构建消息
以下是我到目前为止在将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”。我也不确定我是否正确处理了密钥/证书文件。
我尝试了CLI上的注释out opensslhtml" target="_blank">调用,但没有任何效果。这就像远程传输到邮件服务器。除了无论我输入什么,都不会返回任何东西。我按了ctrl-c后有一堆东西被Echo弄出来了。
成功重要的部分是从客户那里获得正确的IP地址和端口。也可能是111.111。111.111:2500. 然后,补充一点也很重要
'verify_peer_name'=>false
然后创建了一个套接字。
问题内容: 我正在尝试在Python中建立安全的套接字连接,而使用SSL有点麻烦。我已经找到一些有关如何与SSL建立连接的代码示例,但它们都涉及密钥文件。我尝试连接的服务器不需要接收任何密钥或证书。我的问题是,我该如何实质上包装带有SSL的python套接字连接。我知道我应该使用的密码是,协议是。这就是我一直在尝试的: 运行此代码时,没有任何错误,但响应为空。当尝试在命令行中调试此代码时,通过在终
问题内容: 如何创建SSL套接字连接? 我真的需要创建密钥库吗?该密钥库应该与我所有的客户端应用程序共享吗? 我用以下代码创建了一个服务器: 我用以下代码在android上创建了一个客户端: 但是当我尝试连接时,会引发以下错误: 问题答案: 您需要一个证书来建立ssl连接,您可以在密钥库中加载证书,也可以加载证书本身。我将显示一些有关keystore选项的示例。 您的代码需要一些参数才能运行: 您
问题内容: 我正在加密服务器和客户端之间的TCP连接。在研究和测试过程中,我倾向于使用秘密密钥加密。我的问题是我找不到有关如何实现此功能的任何教程。我发现的教程围绕一次HTTP请求进行,我只需要一个SSL套接字。 我到目前为止编写的代码如下。我几乎可以肯定它需要扩展,我只是不知道该怎么做。任何帮助表示赞赏。 接受客户端连接的服务器代码 我只是不知道如何实际进行握手。 参考:http : //doc
这很好,但没有SSL。 我已经使用OpenSSL为服务器和客户机生成了SSL证书,结果是: 服务器的证书(PEM格式) 客户端的证书(PEM格式) 服务器的私钥(PEM格式) 客户端的私钥(PEM格式) CA文件(PEM、CER和CRT格式) null 会出什么问题?
Hi想知道是否有办法设置套接字的超时,以及在连接握手之前重试的次数。我在非常糟糕的连接模式下测试了我的应用程序,我为我在Volley中的请求设置了重试策略为10秒,但SSL握手似乎是个问题,因为它有一个默认的超时设置为60秒,而Volley超时只被触发当套接字由于尝试次数或超时而失败时。 下面是我的方法: 我正在使用截击来提出我的请求,我实现这一点的方法是: 我还尝试设置了这样的超时:
我正在使用OpenJDK 12中的Nashorn JS引擎。纳肖恩似乎遭到了反对。我正在寻找可用的替代方案。我找到了GraalVM,但我不确定这是不是最好的。如何从Java执行GraalVM JavaScript?你有什么例子吗? Nashorn用的是Java: 在Nashorn中,我创建了一个WrappedMongoDatabase,它扩展了AbstractJSObject。在那里,我添加了一些