Seite 1 von 1

Problem mit SSL Socket

Verfasst: Mittwoch 15. Mai 2013, 20:23
von MH-GoL
Hallo Zusammen,
ich bin ein Pythonfrischling und Programmiere auf einem Raspberry Pi.
Ich versuche gerade mit Hilfe der Python Dokumentation eine SSL-Verbindung zum Server bwin.com aufzubauen nur leider funktioniert das nicht!

Hier der Code:

Code: Alles auswählen

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/ssl/certs/cacerts.pem",
                           cert_reqs=ssl.CERT_REQUIRED)
HOST = 'www.bwin.com'
ssl_sock.connect((HOST, 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 /de/livebets.aspx?zoneid=in10937 HTTP/1.1\r\n
"Host: """ + HOST + """\r\n
"User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:8.0) Gecko/20100101 Firefox/8.0\r\n
"Accept: text/html\r\n
"Connetion: close\r\n
"Content-Type: application/x-www-form-urlencoded\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()

print data
Es passiert erst lange garnichts und dann erscheint diese Ausgabe:

Code: Alles auswählen

Traceback (most recent call last):
  File "SSLTest.py", line 10, in <module>
    ssl_sock.connect((HOST, 443))
  File "/usr/lib/python2.7/ssl.py", line 331, in connect
    self._real_connect(addr, False)
  File "/usr/lib/python2.7/ssl.py", line 324, in _real_connect
    raise e
socket.error: [Errno 104] Connection reset by peer


------------------
(program exited with code: 1)
Press return to continue
Ich benutze dieses Zertifikat:
http://curl.haxx.se/ca/cacert.pem

Mit anderen Servern, funktioniert der Code :/
Hoffe einer von euch hat eine Idee woran es liegen könnte!

Re: Problem mit SSL Socket

Verfasst: Mittwoch 15. Mai 2013, 20:56
von nomnom
Hallo!

Ein Wunder, dass das überhaupt funktioniert. :mrgreen: Überall hast du " vor den Zeilen, außerdem sendest du \r\n\n als Zeilenumbruch und du schickst "Connetion: close". Hat es eine Bewandtnis, dass du nicht einfach urllib, urllib2 oder requests (Empfehlung) benutzt?

Code: Alles auswählen

>>> """foobar\r\n
... "baz"""
'foobar\r\n\n"baz'
>>>

Re: Problem mit SSL Socket

Verfasst: Donnerstag 16. Mai 2013, 08:16
von MH-GoL
Danke für die Korrekturen ^^ Das hat man davon wenn man eben was zusammen schmiert!
Das Programm bricht aber schon vorher ab!
Urllib und httplib hatte ich auch schon ausprobiert aber das ergibt den selben Fehler, daher wollte ich es über socket probieren!
Es wird einfach keine SSL Verbindung zu diesem Server hergestellt und ich finde keine Antwort dafür!

Re: Problem mit SSL Socket

Verfasst: Donnerstag 16. Mai 2013, 14:31
von MH-GoL
Hab es nun doch gelöst, habe das Falsche Protokol verwendet:
Mit TLSv1 funktioniert es jetzt wunderbar, damit kann ich dann auch die httplib wieder verwenden bzw. urllib mal schauen was sich als günstiger erweist!

Re: Problem mit SSL Socket

Verfasst: Donnerstag 16. Mai 2013, 15:02
von BlackJack
@MH-GoL: Weniger Arbeit dürfte `requests` machen. Ist zwar ein externes Modul, aber es hat keine weiteren Abhängigkeiten.