Sto provando a stabilire una connessione socket sicura in Python e sto avendo difficoltà con il bit SSL di esso. Ho trovato alcuni esempi di codice su come stabilire una connessione con SSL, ma coinvolgono tutti i file chiave. Il server con cui sto cercando di connettersi non ha bisogno di ricevere chiavi o certificati. La mia domanda è come faccio essenzialmente a racchiudere una connessione socket Python con SSL. So per certo che il codice da utilizzare è ADH-AES256-SHA
e il protocollo è TLSv1
. Questo è quello che ho cercato:Apertura di una connessione socket SSL in Python
import socket
import ssl
# SET VARIABLES
packet, reply = "<packet>SOME_DATA</packet>", ""
HOST, PORT = 'XX.XX.XX.XX', 4434
# CREATE SOCKET
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(10)
# WRAP SOCKET ???
ssl.wrap_socket(sock, ssl_version="TLSv1", ciphers="ADH-AES256-SHA")
# CONNECT AND PRINT REPLY
sock.connect((HOST, PORT))
sock.send(packet)
print sock.recv(1280)
# CLOSE SOCKET CONNECTION
sock.close()
Quando ho eseguito questo codice, non ottengo errori, ma ottengo una risposta vuota. Quando si tenta di eseguire il debug di questo codice nella riga di comando, digitando python
nel terminale e incollando il codice riga per riga, ottengo quello che sto assumendo è un codice di stato quando si esegue sock.send(packet)
. La risposta intera che ottengo è 26
. Se qualcuno sa cosa significa, o può aiutare in ogni caso sarebbe molto apprezzato. Grazie in anticipo!
Ho ricevuto questo errore: 'ssl.SSLError: [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure qualche idea? – Kostanos
Difficile da distinguere solo dall'output. Hai utilizzato lo snippet di codice sopra? In caso contrario, aprirò una nuova domanda e pubblicherò il codice che stai utilizzando :) – Raffi
[SSL: WRONG_VERSION_NUMBER] numero di versione errato (_ssl.c: 590). Su GNU/Linux (Ubuntu 16.04) –