Peter J. Holzer <[email protected]> wrote:
> On 2025-03-23 09:11, Ulli Horlacher <[email protected]> wrote:
>> Ich hab das nun so probiert:
>>
>> sock = socket.create_connection((server,port))
>> (...)
>> SSLContext = ssl.create_default_context()
>
> Du willst es den Lesern Deines Codes auch künstlich schwer machen, oder?
> Eine Variable so zu nennen wie eine Klasse der Library, die man gerade
> verwendet, ist ziemlich verwirrend.
Ich dachte, das muss so sein?
Nein, absichtlich Konfusion stiften ist nicht mein Ziel :-}
>> sock = SSLContext.wrap_socket(sock)
>>
>> Das ergibt leider die Fehlermeldung:
>>
>> File "/local/home/framstag/python/./fexit.py", line 906, in http_connect
>> sock = SSLContext.wrap_socket(sock)
>> File "/usr/lib/python3.10/ssl.py", line 513, in wrap_socket
>> return self.sslsocket_class._create(
>> File "/usr/lib/python3.10/ssl.py", line 1028, in _create
>> raise ValueError("check_hostname requires server_hostname")
>> ValueError: check_hostname requires server_hostname
>
> Dann gib den Namen halt an. wrap_socket hat einen Parameter dafür:
>
> https://docs.python.org/3/library/ssl.html#ssl.SSLContext.wrap_socket
Ahhhh, man muss den Servernamen nun doppelt angeben!
Einmal bei Erzeugung des socket und dann nochmal beim SSL wrap
Das war mir nicht klar.
Ok, so funktionierts nun:
sock = socket.create_connection((server,port))
(...)
if port == 443:
sslctx = ssl.create_default_context()
sock = sslctx.wrap_socket(sock,server_hostname=server)
Jetzt kann ich sock zur Kommunikation verwenden, egal ob HTTP oder HTTPS.
--
Ullrich Horlacher Server und Virtualisierung
Rechenzentrum TIK
Universitaet Stuttgart E-Mail: [email protected]
Allmandring 30a Tel: ++49-711-68565868
70569 Stuttgart (Germany) WWW: https://www.tik.uni-stuttgart.de/
_______________________________________________
python-de Mailingliste -- [email protected]
Zur Abmeldung von dieser Mailingliste senden Sie eine Nachricht an
[email protected]
https://mail.python.org/mailman3/lists/python-de.python.org/
Mitgliedsadresse: [email protected]