t.me/atinfo_chat Telegram группа по автоматизации тестирования

Python + OpenSSL


(Александр Кабалюк) #1

Добрый день, форумчане!

Мне нужно проверить шифрования на сервере. Он использует OpenSSL шифрование. 

Вот упрощенная часть моего кода:

 

import socket
socket = socket.socket (socket.AF_INET, socket.SOCK_STREAM)
socket.connect (('IP', Port))
socket.send ('Data')
data = socket.recv(100)
print data

Всё работает, получаю ответ от сервера. 

А теперь включаю кодирование на сервере. 

Как мне модифицировать свой код, чтобы он использовал OpenSSL шифрование (ключи и сертифакат у меня есть). И что нужно установить, чтобы Пайтон начал работать с OpenSSL шифрованием?

Заранее благодарен!


(Mykhailo Poliarush) #2

я думаю вам в этом случае поможет ssl wrapper над socket (http://hg.python.org/cpython/file/2.7/Lib/ssl.py)

http://docs.python.org/library/ssl.html

внизу страницы есть примеры кода

import socket, ssl, pprint

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# require a certificate from the server
ssl_sock = ssl.wrap_socket(s,
ca_certs="/etc/ca_certs_file",
cert_reqs=ssl.CERT_REQUIRED)

ssl_sock.connect((www.verisign.com, 443))

print repr(ssl_sock.getpeername())
print ssl_sock.cipher()
print pprint.pformat(ssl_sock.getpeercert())

# Set a simple HTTP request – use httplib in actual code.
ssl_sock.write(""“GET / HTTP/1.0\r
Host: www.verisign.com\r\n\r\n”"")

# Read a chunk of data. Will not necessarily
# read all the data returned by the server.
data = ssl_sock.read()

# note that closing the SSLSocket will also close the underlying socket
ssl_sock.close()