Как я мог сделать SSl Connection Server, используя имя пользователя, пароль от Python? - PullRequest
0 голосов
/ 15 ноября 2018

Здравствуйте, я хотел бы спросить, могу ли я установить соединение для извлечения некоторых данных из Tool Server.

, поэтому я делаю этот код, но мне нужно изменить его, чтобы открыть этот инструмент с именем пользователя и паролем и извлечь данные из Myсервер инструментов.

import socket
import ssl

HOST, PORT = '10.74.159.82', 31039

def handle(conn):
    conn.write(b'GET  /  HTTP/1.1\n')
    print(conn.recv() . decode())

def main():
    sock = socket.socket(socket.AF_INET) 
    context = ssl.create_default_context(ssl.Purpose.SERVER_AUTH)
    conn = context.wrap_socket(sock, server_hostname=HOST)
    try:
        conn.connect((HOST, PORT))
        handle(conn)
    finally:
        conn.close()

if __name__ == '__main__':
    main()
РЕЗУЛЬТАТ
       !! C:\Users\Admin\.PyCharmCE2018.1\config\venv\Scripts\python.exe!! C:/Users/Admin/.PyCharmCE2018.1/config/codestyles/Under_Building.py
Traceback (most recent call last):
  File "C:/Users/Admin/.PyCharmCE2018.1/config/codestyles/Under_Building.py", line 22, in <module>
    main()
  File "C:/Users/Admin/.PyCharmCE2018.1/config/codestyles/Under_Building.py", line 16, in main
    conn.connect((HOST, PORT))
  File "C:\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\ssl.py", line 1141, in connect
    self._real_connect(addr, False)
  File "C:\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\ssl.py", line 1132, in _real_connect
    self.do_handshake()
  File "C:\Users\Admin\AppData\Local\Programs\Python\Python37-32\lib\ssl.py", line 1108, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1045)
Process finished with exit code 1

Я новичок, поэтому мне нужно учиться и поддерживать

1 Ответ

0 голосов
/ 15 ноября 2018

Трудно увидеть точно, но, похоже, сервер, к которому вы подключаетесь (на https://10.74.159.82:31039) использует самоподписанный сертификат (или, возможно, его CA).

Возможно, лучше создать или купить надлежащий (не самоподписанный) сертификат, но при условии, что это тестовый сервер, это нормально.

Итак, с тем, что у вас есть, лучше всегочтобы разрешить самозаверяющие сертификаты в вашем контексте SSL (а также не проверять имя хоста - это также может привести к ошибке при использовании IP-адреса):

context = ssl.create_default_context()
context.check_hostname=False
context.verify_mode=ssl.CERT_NONE
# etc...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...