0
자체 서명 된 인증서를 통해 SSL을 사용하는 사소한 서버가 있습니다. 내가 연결을 만들 및 관련 오류와 함께 다음과 같은 스크립트를 통해 데이터를 반환하는 파이썬 3.4.2 SSL 소켓 라이브러리를 사용하는 것을 시도하고있다 : I 0으로 차단을 설정하지 않으면Python SSL 소켓 오류 : ssl.SSLWantReadError : 작업이 완료되지 않았습니다 (읽기)
import socket, ssl
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
ssl_socket = ssl.wrap_socket(s, keyfile="/path/to/server.pem", certfile="/path/to/client.pem", cert_reqs=ssl.CERT_REQUIRED, ssl_version=ssl.PROTOCOL_TLSv1_2, ca_certs="/path/to/client.pem")
ssl_socket.connect(('hostname', port))
ssl_socket.send("data_string".encode())
# returns '4' (number of returned bytes)
ssl_socket.setblocking(0) # turn off blocking
ssl_socket.recv(4096)
# error: ssl.SSLWantReadError: The operation did not complete (read) (_ssl.c:1960)
을 그리고, 그냥 것 다루는 법. 나는 그것이 반환 된 데이터의 크기와 관련이 있다는 것을 알기에 충분한 연구를 해왔으나, 나는 ssl_socket.send()
을 호출하면서 4 바이트의 반환 값을 얻고 있는데, 그래서 내가 무엇을 놓치고 있는지 확실하지 않다. 출력으로
#!/usr/bin/env perl
use IO::Socket::INET;
use IO::Socket::SSL;
# auto-flush on socket
$| = 1;
# create a connecting socket
my $socket = new IO::Socket::SSL (
PeerHost => 'hostname',
PeerPort => '12345',
Proto => 'tcp',
SSL_cert_file => $ENV{'HOME'} . '/path/to/client.pem',
SSL_key_file => $ENV{'HOME'} . '/path/to/server.pem',
);
die "cannot connect to the server $!\n" unless $socket;
print "connected to the server\n";
# data to send to a server
my $req = 'data';
print $socket "$req\n";
my @r = (<$socket>) ;
print "@r";
$socket->close();
: 상황에 대해 다음과 같이 내가 제대로 작동 펄 클라이언트가
주 검색하기 위해 파이썬 SSL 라이브러리를 사용하는 올바른 방법은 무엇
connected to the server
{
"password": "passwd",
"username": "username"
}
내 요청 된 데이터?